import Operator from "../Operator"; import TabPresenter from "../../presenters/TabPresenter"; export default class CloseTabOperator implements Operator { constructor( private readonly tabPresenter: TabPresenter, private readonly force: boolean = false, private readonly selectLeft: boolean = false ) {} async run(): Promise { const tab = await this.tabPresenter.getCurrent(); if (!this.force && tab.pinned) { return Promise.resolve(); } if (this.selectLeft && tab.index > 0) { const tabs = await this.tabPresenter.getAll(); await this.tabPresenter.select(tabs[tab.index - 1].id as number); } return this.tabPresenter.remove([tab.id as number]); } }