@assistant-ui/react
Version:
React components for AI chat.
1 lines • 3.74 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/context/providers/MessageRuntimeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, type PropsWithChildren, useEffect, useState } from \"react\";\nimport { create } from \"zustand\";\nimport { MessageContext } from \"../react/MessageContext\";\nimport type { MessageContextValue } from \"../react/MessageContext\";\nimport { makeMessageUtilsStore } from \"../stores/MessageUtils\";\nimport { ReadonlyStore, writableStore } from \"../ReadonlyStore\";\nimport { MessageRuntime } from \"../../api/MessageRuntime\";\n\nexport namespace MessageRuntimeProvider {\n export type Props = PropsWithChildren<{\n runtime: MessageRuntime;\n }>;\n}\n\nconst useMessageRuntimeStore = (runtime: MessageRuntime) => {\n const [store] = useState(() => create(() => runtime));\n\n useEffect(() => {\n writableStore(store).setState(runtime, true);\n }, [runtime, store]);\n\n return store;\n};\n\nconst useMessageStore = (runtime: MessageRuntime) => {\n const [store] = useState(() => create(() => runtime.getState()));\n useEffect(() => {\n const updateState = () =>\n writableStore(store).setState(runtime.getState(), true);\n updateState();\n return runtime.subscribe(updateState);\n }, [runtime, store]);\n\n return store;\n};\n\nconst useMessageUtilsStore = () => {\n const [store] = useState(() => makeMessageUtilsStore());\n return store;\n};\n\nconst useEditComposerStore = (\n useMessageRuntime: ReadonlyStore<MessageRuntime>,\n) => {\n const runtime = useMessageRuntime.getState().composer;\n const [store] = useState(() => create(() => runtime.getState()));\n\n useEffect(() => {\n const updateState = () => writableStore(store).setState(runtime.getState());\n updateState();\n return runtime.subscribe(updateState);\n }, [runtime, store]);\n\n return store;\n};\n\nexport const MessageRuntimeProvider: FC<MessageRuntimeProvider.Props> = ({\n runtime,\n children,\n}) => {\n const useMessageRuntime = useMessageRuntimeStore(runtime);\n const useMessage = useMessageStore(runtime);\n const useMessageUtils = useMessageUtilsStore();\n const useEditComposer = useEditComposerStore(useMessageRuntime);\n const [context] = useState<MessageContextValue>(() => {\n return { useMessageRuntime, useMessage, useMessageUtils, useEditComposer };\n });\n\n return (\n <MessageContext.Provider value={context}>\n {children}\n </MessageContext.Provider>\n );\n};\n"],"mappings":";;;AAEA,SAA0C,WAAW,gBAAgB;AACrE,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAE/B,SAAS,6BAA6B;AACtC,SAAwB,qBAAqB;AAgEzC;AAvDJ,IAAM,yBAAyB,CAAC,YAA4B;AAC1D,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,OAAO,MAAM,OAAO,CAAC;AAEpD,YAAU,MAAM;AACd,kBAAc,KAAK,EAAE,SAAS,SAAS,IAAI;AAAA,EAC7C,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO;AACT;AAEA,IAAM,kBAAkB,CAAC,YAA4B;AACnD,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,OAAO,MAAM,QAAQ,SAAS,CAAC,CAAC;AAC/D,YAAU,MAAM;AACd,UAAM,cAAc,MAClB,cAAc,KAAK,EAAE,SAAS,QAAQ,SAAS,GAAG,IAAI;AACxD,gBAAY;AACZ,WAAO,QAAQ,UAAU,WAAW;AAAA,EACtC,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO;AACT;AAEA,IAAM,uBAAuB,MAAM;AACjC,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,sBAAsB,CAAC;AACtD,SAAO;AACT;AAEA,IAAM,uBAAuB,CAC3B,sBACG;AACH,QAAM,UAAU,kBAAkB,SAAS,EAAE;AAC7C,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,OAAO,MAAM,QAAQ,SAAS,CAAC,CAAC;AAE/D,YAAU,MAAM;AACd,UAAM,cAAc,MAAM,cAAc,KAAK,EAAE,SAAS,QAAQ,SAAS,CAAC;AAC1E,gBAAY;AACZ,WAAO,QAAQ,UAAU,WAAW;AAAA,EACtC,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO;AACT;AAEO,IAAM,yBAA2D,CAAC;AAAA,EACvE;AAAA,EACA;AACF,MAAM;AACJ,QAAM,oBAAoB,uBAAuB,OAAO;AACxD,QAAM,aAAa,gBAAgB,OAAO;AAC1C,QAAM,kBAAkB,qBAAqB;AAC7C,QAAM,kBAAkB,qBAAqB,iBAAiB;AAC9D,QAAM,CAAC,OAAO,IAAI,SAA8B,MAAM;AACpD,WAAO,EAAE,mBAAmB,YAAY,iBAAiB,gBAAgB;AAAA,EAC3E,CAAC;AAED,SACE,oBAAC,eAAe,UAAf,EAAwB,OAAO,SAC7B,UACH;AAEJ;","names":[]}