@assistant-ui/react
Version: 
Typescript/React library for AI Chat
1 lines • 2.87 kB
Source Map (JSON)
{"version":3,"sources":["../../../../src/context/react/utils/createStateHookForRuntime.ts"],"sourcesContent":["import {\n  SubscribableRuntime,\n  useRuntimeStateInternal,\n} from \"./useRuntimeState\";\n\nexport function createStateHookForRuntime<TState>(\n  useRuntime: (options: {\n    optional: boolean | undefined;\n  }) => SubscribableRuntime<TState> | null,\n) {\n  // empty\n  function useStoreHook(): TState;\n\n  // selector\n  function useStoreHook<TSelected>(\n    selector: (state: TState) => TSelected,\n  ): TSelected;\n\n  // selector?\n  function useStoreHook<TSelected>(\n    selector: ((state: TState) => TSelected) | undefined,\n  ): TSelected | TState;\n\n  // optional=false\n  function useStoreHook(options: { optional?: false | undefined }): TState;\n\n  // optional?\n  function useStoreHook(options: {\n    optional?: boolean | undefined;\n  }): TState | null;\n\n  // optional=false, selector\n  function useStoreHook<TSelected>(options: {\n    optional?: false | undefined;\n    selector: (state: TState) => TSelected;\n  }): TSelected;\n\n  // optional=false, selector?\n  function useStoreHook<TSelected>(options: {\n    optional?: false | undefined;\n    selector: ((state: TState) => TSelected) | undefined;\n  }): TSelected | TState;\n\n  // optional?, selector\n  function useStoreHook<TSelected>(options: {\n    optional?: boolean | undefined;\n    selector: (state: TState) => TSelected;\n  }): TSelected | null;\n\n  // optional?, selector?\n  function useStoreHook<TSelected>(options: {\n    optional?: boolean | undefined;\n    selector: ((state: TState) => TSelected) | undefined;\n  }): TSelected | TState | null;\n\n  function useStoreHook<TSelected>(\n    param?:\n      | ((state: TState) => TSelected)\n      | {\n          optional?: boolean | undefined;\n          selector?: ((state: TState) => TSelected) | undefined;\n        },\n  ): TSelected | TState | null {\n    let optional = false;\n    let selector: ((state: TState) => TSelected) | undefined;\n\n    if (typeof param === \"function\") {\n      selector = param;\n    } else if (param) {\n      optional = !!param.optional;\n      selector = param.selector;\n    }\n\n    const store = useRuntime({ optional });\n    if (!store) return null;\n\n    // it is ok to call useRuntimeStateInternal conditionally because it will never become null if its available\n    // eslint-ignore-next-line react-hooks/rules-of-hooks\n    return useRuntimeStateInternal(store, selector);\n  }\n\n  return useStoreHook;\n}\n"],"mappings":";AAAA;AAAA,EAEE;AAAA,OACK;AAEA,SAAS,0BACd,YAGA;AA8CA,WAAS,aACP,OAM2B;AAC3B,QAAI,WAAW;AACf,QAAI;AAEJ,QAAI,OAAO,UAAU,YAAY;AAC/B,iBAAW;AAAA,IACb,WAAW,OAAO;AAChB,iBAAW,CAAC,CAAC,MAAM;AACnB,iBAAW,MAAM;AAAA,IACnB;AAEA,UAAM,QAAQ,WAAW,EAAE,SAAS,CAAC;AACrC,QAAI,CAAC,MAAO,QAAO;AAInB,WAAO,wBAAwB,OAAO,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;","names":[]}