{"version":3,"sources":["../../../src/context/stores/AssistantToolUIs.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport type { ToolCallContentPartComponent } from \"../../types/ContentPartComponentTypes\";\nimport { Unsubscribe } from \"../../types\";\n\nexport type AssistantToolUIsState = {\n  /**\n   * Get the tool UI configured for a given tool name.\n   */\n  getToolUI: (toolName: string) => ToolCallContentPartComponent | null;\n\n  /**\n   * Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.\n   */\n  setToolUI: (\n    toolName: string,\n    render: ToolCallContentPartComponent,\n  ) => Unsubscribe;\n};\n\nexport const makeAssistantToolUIsStore = () =>\n  create<AssistantToolUIsState>((set) => {\n    const renderers = new Map<string, ToolCallContentPartComponent[]>();\n\n    return Object.freeze({\n      getToolUI: (name) => {\n        const arr = renderers.get(name);\n        const last = arr?.at(-1);\n        if (last) return last;\n        return null;\n      },\n      setToolUI: (name, render) => {\n        let arr = renderers.get(name);\n        if (!arr) {\n          arr = [];\n          renderers.set(name, arr);\n        }\n        arr.push(render);\n        set({}); // notify the store listeners\n\n        return () => {\n          const index = arr.indexOf(render);\n          if (index !== -1) {\n            arr.splice(index, 1);\n          }\n          if (index === arr.length) {\n            set({}); // notify the store listeners\n          }\n        };\n      },\n    }) satisfies AssistantToolUIsState;\n  });\n"],"mappings":";AAAA,SAAS,cAAc;AAmBhB,IAAM,4BAA4B,MACvC,OAA8B,CAAC,QAAQ;AACrC,QAAM,YAAY,oBAAI,IAA4C;AAElE,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,SAAS;AACnB,YAAM,MAAM,UAAU,IAAI,IAAI;AAC9B,YAAM,OAAO,KAAK,GAAG,EAAE;AACvB,UAAI,KAAM,QAAO;AACjB,aAAO;AAAA,IACT;AAAA,IACA,WAAW,CAAC,MAAM,WAAW;AAC3B,UAAI,MAAM,UAAU,IAAI,IAAI;AAC5B,UAAI,CAAC,KAAK;AACR,cAAM,CAAC;AACP,kBAAU,IAAI,MAAM,GAAG;AAAA,MACzB;AACA,UAAI,KAAK,MAAM;AACf,UAAI,CAAC,CAAC;AAEN,aAAO,MAAM;AACX,cAAM,QAAQ,IAAI,QAAQ,MAAM;AAChC,YAAI,UAAU,IAAI;AAChB,cAAI,OAAO,OAAO,CAAC;AAAA,QACrB;AACA,YAAI,UAAU,IAAI,QAAQ;AACxB,cAAI,CAAC,CAAC;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}