{"version":3,"sources":["../../../src/context/stores/ThreadViewport.tsx"],"sourcesContent":["\"use client\";\n\nimport { create } from \"zustand\";\nimport type { Unsubscribe } from \"../../types/Unsubscribe\";\n\nexport type ThreadViewportState = {\n  readonly isAtBottom: boolean;\n  readonly scrollToBottom: () => void;\n  readonly onScrollToBottom: (callback: () => void) => Unsubscribe;\n};\n\nexport const makeThreadViewportStore = () => {\n  const scrollToBottomListeners = new Set<() => void>();\n\n  return create<ThreadViewportState>(() => ({\n    isAtBottom: true,\n    scrollToBottom: () => {\n      for (const listener of scrollToBottomListeners) {\n        listener();\n      }\n    },\n    onScrollToBottom: (callback) => {\n      scrollToBottomListeners.add(callback);\n      return () => {\n        scrollToBottomListeners.delete(callback);\n      };\n    },\n  }));\n};\n"],"mappings":";;;AAEA,SAAS,cAAc;AAShB,IAAM,0BAA0B,MAAM;AAC3C,QAAM,0BAA0B,oBAAI,IAAgB;AAEpD,SAAO,OAA4B,OAAO;AAAA,IACxC,YAAY;AAAA,IACZ,gBAAgB,MAAM;AACpB,iBAAW,YAAY,yBAAyB;AAC9C,iBAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,aAAa;AAC9B,8BAAwB,IAAI,QAAQ;AACpC,aAAO,MAAM;AACX,gCAAwB,OAAO,QAAQ;AAAA,MACzC;AAAA,IACF;AAAA,EACF,EAAE;AACJ;","names":[]}