@wener/console
Version:
Base console UI toolkit
40 lines (39 loc) • 1.3 kB
JavaScript
import React, { createContext, useCallback, useContext } from 'react';
import { get, set } from '@wener/utils';
import { create as produce } from 'mutative';
import { createStore, useStore } from 'zustand';
var DefaultContextStore = createStore(function() {
return {};
});
var Context = /*#__PURE__*/ createContext(undefined);
export var ContextStoreProvider = function(param) {
var value = param.value, children = param.children;
return /*#__PURE__*/ React.createElement(Context.Provider, {
value: value
}, children);
};
function getContextStore() {
return DefaultContextStore;
}
export function useContextStore() {
var _useContext;
var store = (_useContext = useContext(Context)) !== null && _useContext !== void 0 ? _useContext : DefaultContextStore;
return {
store: store,
set: function set1(path, value) {
store.setState(produce(function(s) {
set(s, path, value, false);
}));
},
get: function get1(path) {
return get(store.getState(), path);
},
useWatch: function useWatch(path) {
return useStore(store, useCallback(function(s) {
return get(s, path);
}, [
path
]));
}
};
}