import { inject, injectable } from 'tsyringe'; import TabPresenter from '../presenters/TabPresenter'; const ZOOM_SETTINGS: number[] = [ 0.33, 0.50, 0.66, 0.75, 0.80, 0.90, 1.00, 1.10, 1.25, 1.50, 1.75, 2.00, 2.50, 3.00 ]; @injectable() export default class ZoomUseCase { constructor( @inject('TabPresenter') private tabPresenter: TabPresenter, ) { } async zoomIn(): Promise { const tab = await this.tabPresenter.getCurrent(); const tabId = tab.id as number; const current = await this.tabPresenter.getZoom(tabId); const factor = ZOOM_SETTINGS.find(f => f > current); if (factor) { return this.tabPresenter.setZoom(tabId as number, factor); } } async zoomOut(): Promise { const tab = await this.tabPresenter.getCurrent(); const tabId = tab.id as number; const current = await this.tabPresenter.getZoom(tabId); const factor = ZOOM_SETTINGS.slice(0).reverse().find(f => f < current); if (factor) { return this.tabPresenter.setZoom(tabId as number, factor); } } async zoomNutoral(): Promise { const tab = await this.tabPresenter.getCurrent(); return this.tabPresenter.setZoom(tab.id as number, 1); } }