qortex-react
Version:
React hook bridge for qortex runtime
17 lines (13 loc) • 1.29 kB
JavaScript
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]; }
});
});
;