UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

58 lines (57 loc) 1.64 kB
import { stopStopToken } from '@jbrowse/core/util/stopToken'; import { types } from '@jbrowse/mobx-state-tree'; export default function NonBlockCanvasDisplayMixin() { return types .model('NonBlockCanvasDisplayMixin', {}) .volatile(() => ({ loading: false, lastDrawnOffsetPx: undefined, lastDrawnBpPerPx: undefined, ref: null, renderingImageData: undefined, renderingStopToken: undefined, statusMessage: undefined, canvasDrawn: false, })) .views(self => ({ get drawn() { return self.lastDrawnOffsetPx !== undefined; }, get fullyDrawn() { return this.drawn && !self.loading && self.canvasDrawn; }, })) .actions(self => ({ setLastDrawnOffsetPx(n) { self.lastDrawnOffsetPx = n; }, setLastDrawnBpPerPx(n) { self.lastDrawnBpPerPx = n; }, setLoading(f) { self.loading = f; }, setRef(ref) { self.ref = ref; }, setRenderingImageData(imageData) { self.renderingImageData = imageData; }, setRenderingStopToken(token) { self.renderingStopToken = token; }, setStatusMessage(msg) { self.statusMessage = msg; }, setCanvasDrawn(drawn) { self.canvasDrawn = drawn; }, })) .actions(self => ({ beforeDestroy() { if (self.renderingStopToken) { stopStopToken(self.renderingStopToken); } }, })); }