UNPKG

@nlabs/arkhamjs-utils-react

Version:

ArkhamJS React Utilities

34 lines (33 loc) 3.66 kB
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==