@rango-dev/queue-manager-react 0.15.0 → 0.15.1-next.1
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/CHANGELOG.md +0 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/provider.d.ts +4 -3
- package/dist/provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/provider.tsx +21 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
# [0.15.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-react@0.14.0...queue-manager-react@0.15.0) (2023-08-15)
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
1
|
# [0.14.0](https://github.com/rango-exchange/rango-client/compare/queue-manager-react@0.13.0...queue-manager-react@0.14.0) (2023-08-03)
|
|
6
2
|
|
|
7
3
|
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var c=Object.defineProperty;var a=(e,t)=>c(e,"name",{value:t,configurable:!0});import
|
|
1
|
+
var c=Object.defineProperty;var a=(e,t)=>c(e,"name",{value:t,configurable:!0});import{Manager as P}from"@rango-dev/queue-manager-core";import M,{createContext as x,useContext as y,useEffect as p,useLayoutEffect as l,useMemo as S,useRef as T,useState as v}from"react";import{useReducer as g}from"react";var s={loadedFromPersistor:!1};function m(e,t){switch(t.type){case"UPDATE":return{...e,[t.name]:t.value};default:return e}}a(m,"reducer");function d(){let[e,t]=g(m,s);return{state:e,update:(n,r)=>{t({type:"UPDATE",name:n,value:r})}}}a(d,"useManagerState");var i=x({manager:void 0,state:s});function C(e){let[,t]=v({}),{state:n,update:r}=d(),u=T(e.context),o=S(()=>new P({queuesDefs:e.queuesDefs,events:{onStorageUpdate:()=>{t({})},onCreateQueue:()=>{t({})},onCreateTask:()=>{t({})},onUpdateQueue:()=>{t({})},onUpdateTask:()=>{t({})},onPersistedDataLoaded:f=>{t({}),e.onPersistedDataLoaded&&e.onPersistedDataLoaded(f),n.loadedFromPersistor||r("loadedFromPersistor",!0)},onTaskBlock:()=>{t({})},onDeleteQueue:()=>{t({})}},context:u||{},isPaused:e.isPaused}),[]);return l(()=>{u.current=e.context},[e.context]),p(()=>{typeof e.isPaused<"u"&&(e.isPaused?o.pause():o.run(),t({}))},[e.isPaused]),M.createElement(i.Provider,{value:{manager:o,state:n}},e.children)}a(C,"Provider");function D(){let e=y(i);if(!e)throw Error("useManager can only be used within the Provider component");return e}a(D,"useManager");var h=C;export{h as Provider,D as useManager};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/provider.tsx", "../src/state.ts"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": "+
|
|
6
|
-
"names": ["React", "createContext", "useContext", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "
|
|
4
|
+
"sourcesContent": ["import type { ManagerContext, ManagerState } from './types';\nimport type {\n ManagerContext as Context,\n Events,\n QueueDef,\n} from '@rango-dev/queue-manager-core';\nimport type { PropsWithChildren } from 'react';\n\nimport { Manager } from '@rango-dev/queue-manager-core';\nimport React, {\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { initState as initManagerState, useManagerState } from './state';\n\nconst ManagerCtx = createContext<{\n manager: ManagerContext;\n state: ManagerState;\n}>({\n manager: undefined,\n state: initManagerState,\n});\n\ninterface PropTypes {\n queuesDefs: QueueDef<any, any, any>[];\n context: Context;\n onPersistedDataLoaded?: Events['onPersistedDataLoaded'];\n isPaused?: boolean;\n}\n\nfunction Provider(props: PropsWithChildren<PropTypes>) {\n // TODO: this is not a proper way but i don't want to change the context interface atm.\n const [, forceRender] = useState({});\n const { state, update } = useManagerState();\n const context = useRef(props.context);\n\n const manager = useMemo<Manager>(() => {\n return new Manager({\n queuesDefs: props.queuesDefs,\n events: {\n onStorageUpdate: () => {\n forceRender({});\n },\n onCreateQueue: () => {\n forceRender({});\n },\n onCreateTask: () => {\n forceRender({});\n },\n onUpdateQueue: () => {\n forceRender({});\n },\n onUpdateTask: () => {\n forceRender({});\n },\n onPersistedDataLoaded: (manager) => {\n forceRender({});\n\n if (props.onPersistedDataLoaded) {\n props.onPersistedDataLoaded(manager);\n }\n\n /*\n * This condition will make sure, we only update the `loadedFromPersistor`.\n * But be aware `onPersistedDataLoaded` is calling after each `sync` which means can be called multiple times.\n */\n if (!state.loadedFromPersistor) {\n update('loadedFromPersistor', true);\n }\n },\n onTaskBlock: () => {\n forceRender({});\n },\n onDeleteQueue: () => {\n forceRender({});\n },\n },\n context: context || {},\n isPaused: props.isPaused,\n });\n }, []);\n\n useLayoutEffect(() => {\n context.current = props.context;\n }, [props.context]);\n\n useEffect(() => {\n if (typeof props.isPaused !== 'undefined') {\n if (props.isPaused) {\n manager.pause();\n } else {\n manager.run();\n }\n forceRender({});\n }\n }, [props.isPaused]);\n\n return (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <ManagerCtx.Provider value={{ manager, state }}>\n {props.children}\n </ManagerCtx.Provider>\n );\n}\n\nexport function useManager(): { manager: ManagerContext; state: ManagerState } {\n const context = useContext(ManagerCtx);\n if (!context) {\n throw Error('useManager can only be used within the Provider component');\n }\n return context;\n}\n\nexport default Provider;\n", "import { useReducer } from 'react';\nimport { ManagerState } from './types';\n\ntype Update<T> = (name: keyof T, value: T[keyof T]) => void;\ntype Action<T> = { type: 'UPDATE'; name: keyof T; value: T[keyof T] };\n\nexport const initState: ManagerState = {\n loadedFromPersistor: false,\n};\n\nfunction reducer(state: ManagerState, action: Action<ManagerState>) {\n switch (action.type) {\n case 'UPDATE':\n return { ...state, [action.name]: action.value };\n default:\n return state;\n }\n}\n\nexport function useManagerState(): {\n state: ManagerState;\n update: Update<ManagerState>;\n} {\n const [state, dispatch] = useReducer(reducer, initState);\n\n return {\n state,\n update: (name, value) => {\n dispatch({\n type: 'UPDATE',\n name,\n value,\n });\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "+EAQA,OAAS,WAAAA,MAAe,gCACxB,OAAOC,GACL,iBAAAC,EACA,cAAAC,EACA,aAAAC,EACA,mBAAAC,EACA,WAAAC,EACA,UAAAC,EACA,YAAAC,MACK,QCjBP,OAAS,cAAAC,MAAkB,QAMpB,IAAMC,EAA0B,CACrC,oBAAqB,EACvB,EAEA,SAASC,EAAQC,EAAqBC,EAA8B,CAClE,OAAQA,EAAO,KAAM,CACnB,IAAK,SACH,MAAO,CAAE,GAAGD,EAAO,CAACC,EAAO,IAAI,EAAGA,EAAO,KAAM,EACjD,QACE,OAAOD,CACX,CACF,CAPSE,EAAAH,EAAA,WASF,SAASI,GAGd,CACA,GAAM,CAACH,EAAOI,CAAQ,EAAIC,EAAWN,EAASD,CAAS,EAEvD,MAAO,CACL,MAAAE,EACA,OAAQ,CAACM,EAAMC,IAAU,CACvBH,EAAS,CACP,KAAM,SACN,KAAAE,EACA,MAAAC,CACF,CAAC,CACH,CACF,CACF,CAhBgBL,EAAAC,EAAA,mBDEhB,IAAMK,EAAaC,EAGhB,CACD,QAAS,OACT,MAAOC,CACT,CAAC,EASD,SAASC,EAASC,EAAqC,CAErD,GAAM,CAAC,CAAEC,CAAW,EAAIC,EAAS,CAAC,CAAC,EAC7B,CAAE,MAAAC,EAAO,OAAAC,CAAO,EAAIC,EAAgB,EACpCC,EAAUC,EAAOP,EAAM,OAAO,EAE9BQ,EAAUC,EAAiB,IACxB,IAAIC,EAAQ,CACjB,WAAYV,EAAM,WAClB,OAAQ,CACN,gBAAiB,IAAM,CACrBC,EAAY,CAAC,CAAC,CAChB,EACA,cAAe,IAAM,CACnBA,EAAY,CAAC,CAAC,CAChB,EACA,aAAc,IAAM,CAClBA,EAAY,CAAC,CAAC,CAChB,EACA,cAAe,IAAM,CACnBA,EAAY,CAAC,CAAC,CAChB,EACA,aAAc,IAAM,CAClBA,EAAY,CAAC,CAAC,CAChB,EACA,sBAAwBO,GAAY,CAClCP,EAAY,CAAC,CAAC,EAEVD,EAAM,uBACRA,EAAM,sBAAsBQ,CAAO,EAOhCL,EAAM,qBACTC,EAAO,sBAAuB,EAAI,CAEtC,EACA,YAAa,IAAM,CACjBH,EAAY,CAAC,CAAC,CAChB,EACA,cAAe,IAAM,CACnBA,EAAY,CAAC,CAAC,CAChB,CACF,EACA,QAASK,GAAW,CAAC,EACrB,SAAUN,EAAM,QAClB,CAAC,EACA,CAAC,CAAC,EAEL,OAAAW,EAAgB,IAAM,CACpBL,EAAQ,QAAUN,EAAM,OAC1B,EAAG,CAACA,EAAM,OAAO,CAAC,EAElBY,EAAU,IAAM,CACV,OAAOZ,EAAM,SAAa,MACxBA,EAAM,SACRQ,EAAQ,MAAM,EAEdA,EAAQ,IAAI,EAEdP,EAAY,CAAC,CAAC,EAElB,EAAG,CAACD,EAAM,QAAQ,CAAC,EAIjBa,EAAA,cAACjB,EAAW,SAAX,CAAoB,MAAO,CAAE,QAAAY,EAAS,MAAAL,CAAM,GAC1CH,EAAM,QACT,CAEJ,CAzESc,EAAAf,EAAA,YA2EF,SAASgB,GAA+D,CAC7E,IAAMT,EAAUU,EAAWpB,CAAU,EACrC,GAAI,CAACU,EACH,MAAM,MAAM,2DAA2D,EAEzE,OAAOA,CACT,CANgBQ,EAAAC,EAAA,cAQhB,IAAOE,EAAQlB",
|
|
6
|
+
"names": ["Manager", "React", "createContext", "useContext", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "useReducer", "initState", "reducer", "state", "action", "__name", "useManagerState", "dispatch", "useReducer", "name", "value", "ManagerCtx", "createContext", "initState", "Provider", "props", "forceRender", "useState", "state", "update", "useManagerState", "context", "useRef", "manager", "useMemo", "Manager", "useLayoutEffect", "useEffect", "React", "__name", "useManager", "useContext", "provider_default"]
|
|
7
7
|
}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ManagerContext as Context,
|
|
3
|
-
import {
|
|
1
|
+
import type { ManagerContext, ManagerState } from './types';
|
|
2
|
+
import type { ManagerContext as Context, Events, QueueDef } from '@rango-dev/queue-manager-core';
|
|
3
|
+
import type { PropsWithChildren } from 'react';
|
|
4
|
+
import React from 'react';
|
|
4
5
|
interface PropTypes {
|
|
5
6
|
queuesDefs: QueueDef<any, any, any>[];
|
|
6
7
|
context: Context;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EACV,cAAc,IAAI,OAAO,EACzB,MAAM,EACN,QAAQ,EACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,KAQN,MAAM,OAAO,CAAC;AAYf,UAAU,SAAS;IACjB,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,qBAyEpD;AAED,wBAAgB,UAAU,IAAI;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAM7E;AAED,eAAe,QAAQ,CAAC"}
|
package/package.json
CHANGED
package/src/provider.tsx
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import type { ManagerContext, ManagerState } from './types';
|
|
2
|
+
import type {
|
|
3
|
+
ManagerContext as Context,
|
|
4
|
+
Events,
|
|
5
|
+
QueueDef,
|
|
6
|
+
} from '@rango-dev/queue-manager-core';
|
|
7
|
+
import type { PropsWithChildren } from 'react';
|
|
8
|
+
|
|
9
|
+
import { Manager } from '@rango-dev/queue-manager-core';
|
|
1
10
|
import React, {
|
|
2
11
|
createContext,
|
|
3
|
-
PropsWithChildren,
|
|
4
12
|
useContext,
|
|
5
13
|
useEffect,
|
|
6
14
|
useLayoutEffect,
|
|
@@ -8,14 +16,8 @@ import React, {
|
|
|
8
16
|
useRef,
|
|
9
17
|
useState,
|
|
10
18
|
} from 'react';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Manager,
|
|
14
|
-
QueueDef,
|
|
15
|
-
Events,
|
|
16
|
-
} from '@rango-dev/queue-manager-core';
|
|
17
|
-
import { ManagerContext, ManagerState } from './types';
|
|
18
|
-
import { useManagerState, initState as initManagerState } from './state';
|
|
19
|
+
|
|
20
|
+
import { initState as initManagerState, useManagerState } from './state';
|
|
19
21
|
|
|
20
22
|
const ManagerCtx = createContext<{
|
|
21
23
|
manager: ManagerContext;
|
|
@@ -64,8 +66,10 @@ function Provider(props: PropsWithChildren<PropTypes>) {
|
|
|
64
66
|
props.onPersistedDataLoaded(manager);
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
/*
|
|
70
|
+
* This condition will make sure, we only update the `loadedFromPersistor`.
|
|
71
|
+
* But be aware `onPersistedDataLoaded` is calling after each `sync` which means can be called multiple times.
|
|
72
|
+
*/
|
|
69
73
|
if (!state.loadedFromPersistor) {
|
|
70
74
|
update('loadedFromPersistor', true);
|
|
71
75
|
}
|
|
@@ -73,6 +77,9 @@ function Provider(props: PropsWithChildren<PropTypes>) {
|
|
|
73
77
|
onTaskBlock: () => {
|
|
74
78
|
forceRender({});
|
|
75
79
|
},
|
|
80
|
+
onDeleteQueue: () => {
|
|
81
|
+
forceRender({});
|
|
82
|
+
},
|
|
76
83
|
},
|
|
77
84
|
context: context || {},
|
|
78
85
|
isPaused: props.isPaused,
|
|
@@ -95,6 +102,7 @@ function Provider(props: PropsWithChildren<PropTypes>) {
|
|
|
95
102
|
}, [props.isPaused]);
|
|
96
103
|
|
|
97
104
|
return (
|
|
105
|
+
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
|
98
106
|
<ManagerCtx.Provider value={{ manager, state }}>
|
|
99
107
|
{props.children}
|
|
100
108
|
</ManagerCtx.Provider>
|
|
@@ -103,8 +111,9 @@ function Provider(props: PropsWithChildren<PropTypes>) {
|
|
|
103
111
|
|
|
104
112
|
export function useManager(): { manager: ManagerContext; state: ManagerState } {
|
|
105
113
|
const context = useContext(ManagerCtx);
|
|
106
|
-
if (!context)
|
|
114
|
+
if (!context) {
|
|
107
115
|
throw Error('useManager can only be used within the Provider component');
|
|
116
|
+
}
|
|
108
117
|
return context;
|
|
109
118
|
}
|
|
110
119
|
|