UNPKG

qortex-react

Version:

React hook bridge for qortex runtime

17 lines (13 loc) 1.29 kB
'use strict'; var qortexCore = require('qortex-core'); var react = require('react'); function A(e,t){let r=qortexCore.serializeKey(e),u=react.useCallback(()=>qortexCore.getQueryState(e,t),[r]),n=react.useCallback(o=>qortexCore.subscribeQuery(e,o,t),[r]);return react.useSyncExternalStore(n,u)}function V(e,t){let r=qortexCore.serializeKey(e),u=react.useCallback(()=>qortexCore.getQueryData(e,t),[r]),n=react.useCallback(o=>qortexCore.subscribeQuery(e,o,t),[r]);return react.useSyncExternalStore(n,u)}function re(e,t){let r=qortexCore.serializeKey(e),u=react.useRef(),n=react.useRef(new Set),a=react.useCallback(y=>qortexCore.subscribeQuery(e,s=>{let F=u.current,i=n.current;if(i.size===0){u.current=s,y();return}let Q=!1;for(let f of i)if(F?.[f]!==s[f]){Q=!0;break}Q&&(u.current=s,y());},t),[r]),o=react.useCallback(()=>qortexCore.getQueryState(e,t),[r]),c=react.useSyncExternalStore(a,o);return react.useMemo(()=>new Proxy(c,{get(y,s){return n.current.add(s),y[s]}}),[c])} exports.useQuery = A; exports.useQueryData = V; exports.useQuerySelect = re; Object.keys(qortexCore).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return qortexCore[k]; } }); });