Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 2x 2x 1x 1x | import { action } from "mobx"
export interface SlideShowManager<SlideData> {
setSlide: (slide: SlideData) => void
}
// A "slide" is just a query string.
export class SlideShowController<SlideData> {
constructor(
slides: SlideData[] = [],
currentIndex = 0,
manager?: SlideShowManager<SlideData>
) {
this.currentIndex = currentIndex
this.slides = slides
this.manager = manager
}
private slides: SlideData[]
private currentIndex: number
private manager?: SlideShowManager<SlideData>
get isEmpty() {
return this.slides.length === 0
}
@action.bound private playIndexCommand(index: number) {
const slides = this.slides
index = index >= slides.length ? index - slides.length : index
index = index < 0 ? slides.length + index : index
const slide = slides[index]
if (this.manager) this.manager.setSlide(slide)
}
@action.bound playNext() {
this.playIndexCommand(++this.currentIndex)
}
@action.bound playPrevious() {
this.playIndexCommand(--this.currentIndex)
}
}
|