@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
58 lines (57 loc) • 1.64 kB
JavaScript
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);
}
},
}));
}