@nlabs/arkhamjs-utils-react
Version:
ArkhamJS React Utilities
34 lines (33 loc) • 3.66 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
/**
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
*/ import { isEqual } from '@nlabs/utils/checks/isEqual';
import { useEffect, useRef, useState } from 'react';
import { FluxContext } from './FluxContext.js';
export const FluxProvider = ({ children, flux })=>{
const [state, setState] = useState(flux.getState());
const ref = useRef(state);
useEffect(()=>{
const updateState = (newState)=>{
if (!isEqual(newState, ref.current)) {
ref.current = newState;
setState(newState);
}
};
flux.addListener('arkhamjs', updateState);
return ()=>{
flux.removeListener('arkhamjs', updateState);
};
}, [
flux
]);
return /*#__PURE__*/ _jsx(FluxContext.Provider, {
value: {
flux,
state
},
children: children
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXV0aWxzLXJlYWN0L3NyYy9GbHV4UHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnQG5sYWJzL3V0aWxzL2NoZWNrcy9pc0VxdWFsJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgRmx1eENvbnRleHQgfSBmcm9tICcuL0ZsdXhDb250ZXh0LmpzJztcblxuaW1wb3J0IHR5cGUgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgRmx1eFByb3ZpZGVyUHJvcHMgfSBmcm9tICcuL0ZsdXhQcm92aWRlci50eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBGbHV4UHJvdmlkZXI6IEZDPEZsdXhQcm92aWRlclByb3BzPiA9ICh7Y2hpbGRyZW4sIGZsdXh9KSA9PiB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoZmx1eC5nZXRTdGF0ZSgpKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKHN0YXRlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZVN0YXRlID0gKG5ld1N0YXRlOiBhbnkpID0+IHtcbiAgICAgIGlmKCFpc0VxdWFsKG5ld1N0YXRlLCByZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBuZXdTdGF0ZTtcbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgZmx1eC5hZGRMaXN0ZW5lcignYXJraGFtanMnLCB1cGRhdGVTdGF0ZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZmx1eC5yZW1vdmVMaXN0ZW5lcignYXJraGFtanMnLCB1cGRhdGVTdGF0ZSk7XG4gICAgfTtcbiAgfSwgW2ZsdXhdKTtcblxuICByZXR1cm4gPEZsdXhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7Zmx1eCwgc3RhdGV9fT57Y2hpbGRyZW59PC9GbHV4Q29udGV4dC5Qcm92aWRlcj47XG59O1xuIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkZsdXhDb250ZXh0IiwiRmx1eFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJmbHV4Iiwic3RhdGUiLCJzZXRTdGF0ZSIsImdldFN0YXRlIiwicmVmIiwidXBkYXRlU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnQiLCJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Q0FHQyxHQUNELFNBQVNBLE9BQU8sUUFBUSw4QkFBOEI7QUFDdEQsU0FBU0MsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxRQUFRO0FBRXBELFNBQVNDLFdBQVcsUUFBUSxtQkFBbUI7QUFLL0MsT0FBTyxNQUFNQyxlQUFzQyxDQUFDLEVBQUNDLFFBQVEsRUFBRUMsSUFBSSxFQUFDO0lBQ2xFLE1BQU0sQ0FBQ0MsT0FBT0MsU0FBUyxHQUFHTixTQUFTSSxLQUFLRyxRQUFRO0lBQ2hELE1BQU1DLE1BQU1ULE9BQU9NO0lBRW5CUCxVQUFVO1FBQ1IsTUFBTVcsY0FBYyxDQUFDQztZQUNuQixJQUFHLENBQUNiLFFBQVFhLFVBQVVGLElBQUlHLE9BQU8sR0FBRztnQkFDbENILElBQUlHLE9BQU8sR0FBR0Q7Z0JBQ2RKLFNBQVNJO1lBQ1g7UUFDRjtRQUNBTixLQUFLUSxXQUFXLENBQUMsWUFBWUg7UUFFN0IsT0FBTztZQUNMTCxLQUFLUyxjQUFjLENBQUMsWUFBWUo7UUFDbEM7SUFDRixHQUFHO1FBQUNMO0tBQUs7SUFFVCxxQkFBTyxLQUFDSCxZQUFZYSxRQUFRO1FBQUNDLE9BQU87WUFBQ1g7WUFBTUM7UUFBSztrQkFBSUY7O0FBQ3RELEVBQUUifQ==