{"version":3,"sources":["../../src/api/ThreadListItemRuntime.ts"],"sourcesContent":["import { Unsubscribe } from \"../types\";\nimport { ThreadListItemRuntimePath } from \"./RuntimePathTypes\";\nimport { SubscribableWithState } from \"./subscribable/Subscribable\";\nimport { ThreadListRuntimeCoreBinding } from \"./ThreadListRuntime\";\n\nexport type ThreadListItemEventType = \"switched-to\" | \"switched-away\";\n\nexport type ThreadListItemState = {\n  readonly isMain: boolean;\n\n  readonly id: string;\n  readonly remoteId: string | undefined;\n  readonly externalId: string | undefined;\n\n  /**\n   * @deprecated This field was renamed to `id`. This field will be removed in 0.8.0.\n   */\n  readonly threadId: string;\n\n  readonly status: \"archived\" | \"regular\" | \"new\" | \"deleted\";\n  readonly title?: string | undefined;\n};\n\nexport type ThreadListItemRuntime = {\n  readonly path: ThreadListItemRuntimePath;\n  getState(): ThreadListItemState;\n\n  initialize(): Promise<{ remoteId: string; externalId: string | undefined }>;\n  generateTitle(): Promise<void>;\n\n  switchTo(): Promise<void>;\n  rename(newTitle: string): Promise<void>;\n  archive(): Promise<void>;\n  unarchive(): Promise<void>;\n  delete(): Promise<void>;\n\n  subscribe(callback: () => void): Unsubscribe;\n\n  unstable_on(\n    event: ThreadListItemEventType,\n    callback: () => void,\n  ): Unsubscribe;\n};\n\nexport type ThreadListItemStateBinding = SubscribableWithState<\n  ThreadListItemState,\n  ThreadListItemRuntimePath\n>;\n\nexport class ThreadListItemRuntimeImpl implements ThreadListItemRuntime {\n  public get path() {\n    return this._core.path;\n  }\n\n  constructor(\n    private _core: ThreadListItemStateBinding,\n    private _threadListBinding: ThreadListRuntimeCoreBinding,\n  ) {}\n\n  protected __internal_bindMethods() {\n    this.switchTo = this.switchTo.bind(this);\n    this.rename = this.rename.bind(this);\n    this.archive = this.archive.bind(this);\n    this.unarchive = this.unarchive.bind(this);\n    this.delete = this.delete.bind(this);\n    this.initialize = this.initialize.bind(this);\n    this.generateTitle = this.generateTitle.bind(this);\n    this.subscribe = this.subscribe.bind(this);\n    this.unstable_on = this.unstable_on.bind(this);\n    this.getState = this.getState.bind(this);\n  }\n\n  public getState(): ThreadListItemState {\n    return this._core.getState();\n  }\n\n  public switchTo(): Promise<void> {\n    const state = this._core.getState();\n    return this._threadListBinding.switchToThread(state.id);\n  }\n\n  public rename(newTitle: string): Promise<void> {\n    const state = this._core.getState();\n\n    return this._threadListBinding.rename(state.id, newTitle);\n  }\n\n  public archive(): Promise<void> {\n    const state = this._core.getState();\n\n    return this._threadListBinding.archive(state.id);\n  }\n\n  public unarchive(): Promise<void> {\n    const state = this._core.getState();\n\n    return this._threadListBinding.unarchive(state.id);\n  }\n\n  public delete(): Promise<void> {\n    const state = this._core.getState();\n\n    return this._threadListBinding.delete(state.id);\n  }\n\n  public initialize(): Promise<{\n    remoteId: string;\n    externalId: string | undefined;\n  }> {\n    const state = this._core.getState();\n    return this._threadListBinding.initialize(state.id);\n  }\n\n  public generateTitle(): Promise<void> {\n    const state = this._core.getState();\n    return this._threadListBinding.generateTitle(state.id);\n  }\n\n  public unstable_on(event: ThreadListItemEventType, callback: () => void) {\n    let prevIsMain = this._core.getState().isMain;\n    return this.subscribe(() => {\n      const newIsMain = this._core.getState().isMain;\n      if (prevIsMain === newIsMain) return;\n      prevIsMain = newIsMain;\n\n      if (event === \"switched-to\" && !newIsMain) return;\n      if (event === \"switched-away\" && newIsMain) return;\n      callback();\n    });\n  }\n\n  public subscribe(callback: () => void): Unsubscribe {\n    return this._core.subscribe(callback);\n  }\n}\n"],"mappings":";AAiDO,IAAM,4BAAN,MAAiE;AAAA,EAKtE,YACU,OACA,oBACR;AAFQ;AACA;AAAA,EACP;AAAA,EAPH,IAAW,OAAO;AAChB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAOU,yBAAyB;AACjC,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AACvC,SAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,SAAK,UAAU,KAAK,QAAQ,KAAK,IAAI;AACrC,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AACzC,SAAK,SAAS,KAAK,OAAO,KAAK,IAAI;AACnC,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAC3C,SAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AACjD,SAAK,YAAY,KAAK,UAAU,KAAK,IAAI;AACzC,SAAK,cAAc,KAAK,YAAY,KAAK,IAAI;AAC7C,SAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AAAA,EACzC;AAAA,EAEO,WAAgC;AACrC,WAAO,KAAK,MAAM,SAAS;AAAA,EAC7B;AAAA,EAEO,WAA0B;AAC/B,UAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,WAAO,KAAK,mBAAmB,eAAe,MAAM,EAAE;AAAA,EACxD;AAAA,EAEO,OAAO,UAAiC;AAC7C,UAAM,QAAQ,KAAK,MAAM,SAAS;AAElC,WAAO,KAAK,mBAAmB,OAAO,MAAM,IAAI,QAAQ;AAAA,EAC1D;AAAA,EAEO,UAAyB;AAC9B,UAAM,QAAQ,KAAK,MAAM,SAAS;AAElC,WAAO,KAAK,mBAAmB,QAAQ,MAAM,EAAE;AAAA,EACjD;AAAA,EAEO,YAA2B;AAChC,UAAM,QAAQ,KAAK,MAAM,SAAS;AAElC,WAAO,KAAK,mBAAmB,UAAU,MAAM,EAAE;AAAA,EACnD;AAAA,EAEO,SAAwB;AAC7B,UAAM,QAAQ,KAAK,MAAM,SAAS;AAElC,WAAO,KAAK,mBAAmB,OAAO,MAAM,EAAE;AAAA,EAChD;AAAA,EAEO,aAGJ;AACD,UAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,WAAO,KAAK,mBAAmB,WAAW,MAAM,EAAE;AAAA,EACpD;AAAA,EAEO,gBAA+B;AACpC,UAAM,QAAQ,KAAK,MAAM,SAAS;AAClC,WAAO,KAAK,mBAAmB,cAAc,MAAM,EAAE;AAAA,EACvD;AAAA,EAEO,YAAY,OAAgC,UAAsB;AACvE,QAAI,aAAa,KAAK,MAAM,SAAS,EAAE;AACvC,WAAO,KAAK,UAAU,MAAM;AAC1B,YAAM,YAAY,KAAK,MAAM,SAAS,EAAE;AACxC,UAAI,eAAe,UAAW;AAC9B,mBAAa;AAEb,UAAI,UAAU,iBAAiB,CAAC,UAAW;AAC3C,UAAI,UAAU,mBAAmB,UAAW;AAC5C,eAAS;AAAA,IACX,CAAC;AAAA,EACH;AAAA,EAEO,UAAU,UAAmC;AAClD,WAAO,KAAK,MAAM,UAAU,QAAQ;AAAA,EACtC;AACF;","names":[]}