UNPKG

@roadiehq/backstage-plugin-github-insights

Version:
66 lines (63 loc) 1.5 kB
import create from 'zustand'; import produce from 'immer'; class DefaultDict { constructor(defaultVal) { return new Proxy( {}, { get: (target, name) => name in target ? target[name] : defaultVal } ); } } const initialState = { etag: "", data: [] }; const createLicenseSlice = (set) => ({ license: { state: initialState, setState: (next) => set( produce((draft) => { draft.license.state = next; }) ) } }); const createBranchesSlice = (set) => ({ branches: { state: initialState, setState: (next) => set( produce((draft) => { draft.branches.state = next; }) ) } }); const createContributorSlice = (set) => ({ contributor: { state: new DefaultDict(initialState), setState: (key, value) => set((prev) => { prev.contributor.state[key] = value; return produce((draft) => { draft.contributor.state = prev.contributor.state; }); }) } }); const createRequestSlice = (set) => ({ request: { state: new DefaultDict(initialState), setState: (key, value) => set((prev) => { prev.request.state[key] = value; return produce((draft) => { draft.requesst.state = prev.request.state; }); }) } }); const useStore = create((set) => ({ ...createLicenseSlice(set), ...createContributorSlice(set), ...createBranchesSlice(set), ...createRequestSlice(set) })); export { useStore }; //# sourceMappingURL=store.esm.js.map