UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

43 lines (34 loc) 1.57 kB
import { subscribeWithSelector } from 'zustand/middleware'; import { shallow } from 'zustand/shallow'; import { createWithEqualityFn } from 'zustand/traditional'; import { StateCreator } from 'zustand/vanilla'; import { createDevtools } from '../middleware/createDevtools'; import { ImageStoreState, initialState } from './initialState'; import { CreateImageAction, createCreateImageSlice } from './slices/createImage/action'; import { GenerationBatchAction, createGenerationBatchSlice } from './slices/generationBatch/action'; import { GenerationConfigAction, createGenerationConfigSlice, } from './slices/generationConfig/action'; import { GenerationTopicAction, createGenerationTopicSlice } from './slices/generationTopic/action'; // =============== aggregate createStoreFn ============ // export interface ImageStore extends GenerationConfigAction, GenerationTopicAction, GenerationBatchAction, CreateImageAction, ImageStoreState {} const createStore: StateCreator<ImageStore, [['zustand/devtools', never]]> = (...parameters) => ({ ...initialState, ...createGenerationConfigSlice(...parameters), ...createGenerationTopicSlice(...parameters), ...createGenerationBatchSlice(...parameters), ...createCreateImageSlice(...parameters), }); // =============== implement useStore ============ // const devtools = createDevtools('image'); export const useImageStore = createWithEqualityFn<ImageStore>()( subscribeWithSelector(devtools(createStore)), shallow, ); export const getImageStoreState = () => useImageStore.getState();