genoverse 4.0.6 → 4.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunkgenoverse=self.webpackChunkgenoverse||[]).push([[804],{1804:function(t,e,a){a.r(e);var n=a(4394);e.default={controlPanel:function(t){var e=this.jQuery;this.controls=[{name:"Scroll left and right by pressing and holding these buttons",buttons:[{name:"Scroll left",icon:'<i class="fas fa-chevron-left"></i>',class:"gv-scroll-left"},{name:"Scroll right",icon:'<i class="fas fa-chevron-right"></i>',class:"gv-scroll-right"}],init:function(t){var a=e(this);a.find(".gv-scroll-left, .gv-scroll-right").on({mousedown:function(){t.startDragScroll()},mouseup:function(){t.stopDragScroll()}}),a.find(".gv-scroll-left").mousehold(50,(function(){t.move(t.scrollDelta)})),a.find(".gv-scroll-right").mousehold(50,(function(){t.move(-t.scrollDelta)}))}},{name:"Zoom-in and zoom-out",buttons:[{name:"Zoom in",icon:'<i class="fas fa-search-plus"></i>',class:"gv-zoom-in",action:function(t){t.zoomIn()}},{name:"Zoom out",icon:'<i class="fas fa-search-minus"></i>',class:"gv-zoom-out",action:function(t){t.zoomOut()}}]},{name:"Toggle your mouse drag action between scroll left/right and select region",buttons:[{name:"Mouse drag action to scroll the browser left or right",icon:'<i class="fas fa-arrows-alt-h"></i>',class:"gv-drag-scroll",action:function(t){t.setDragAction("scroll"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Mouse drag action to select a region",icon:"<i></i>",class:"gv-drag-select",action:function(t){t.setDragAction("select"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}}],init:function(t){e(this).find(".gv-drag-".concat(t.dragAction)).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Toggle your mouse wheel action between zoom in/out and default page scroll",buttons:[{name:"Mouse wheel action to scroll the page up and down",icon:'<i class="fas fa-arrows-alt-v"></i>',class:"gv-wheel-off",action:function(t){t.setWheelAction("off"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Mouse wheel to zoom in and out",icon:"&#177;",class:"gv-wheel-zoom",action:function(t){t.setWheelAction("zoom"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}}],init:function(t){e(this).find(".gv-wheel-".concat(t.wheelAction)).addClass("gv-active").siblings().removeClass("gv-active")}}],this.saveable&&this.controls.push({icon:'<i class="fas fa-undo"></i>',name:"Reset tracks and configuration",action:function(t){t.resetConfig()}}),this.on({beforeInit:function(){var t=this,a=this;this.tracksLibrary=(this.tracksLibrary||this.tracks).map((function(e){return t.normaliseTrackDefinition(e)})).filter((function(t){return t.prototype.name}));var n=e('\n <table cellspacing=0 cellpadding=0 class="gv">\n <tr>\n <td class="gv-panel gv-panel-left"></td>\n <td class="gv-canvas-container"></td>\n <td class="gv-panel gv-panel-right"></td>\n </tr>\n </table>\n ').appendTo(this.container).find(".gv-panel-right");this.controlPanel=n,this.superContainer=this.container,this.container=e(".gv-canvas-container",this.container),a.controls.forEach((function(t){var n=e('<div class="gv-button-set">').attr("title",t.name).appendTo(a.superContainer.find(".gv-panel-right"));(t.buttons||[t]).forEach((function(i){var s=e("<button>".concat(i.icon,"</button>")).addClass(i.class).attr("title",i.name).appendTo(n);i.action&&s.on("click",(function(){i.action.call(s[0],a)})),i.init&&i!==t&&i.init.call(s[0],a)})),t.init&&t.init.call(n,a)})),this.superContainer.width(this.width),e(document).on("keydown",(function(t){27===t.keyCode&&(n.find("button.gv-drag-select").hasClass("gv-active")&&n.find("button.gv-drag-scroll").trigger("click"),e(".gv-menu .gv-close").trigger("click"))}))},afterInit:function(){var a=this,n=e('<button class="gv-tracks-library-button" title="Tracks menu"><i class="fas fa-bars"></i> Tracks</button>').on("click",(function(){var n=this,i=function t(e,a){var n,i;return null!==(n=e.constructor)&&void 0!==n&&null!==(i=n.ancestor)&&void 0!==i&&i.prototype?t(e.constructor.ancestor.prototype,a.concat(e.constructor.ancestor.prototype.tags||[])):a};if(e(this).hasClass("gv-active"))e(".gv-menu.gv-tracks-menu .gv-close").trigger("click"),e(this).removeClass("gv-active");else{var s=e(this).data("menu");if(s)s.show();else{var o;s=a.makeMenu({"Currently enabled tracks:":"Available tracks:",'<div class="gv-current-tracks"></div>':'<input placeholder="Search"><div class="gv-available-tracks"></div>'}).addClass("gv-tracks-menu"),e("input[placeholder=Search]",s).on("keyup",(function(){var t=this.value.toLowerCase();e(".gv-tracks-library-item",s).each((function(){var a=e(this).data("track"),n=!1;a.name&&a.name.toLowerCase().indexOf(t)>=0?n=!0:i(a,[]).concat(a.tags||[]).some((function(e){return e.toLowerCase().indexOf(t)>=0}))&&(n=!0);e(this)[n?"removeClass":"addClass"]("gv-hide")})),e(".gv-tracks-library-category",s).each((function(){var t=e(this).children(".gv-tracks-library-item:not(.gv-hide)");e(this)[t.length?"removeClass":"addClass"]("gv-hide")}))})),e(".gv-close",s).on("click",(function(){e(n).removeClass("gv-active")}));var r=e(".gv-available-tracks",s),c=e(".gv-current-tracks",s).before('<div class="gv-current-tracks-instructions">Drag and drop to reorder</div>').data({reload:function(){e(this).empty().data("listTracks")()},listTracks:function(){a.tracks.filter((function(t){return t.name&&!(!1===t.removable&&t.unsortable)&&!t.parentTrack&&!t.lockToTrack})).forEach((function(t){var a=e('<div class="gv-tracks-menu-track">').append('<span class="gv-tracks-menu-track-name" title="'.concat(t.name,'">').concat(t.defaultName,"</span>")).appendTo(c).data("track",t).addClass(t.unsortable?"gv-unsortable":"");!1===t.removable?a.prepend('<i class="gv-remove-track gv-menu-button fas fa-circle">'):a.prepend(e('<i class="gv-remove-track gv-menu-button fas fa-times-circle">').on("click",(function(){t.remove()})));var n=a.find(".gv-tracks-menu-track-name").tipsy({gravity:"w",trigger:"manual"}).on("mouseenter",(function(){var t=e(this).tipsy("show").data("tipsy").$tip;t&&t.css("zIndex",1002)})).on("mouseleave",(function(){e(this).tipsy("hide")}));t.name===t.defaultName&&n.tipsy("disable")}))}}).sortable({items:"div:not(.gv-unsortable)",cursor:"move",axis:"y",handle:"span",update:a.updateTrackOrder.bind(a),start:function(){c.find(".gv-tracks-menu-track-name").each((function(){e(this).tipsy("hide").tipsy("disable")}))},stop:function(){c.find(".gv-tracks-menu-track-name").each((function(){e(this).tipsy("enable")}))}});if(c.data("listTracks")(),a.saveable&&e('<div class="gv-tracks-menu-reset gv-menu-button"><i class="fas fa-undo"></i> Reset tracks and configuration</div>').insertAfter(c).on("click",(function(t){t.preventDefault(),a.resetConfig()})),null!==(o=a.tracksLibrary)&&void 0!==o&&o.length){var l=a.tracksLibrary.filter((function(t){return t.prototype.name&&!1!==t.prototype.removable})).reduce((function(t,e){var a=e.prototype.category||"";return t[a]=t[a]||[],t[a].push([e.prototype.name.toLowerCase(),e]),t}),{}),d=((null==t?void 0:t.tracksLibraryCategoryOrder)||[]).reduce((function(t,e,a){return Object.assign(t,(s=a+1,(i=e)in(n={})?Object.defineProperty(n,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[i]=s,n));var n,i,s}),{});Object.keys(l).sort((function(t,e){return Boolean(e)-Boolean(t)||d[t]-d[e]||t.localeCompare(e)})).forEach((function(t,n,i){var s=i.length>1?e('<div class="gv-tracks-library-category">').append(e('<div class="gv-tracks-library-category-header">').html(t||"Other")).appendTo(r):r;l[t].sort((function(t,e){return t[0].localeCompare(e[0])})).forEach((function(t){var n=t[1];e('<div class="gv-tracks-library-item">').append(e('<i class="gv-add-track gv-menu-button fas fa-plus-circle">').on("click",(function(){a.trackIds=a.trackIds||{},a.trackIds[n.prototype.id]=a.trackIds[n.prototype.id]||1,a.addTrack(n.extend({id:"".concat(n.prototype.id).concat(a.tracksById[n.prototype.id]?a.trackIds[n.prototype.id]++:"")}))}))).append("<span>".concat(n.prototype.name,"</span>")).appendTo(s).data("track",n.prototype)}))}))}s.css({left:"50%",marginLeft:s.width()/-2}),e(this).data("menu",s)}e(this).addClass("gv-active")}}));this.labelContainer.prepend(e('<li class="gv-unsortable">').append(e('<div class="gv-button-set" title="Tracks menu">').append(n)))},afterAddDomElements:function(){this.wrapper.after('<div class="gv-powered-by">Powered by <a target="_blank" href="https://wtsi-web.github.io/Genoverse/">Genoverse</a></div>'),this.superContainer.find(".gv-panel-left").append(this.labelContainer)},"afterAddTracks afterRemoveTracks":function(){var t=this.superContainer.find(".gv-tracks-menu .gv-current-tracks");t.length&&t.data("reload").call(t)}}),this.on({afterSetName:function(t){var a=this.track;if(null!=a&&a.browser){var n=a.browser.superContainer.find(".gv-tracks-library-button").data("menu");n&&n.find(".gv-tracks-menu-track").filter((function(){return e(this).data("track")===a})).children(".gv-tracks-menu-track-name").attr("title",t).each((function(){t===a.defaultName?e(this).tipsy("hide").tipsy("disable"):e(this).tipsy("enable")}))}}},"tracks")},requires:n.default}},4394:function(t,e,a){a.r(e);var n=a(5337);e.default={karyotype:function(t){var e=this.jQuery;function a(){var a=e('<div class="gv-chromosome">'),i=e('<div class="gv-karyotype-container">').html(a).insertBefore(this.wrapper),s=this.assembly||this.genomeName,o="".concat(t.showAssembly&&s?"".concat(s,": "):"","Chr ").concat(this.chr);t.showAssembly&&s&&i.addClass("gv-show-assembly");var r=e('<div class="gv-chromosome"><ul class="gv-label-container"><li><span class="gv-name">'.concat(o,"</span></li></ul></div>")).appendTo(i),c=!1===t.karyotypeLabel?0:r.find(".gv-name").outerWidth(!0)+10;r.remove(),this.karyotype=new Genoverse({parent:this,container:a,width:a.width(),genome:this.genome,chr:this.chr,start:1,end:this.chromosomeSize,isStatic:!0,tracks:[n.default.extend({name:o,height:20,featureHeight:20,border:!1,legend:!1,unsortable:!0,click:function(t){var a=this.container.parent().offset().left,n=t.pageX-a,i=this.featurePositions.search({x:n,y:1,w:1,h:1})[0];if(i)if("mouseup"===t.type)this.browser.parent.isStatic||this.browser.parent.moveTo(i.chr,i.start,i.end,!0);else if(this.hoverFeature!==i&&!this.browser.hideTooltip){if(this.container.tipsy("hide"),i.label){var s=a+i.position[this.scale].start+i.position[this.scale].width/2;this.container.attr("title",i.label[0]).tipsy({trigger:"manual",container:"body"}).tipsy("show").data("tipsy").$tip.css("left",(function(){return s-e(this).width()/2}))}this.hoverFeature=i}},addUserEventHandlers:function(){var t=this;this.base(),this.container.on({mousemove:function(e){t.click(e)},mouseout:function(e){if(t.browser.viewPoint.is(e.relatedTarget)||t.browser.viewPoint.find(e.relatedTarget).length)return!0;t.container.tipsy("hide"),t.hoverFeature=!1}},".gv-image-container"),this.container.on("mousewheel",".gv-image-container, .gv-selector",(function(t){t.stopPropagation()}))},afterSetName:function(){this.label.css("lineHeight","".concat(this.label.height(),"px"))}})],addUserEventHandlers:function(){},afterInit:function(){this.updatePosition(),this.viewPoint.fadeIn()},afterAddTracks:function(){this.track=this.tracks[0]},afterAddDomElements:function(){var a=this,n=this.parent;function s(){a.hideTooltip=!0,a.track.prop("container").tipsy("hide")}function o(t,i){a.hideTooltip=!1;var s=a.chromosomeSize/a.width,o="resizestop"===t.type?e(this).data("ui-resizable").axis:void 0,r="e"===o?n.start:Math.max(Math.floor(i.position.left*s),1),c="w"===o?n.end:"dragstop"===t.type?r+n.length-1:Math.floor(i.helper.outerWidth(!0)*s)+r;r===n.start&&c===n.end||n.moveTo(a.chr,r,c,!0,"dragstop"===t.type)}!1===t.karyotypeLabel?(this.labelContainer.remove(),this.labelContainer=e(),i.addClass("gv-no-label")):this.labelContainer.width(c),this.viewPoint=e('<div class="gv-karyotype-viewpoint-wrapper"><div class="gv-karyotype-viewpoint"></div></div>').appendTo(i).css({left:c,width:this.width-c}).children().on({mousemove:function(t){a.track.controller.click(t)},mouseout:function(t){var n=e(t.relatedTarget);if(a.viewPoint.is(n)||a.viewPoint.find(n).length||"IMG"===n.prop("nodeName")&&n.parent().is(a.track.prop("imgContainers")[0]))return!0;a.track.prop("container").tipsy("hide"),a.track.prop("hoverFeature",!1)}}),n.isStatic||this.viewPoint.draggable({axis:"x",containment:this.wrapper,start:s,stop:o}).resizable({handles:"e, w",containment:"parent",start:s,stop:o,resize:function(t,e){e.element.css("left",Math.max(0,e.position.left)),e.position.left>0?e.element.width(Math.min(e.size.width,e.element.parent().width()-e.position.left)):e.element.width(e.size.width+e.position.left)}})},updatePosition:function(){var t=this.parent.start*this.scale,e=this.parent.end*this.scale-t;this.viewPoint.css({left:t,width:e})}}),!0!==this.loadedPlugins.controlPanel&&e('<li class="gv-unsortable">').height((function(t,e){return e+i.height()})).prependTo(this.labelContainer)}function i(){var t=this.karyotype.container.parent();this.karyotype.destroy(),t.remove(),a.call(this)}this.on({afterInit:a,afterSetRange:function(){this.karyotype&&this.karyotype.updatePosition()},afterSetWidth:i,afterMoveTo:function(t){this.karyotype&&this.karyotype.chr!==t&&i.call(this)}})}}}}]);
1
+ "use strict";(self.webpackChunkgenoverse=self.webpackChunkgenoverse||[]).push([[804],{1804:function(t,e,a){a.r(e);var n=a(4394);e.default={controlPanel:function(t){var e=this.jQuery;this.controls=[{name:"Scroll left and right by pressing and holding these buttons",buttons:[{name:"Scroll left",icon:'<i class="fas fa-chevron-left"></i>',class:"gv-scroll-left"},{name:"Scroll right",icon:'<i class="fas fa-chevron-right"></i>',class:"gv-scroll-right"}],init:function(t){var a=e(this);a.find(".gv-scroll-left, .gv-scroll-right").on({mousedown:function(){t.startDragScroll()},mouseup:function(){t.stopDragScroll()}}),a.find(".gv-scroll-left").mousehold(50,(function(){t.move(t.scrollDelta)})),a.find(".gv-scroll-right").mousehold(50,(function(){t.move(-t.scrollDelta)}))}},{name:"Zoom-in and zoom-out",buttons:[{name:"Zoom in",icon:'<i class="fas fa-search-plus"></i>',class:"gv-zoom-in",action:function(t){t.zoomIn()}},{name:"Zoom out",icon:'<i class="fas fa-search-minus"></i>',class:"gv-zoom-out",action:function(t){t.zoomOut()}}]},{name:"Toggle your mouse drag action between scroll left/right and select region",buttons:[{name:"Mouse drag action to scroll the browser left or right",icon:'<i class="fas fa-arrows-alt-h"></i>',class:"gv-drag-scroll",action:function(t){t.setDragAction("scroll"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Mouse drag action to select a region",icon:"<i></i>",class:"gv-drag-select",action:function(t){t.setDragAction("select"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}}],init:function(t){e(this).find(".gv-drag-".concat(t.dragAction)).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Toggle your mouse wheel action between zoom in/out and default page scroll",buttons:[{name:"Mouse wheel action to scroll the page up and down",icon:'<i class="fas fa-arrows-alt-v"></i>',class:"gv-wheel-off",action:function(t){t.setWheelAction("off"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}},{name:"Mouse wheel to zoom in and out",icon:"&#177;",class:"gv-wheel-zoom",action:function(t){t.setWheelAction("zoom"),e(this).addClass("gv-active").siblings().removeClass("gv-active")}}],init:function(t){e(this).find(".gv-wheel-".concat(t.wheelAction)).addClass("gv-active").siblings().removeClass("gv-active")}}],this.saveable&&this.controls.push({icon:'<i class="fas fa-undo"></i>',name:"Reset tracks and configuration",action:function(t){t.resetConfig()}}),this.on({beforeInit:function(){var t=this,a=this;this.tracksLibrary=(this.tracksLibrary||this.tracks).map((function(e){return t.normaliseTrackDefinition(e)})).filter((function(t){return t.prototype.name}));var n=e('\n <table cellspacing=0 cellpadding=0 class="gv">\n <tr>\n <td class="gv-panel gv-panel-left"></td>\n <td class="gv-canvas-container"></td>\n <td class="gv-panel gv-panel-right"></td>\n </tr>\n </table>\n ').appendTo(this.container).find(".gv-panel-right");this.controlPanel=n,this.superContainer=this.container,this.container=e(".gv-canvas-container",this.container),a.controls.forEach((function(t){var n=e('<div class="gv-button-set">').attr("title",t.name).appendTo(a.superContainer.find(".gv-panel-right"));(t.buttons||[t]).forEach((function(i){var s=e("<button>".concat(i.icon,"</button>")).addClass(i.class).attr("title",i.name).appendTo(n);i.action&&s.on("click",(function(){i.action.call(s[0],a)})),i.init&&i!==t&&i.init.call(s[0],a)})),t.init&&t.init.call(n,a)})),this.superContainer.width(this.width),e(document).on("keydown",(function(t){27===t.keyCode&&(n.find("button.gv-drag-select").hasClass("gv-active")&&n.find("button.gv-drag-scroll").trigger("click"),e(".gv-menu .gv-close").trigger("click"))}))},afterInit:function(){var a=this,n=e('<button class="gv-tracks-library-button" title="Tracks menu"><i class="fas fa-bars"></i> Tracks</button>').on("click",(function(){var n=this,i=function t(e,a){var n,i;return null!==(n=e.constructor)&&void 0!==n&&null!==(i=n.ancestor)&&void 0!==i&&i.prototype?t(e.constructor.ancestor.prototype,a.concat(e.constructor.ancestor.prototype.tags||[])):a};if(e(this).hasClass("gv-active"))e(".gv-menu.gv-tracks-menu .gv-close").trigger("click"),e(this).removeClass("gv-active");else{var s=e(this).data("menu");if(s)s.show();else{var o;s=a.makeMenu({"Currently enabled tracks:":"Available tracks:",'<div class="gv-current-tracks"></div>':'<input placeholder="Search"><div class="gv-available-tracks"></div>'}).addClass("gv-tracks-menu"),e("input[placeholder=Search]",s).on("keyup",(function(){var t=this.value.toLowerCase();e(".gv-tracks-library-item",s).each((function(){var a=e(this).data("track"),n=!1;a.name&&a.name.toLowerCase().indexOf(t)>=0?n=!0:i(a,[]).concat(a.tags||[]).some((function(e){return e.toLowerCase().indexOf(t)>=0}))&&(n=!0);e(this)[n?"removeClass":"addClass"]("gv-hide")})),e(".gv-tracks-library-category",s).each((function(){var t=e(this).children(".gv-tracks-library-item:not(.gv-hide)");e(this)[t.length?"removeClass":"addClass"]("gv-hide")}))})),e(".gv-close",s).on("click",(function(){e(n).removeClass("gv-active")}));var r=e(".gv-available-tracks",s),c=e(".gv-current-tracks",s).before('<div class="gv-current-tracks-instructions">Drag and drop to reorder</div>').data({reload:function(){e(this).empty().data("listTracks")()},listTracks:function(){a.tracks.filter((function(t){return t.name&&!(!1===t.removable&&t.unsortable)&&!t.parentTrack&&!t.lockToTrack})).forEach((function(t){var a=e('<div class="gv-tracks-menu-track">').append('<span class="gv-tracks-menu-track-name" title="'.concat(t.name,'">').concat(t.defaultName,"</span>")).appendTo(c).data("track",t).addClass(t.unsortable?"gv-unsortable":"");!1===t.removable?a.prepend('<i class="gv-remove-track gv-menu-button fas fa-circle">'):a.prepend(e('<i class="gv-remove-track gv-menu-button fas fa-times-circle">').on("click",(function(){t.remove()})));var n=a.find(".gv-tracks-menu-track-name").tipsy({gravity:"w",trigger:"manual"}).on("mouseenter",(function(){var t=e(this).tipsy("show").data("tipsy").$tip;t&&t.css("zIndex",1002)})).on("mouseleave",(function(){e(this).tipsy("hide")}));t.name===t.defaultName&&n.tipsy("disable")}))}}).sortable({items:"div:not(.gv-unsortable)",cursor:"move",axis:"y",handle:"span",update:a.updateTrackOrder.bind(a),start:function(){c.find(".gv-tracks-menu-track-name").each((function(){e(this).tipsy("hide").tipsy("disable")}))},stop:function(){c.find(".gv-tracks-menu-track-name").each((function(){e(this).tipsy("enable")}))}});if(c.data("listTracks")(),a.saveable&&e('<div class="gv-tracks-menu-reset gv-menu-button"><i class="fas fa-undo"></i> Reset tracks and configuration</div>').insertAfter(c).on("click",(function(t){t.preventDefault(),a.resetConfig()})),null!==(o=a.tracksLibrary)&&void 0!==o&&o.length){var l=a.tracksLibrary.filter((function(t){return t.prototype.name&&!1!==t.prototype.removable})).reduce((function(t,e){var a=e.prototype.category||"";return t[a]=t[a]||[],t[a].push([e.prototype.name.toLowerCase(),e]),t}),{}),d=((null==t?void 0:t.tracksLibraryCategoryOrder)||[]).reduce((function(t,e,a){return Object.assign(t,(s=a+1,(i=e)in(n={})?Object.defineProperty(n,i,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[i]=s,n));var n,i,s}),{});Object.keys(l).sort((function(t,e){return Boolean(e)-Boolean(t)||d[t]-d[e]||t.localeCompare(e)})).forEach((function(t,n,i){var s=i.length>1?e('<div class="gv-tracks-library-category">').append(e('<div class="gv-tracks-library-category-header">').html(t||"Other")).appendTo(r):r;l[t].sort((function(t,e){return t[0].localeCompare(e[0])})).forEach((function(t){var n=t[1];e('<div class="gv-tracks-library-item">').append(e('<i class="gv-add-track gv-menu-button fas fa-plus-circle">').on("click",(function(){a.trackIds=a.trackIds||{},a.trackIds[n.prototype.id]=a.trackIds[n.prototype.id]||1,a.addTrack(n.extend({id:"".concat(n.prototype.id).concat(a.tracksById[n.prototype.id]?a.trackIds[n.prototype.id]++:"")}))}))).append("<span>".concat(n.prototype.name,"</span>")).appendTo(s).data("track",n.prototype)}))}))}s.css({left:"50%",marginLeft:s.width()/-2}),e(this).data("menu",s)}e(this).addClass("gv-active")}}));this.labelContainer.prepend(e('<li class="gv-unsortable">').append(e('<div class="gv-button-set" title="Tracks menu">').append(n)))},afterAddDomElements:function(){this.wrapper.after('<div class="gv-powered-by">Powered by <a target="_blank" href="https://wtsi-decipher-grp.github.io/Genoverse/">Genoverse</a></div>'),this.superContainer.find(".gv-panel-left").append(this.labelContainer)},"afterAddTracks afterRemoveTracks":function(){var t=this.superContainer.find(".gv-tracks-menu .gv-current-tracks");t.length&&t.data("reload").call(t)}}),this.on({afterSetName:function(t){var a=this.track;if(null!=a&&a.browser){var n=a.browser.superContainer.find(".gv-tracks-library-button").data("menu");n&&n.find(".gv-tracks-menu-track").filter((function(){return e(this).data("track")===a})).children(".gv-tracks-menu-track-name").attr("title",t).each((function(){t===a.defaultName?e(this).tipsy("hide").tipsy("disable"):e(this).tipsy("enable")}))}}},"tracks")},requires:n.default}},4394:function(t,e,a){a.r(e);var n=a(5337);e.default={karyotype:function(t){var e=this.jQuery;function a(){var a=e('<div class="gv-chromosome">'),i=e('<div class="gv-karyotype-container">').html(a).insertBefore(this.wrapper),s=this.assembly||this.genomeName,o="".concat(t.showAssembly&&s?"".concat(s,": "):"","Chr ").concat(this.chr);t.showAssembly&&s&&i.addClass("gv-show-assembly");var r=e('<div class="gv-chromosome"><ul class="gv-label-container"><li><span class="gv-name">'.concat(o,"</span></li></ul></div>")).appendTo(i),c=!1===t.karyotypeLabel?0:r.find(".gv-name").outerWidth(!0)+10;r.remove(),this.karyotype=new Genoverse({parent:this,container:a,width:a.width(),genome:this.genome,chr:this.chr,start:1,end:this.chromosomeSize,isStatic:!0,tracks:[n.default.extend({name:o,height:20,featureHeight:20,border:!1,legend:!1,unsortable:!0,click:function(t){var a=this.container.parent().offset().left,n=t.pageX-a,i=this.featurePositions.search({x:n,y:1,w:1,h:1})[0];if(i)if("mouseup"===t.type)this.browser.parent.isStatic||this.browser.parent.moveTo(i.chr,i.start,i.end,!0);else if(this.hoverFeature!==i&&!this.browser.hideTooltip){if(this.container.tipsy("hide"),i.label){var s=a+i.position[this.scale].start+i.position[this.scale].width/2;this.container.attr("title",i.label[0]).tipsy({trigger:"manual",container:"body"}).tipsy("show").data("tipsy").$tip.css("left",(function(){return s-e(this).width()/2}))}this.hoverFeature=i}},addUserEventHandlers:function(){var t=this;this.base(),this.container.on({mousemove:function(e){t.click(e)},mouseout:function(e){if(t.browser.viewPoint.is(e.relatedTarget)||t.browser.viewPoint.find(e.relatedTarget).length)return!0;t.container.tipsy("hide"),t.hoverFeature=!1}},".gv-image-container"),this.container.on("mousewheel",".gv-image-container, .gv-selector",(function(t){t.stopPropagation()}))},afterSetName:function(){this.label.css("lineHeight","".concat(this.label.height(),"px"))}})],addUserEventHandlers:function(){},afterInit:function(){this.updatePosition(),this.viewPoint.fadeIn()},afterAddTracks:function(){this.track=this.tracks[0]},afterAddDomElements:function(){var a=this,n=this.parent;function s(){a.hideTooltip=!0,a.track.prop("container").tipsy("hide")}function o(t,i){a.hideTooltip=!1;var s=a.chromosomeSize/a.width,o="resizestop"===t.type?e(this).data("ui-resizable").axis:void 0,r="e"===o?n.start:Math.max(Math.floor(i.position.left*s),1),c="w"===o?n.end:"dragstop"===t.type?r+n.length-1:Math.floor(i.helper.outerWidth(!0)*s)+r;r===n.start&&c===n.end||n.moveTo(a.chr,r,c,!0,"dragstop"===t.type)}!1===t.karyotypeLabel?(this.labelContainer.remove(),this.labelContainer=e(),i.addClass("gv-no-label")):this.labelContainer.width(c),this.viewPoint=e('<div class="gv-karyotype-viewpoint-wrapper"><div class="gv-karyotype-viewpoint"></div></div>').appendTo(i).css({left:c,width:this.width-c}).children().on({mousemove:function(t){a.track.controller.click(t)},mouseout:function(t){var n=e(t.relatedTarget);if(a.viewPoint.is(n)||a.viewPoint.find(n).length||"IMG"===n.prop("nodeName")&&n.parent().is(a.track.prop("imgContainers")[0]))return!0;a.track.prop("container").tipsy("hide"),a.track.prop("hoverFeature",!1)}}),n.isStatic||this.viewPoint.draggable({axis:"x",containment:this.wrapper,start:s,stop:o}).resizable({handles:"e, w",containment:"parent",start:s,stop:o,resize:function(t,e){e.element.css("left",Math.max(0,e.position.left)),e.position.left>0?e.element.width(Math.min(e.size.width,e.element.parent().width()-e.position.left)):e.element.width(e.size.width+e.position.left)}})},updatePosition:function(){var t=this.parent.start*this.scale,e=this.parent.end*this.scale-t;this.viewPoint.css({left:t,width:e})}}),!0!==this.loadedPlugins.controlPanel&&e('<li class="gv-unsortable">').height((function(t,e){return e+i.height()})).prependTo(this.labelContainer)}function i(){var t=this.karyotype.container.parent();this.karyotype.destroy(),t.remove(),a.call(this)}this.on({afterInit:a,afterSetRange:function(){this.karyotype&&this.karyotype.updatePosition()},afterSetWidth:i,afterMoveTo:function(t){this.karyotype&&this.karyotype.chr!==t&&i.call(this)}})}}}}]);
2
2
  //# sourceMappingURL=804.genoverse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"804.genoverse.js","mappings":"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","sources":["webpack://genoverse/./src/js/plugins/controlPanel.js","webpack://genoverse/./src/js/plugins/karyotype.js"],"sourcesContent":["import '../../css/controlPanel.css';\nimport karyotype from './karyotype';\n\nconst plugin = function (pluginConf) {\n const jQuery = this.jQuery;\n\n this.controls = [\n // Scroll left/right\n {\n name : 'Scroll left and right by pressing and holding these buttons',\n buttons : [{\n name : 'Scroll left',\n icon : '<i class=\"fas fa-chevron-left\"></i>',\n class : 'gv-scroll-left',\n }, {\n name : 'Scroll right',\n icon : '<i class=\"fas fa-chevron-right\"></i>',\n class : 'gv-scroll-right',\n }],\n init: function (browser) {\n const el = jQuery(this);\n\n el.find('.gv-scroll-left, .gv-scroll-right').on({\n mousedown : () => { browser.startDragScroll(); },\n mouseup : () => { browser.stopDragScroll(); },\n });\n\n el.find('.gv-scroll-left').mousehold(50, () => { browser.move(browser.scrollDelta); });\n el.find('.gv-scroll-right').mousehold(50, () => { browser.move(-browser.scrollDelta); });\n },\n },\n\n // Zoom in/out\n {\n name : 'Zoom-in and zoom-out',\n buttons : [{\n name : 'Zoom in',\n icon : '<i class=\"fas fa-search-plus\"></i>',\n class : 'gv-zoom-in',\n action : (browser) => { browser.zoomIn(); },\n }, {\n name : 'Zoom out',\n icon : '<i class=\"fas fa-search-minus\"></i>',\n class : 'gv-zoom-out',\n action : (browser) => { browser.zoomOut(); },\n }],\n },\n\n // Toogle drag action\n {\n name : 'Toggle your mouse drag action between scroll left/right and select region',\n buttons : [{\n name : 'Mouse drag action to scroll the browser left or right',\n icon : '<i class=\"fas fa-arrows-alt-h\"></i>',\n class : 'gv-drag-scroll',\n action : function (browser) {\n browser.setDragAction('scroll');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }, {\n name : 'Mouse drag action to select a region',\n icon : '<i></i>',\n class : 'gv-drag-select',\n action : function (browser) {\n browser.setDragAction('select');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }],\n init: function (browser) {\n jQuery(this).find(`.gv-drag-${browser.dragAction}`).addClass('gv-active').siblings().removeClass('gv-active');\n },\n },\n\n // Toogle wheel action\n {\n name : 'Toggle your mouse wheel action between zoom in/out and default page scroll',\n buttons : [{\n name : 'Mouse wheel action to scroll the page up and down',\n icon : '<i class=\"fas fa-arrows-alt-v\"></i>',\n class : 'gv-wheel-off',\n action : function (browser) {\n browser.setWheelAction('off');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }, {\n name : 'Mouse wheel to zoom in and out',\n icon : '&#177;',\n class : 'gv-wheel-zoom',\n action : function (browser) {\n browser.setWheelAction('zoom');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }],\n init: function (browser) {\n jQuery(this).find(`.gv-wheel-${browser.wheelAction}`).addClass('gv-active').siblings().removeClass('gv-active');\n },\n },\n ];\n\n if (this.saveable) {\n this.controls.push({\n icon : '<i class=\"fas fa-undo\"></i>',\n name : 'Reset tracks and configuration',\n action : (browser) => { browser.resetConfig(); },\n });\n }\n\n this.on({\n beforeInit: function () {\n const browser = this;\n\n this.tracksLibrary = (this.tracksLibrary || this.tracks).map(\n track => this.normaliseTrackDefinition(track)\n ).filter(\n track => track.prototype.name\n );\n\n const panel = jQuery(`\n <table cellspacing=0 cellpadding=0 class=\"gv\">\n <tr>\n <td class=\"gv-panel gv-panel-left\"></td>\n <td class=\"gv-canvas-container\"></td>\n <td class=\"gv-panel gv-panel-right\"></td>\n </tr>\n </table>\n `).appendTo(this.container).find('.gv-panel-right');\n\n this.controlPanel = panel;\n this.superContainer = this.container;\n this.container = jQuery('.gv-canvas-container', this.container);\n\n browser.controls.forEach(\n (control) => {\n const buttonSet = jQuery('<div class=\"gv-button-set\">').attr('title', control.name).appendTo(browser.superContainer.find('.gv-panel-right'));\n const buttons = control.buttons || [ control ];\n\n buttons.forEach(\n (button) => {\n const el = jQuery(`<button>${button.icon}</button>`).addClass(button.class).attr('title', button.name).appendTo(buttonSet);\n\n if (button.action) {\n el.on('click', () => {\n button.action.call(el[0], browser);\n });\n }\n\n if (button.init && button !== control) {\n button.init.call(el[0], browser);\n }\n }\n );\n\n if (control.init) {\n control.init.call(buttonSet, browser);\n }\n }\n );\n\n this.superContainer.width(this.width);\n\n // ESC key to toggle crosshair select to drag mode and close menus\n jQuery(document).on('keydown', (e) => {\n if (e.keyCode === 27) {\n if (panel.find('button.gv-drag-select').hasClass('gv-active')) {\n panel.find('button.gv-drag-scroll').trigger('click');\n }\n\n jQuery('.gv-menu .gv-close').trigger('click');\n }\n });\n },\n\n afterInit: function () {\n const browser = this;\n const tracksButton = jQuery('<button class=\"gv-tracks-library-button\" title=\"Tracks menu\"><i class=\"fas fa-bars\"></i> Tracks</button>').on('click', function () {\n const button = this;\n\n const getTrackTags = (track, tags) => (\n track.constructor?.ancestor?.prototype\n ? getTrackTags(track.constructor.ancestor.prototype, tags.concat(track.constructor.ancestor.prototype.tags || []))\n : tags\n );\n\n if (jQuery(this).hasClass('gv-active')) {\n jQuery('.gv-menu.gv-tracks-menu .gv-close').trigger('click');\n jQuery(this).removeClass('gv-active');\n } else {\n let menu = jQuery(this).data('menu');\n\n if (menu) {\n menu.show();\n } else {\n menu = browser.makeMenu({\n 'Currently enabled tracks:' : 'Available tracks:',\n '<div class=\"gv-current-tracks\"></div>' : '<input placeholder=\"Search\"><div class=\"gv-available-tracks\"></div>',\n }).addClass('gv-tracks-menu');\n\n jQuery('input[placeholder=Search]', menu).on('keyup', function () {\n const str = this.value.toLowerCase();\n\n jQuery('.gv-tracks-library-item', menu).each(function () {\n const track = jQuery(this).data('track');\n\n let match = false;\n\n if (track.name && track.name.toLowerCase().indexOf(str) >= 0) {\n match = true;\n } else {\n const tags = getTrackTags(track, []).concat(track.tags || []);\n\n if (tags.some(tag => tag.toLowerCase().indexOf(str) >= 0)) {\n match = true;\n }\n }\n\n jQuery(this)[match ? 'removeClass' : 'addClass']('gv-hide');\n });\n\n jQuery('.gv-tracks-library-category', menu).each(function () {\n const visibleTracks = jQuery(this).children('.gv-tracks-library-item:not(.gv-hide)');\n\n jQuery(this)[visibleTracks.length ? 'removeClass' : 'addClass']('gv-hide');\n });\n });\n\n jQuery('.gv-close', menu).on('click', () => {\n jQuery(button).removeClass('gv-active');\n });\n\n const availableTracks = jQuery('.gv-available-tracks', menu);\n const currentTracks = jQuery('.gv-current-tracks', menu).before('<div class=\"gv-current-tracks-instructions\">Drag and drop to reorder</div>').data({\n reload : function () { jQuery(this).empty().data('listTracks')(); },\n listTracks : function () {\n browser.tracks.filter(\n track => track.name && !(track.removable === false && track.unsortable) && !track.parentTrack && !track.lockToTrack\n ).forEach(\n (track) => {\n const el = jQuery('<div class=\"gv-tracks-menu-track\">')\n .append(`<span class=\"gv-tracks-menu-track-name\" title=\"${track.name}\">${track.defaultName}</span>`)\n .appendTo(currentTracks)\n .data('track', track)\n .addClass(track.unsortable ? 'gv-unsortable' : '');\n\n if (track.removable === false) {\n el.prepend('<i class=\"gv-remove-track gv-menu-button fas fa-circle\">');\n } else {\n el.prepend(jQuery('<i class=\"gv-remove-track gv-menu-button fas fa-times-circle\">').on('click', () => { track.remove(); }));\n }\n\n const trackNameEl = el.find('.gv-tracks-menu-track-name').tipsy({ gravity: 'w', trigger: 'manual' }).on('mouseenter', function () {\n const tip = jQuery(this).tipsy('show').data('tipsy').$tip;\n\n if (tip) {\n tip.css('zIndex', 1002);\n }\n }).on('mouseleave', function () {\n jQuery(this).tipsy('hide');\n });\n\n if (track.name === track.defaultName) {\n trackNameEl.tipsy('disable');\n }\n }\n );\n },\n }).sortable({\n items : 'div:not(.gv-unsortable)',\n cursor : 'move',\n axis : 'y',\n handle : 'span',\n update : browser.updateTrackOrder.bind(browser),\n start : function () {\n currentTracks.find('.gv-tracks-menu-track-name').each(function () { jQuery(this).tipsy('hide').tipsy('disable'); });\n },\n stop: function () {\n currentTracks.find('.gv-tracks-menu-track-name').each(function () { jQuery(this).tipsy('enable'); });\n },\n });\n\n currentTracks.data('listTracks')();\n\n if (browser.saveable) {\n jQuery('<div class=\"gv-tracks-menu-reset gv-menu-button\"><i class=\"fas fa-undo\"></i> Reset tracks and configuration</div>').insertAfter(currentTracks).on('click', (e) => {\n e.preventDefault();\n browser.resetConfig();\n });\n }\n\n if (browser.tracksLibrary?.length) {\n const tracksLibraryCategories = browser.tracksLibrary.filter(track => track.prototype.name && track.prototype.removable !== false).reduce(\n (acc, track) => {\n const categoryName = track.prototype.category || '';\n\n acc[categoryName] = acc[categoryName] || [];\n acc[categoryName].push([ track.prototype.name.toLowerCase(), track ]);\n\n return acc;\n },\n {}\n );\n\n const tracksLibraryCategoryOrder = (pluginConf?.tracksLibraryCategoryOrder || []).reduce(\n (acc, categoryName, i) => Object.assign(acc, { [categoryName]: i + 1 }),\n {}\n );\n\n Object.keys(tracksLibraryCategories).sort((a, b) => (Boolean(b) - Boolean(a)) || (tracksLibraryCategoryOrder[a] - tracksLibraryCategoryOrder[b]) || a.localeCompare(b)).forEach(\n (categoryName, i, allCategoryNames) => {\n const parentEl = (\n allCategoryNames.length > 1\n ? jQuery('<div class=\"gv-tracks-library-category\">').append(\n jQuery('<div class=\"gv-tracks-library-category-header\">').html(categoryName || 'Other')\n ).appendTo(availableTracks)\n : availableTracks\n );\n\n tracksLibraryCategories[categoryName].sort((a, b) => a[0].localeCompare(b[0])).forEach(\n (row) => {\n const track = row[1];\n\n jQuery('<div class=\"gv-tracks-library-item\">').append(\n jQuery('<i class=\"gv-add-track gv-menu-button fas fa-plus-circle\">').on('click', () => {\n browser.trackIds = browser.trackIds || {};\n browser.trackIds[track.prototype.id] = browser.trackIds[track.prototype.id] || 1;\n\n browser.addTrack(track.extend({ id: `${track.prototype.id}${browser.tracksById[track.prototype.id] ? browser.trackIds[track.prototype.id]++ : ''}` }));\n })\n ).append(`<span>${track.prototype.name}</span>`).appendTo(parentEl).data('track', track.prototype);\n }\n );\n }\n );\n }\n\n menu.css({ left: '50%', marginLeft: menu.width() / -2 });\n\n jQuery(this).data('menu', menu);\n }\n\n jQuery(this).addClass('gv-active');\n }\n });\n\n this.labelContainer.prepend(\n jQuery('<li class=\"gv-unsortable\">').append(\n jQuery('<div class=\"gv-button-set\" title=\"Tracks menu\">').append(tracksButton)\n )\n );\n },\n\n afterAddDomElements: function () {\n this.wrapper.after('<div class=\"gv-powered-by\">Powered by <a target=\"_blank\" href=\"https://wtsi-web.github.io/Genoverse/\">Genoverse</a></div>');\n this.superContainer.find('.gv-panel-left').append(this.labelContainer);\n },\n\n 'afterAddTracks afterRemoveTracks': function () {\n const currentTracks = this.superContainer.find('.gv-tracks-menu .gv-current-tracks');\n\n if (currentTracks.length) {\n currentTracks.data('reload').call(currentTracks);\n }\n },\n });\n\n this.on({\n afterSetName: function (name) {\n const track = this.track;\n\n if (track?.browser) {\n const menu = track.browser.superContainer.find('.gv-tracks-library-button').data('menu');\n\n if (menu) {\n menu.find('.gv-tracks-menu-track').filter(function () {\n return jQuery(this).data('track') === track;\n }).children('.gv-tracks-menu-track-name').attr('title', name).each(function () {\n if (name === track.defaultName) {\n jQuery(this).tipsy('hide').tipsy('disable');\n } else {\n jQuery(this).tipsy('enable');\n }\n });\n }\n }\n },\n }, 'tracks');\n};\n\nexport default { controlPanel: plugin, requires: karyotype };\n","import '../../css/karyotype.css';\nimport Chromosome from '../Track/library/Chromosome';\n\nconst plugin = function (pluginConf) {\n const jQuery = this.jQuery;\n\n function createKaryotype() {\n const chromosome = jQuery('<div class=\"gv-chromosome\">');\n const container = jQuery('<div class=\"gv-karyotype-container\">').html(chromosome).insertBefore(this.wrapper);\n const assemblyName = this.assembly || this.genomeName;\n const name = `${pluginConf.showAssembly && assemblyName ? `${assemblyName}: ` : ''}Chr ${this.chr}`;\n\n if (pluginConf.showAssembly && assemblyName) {\n container.addClass('gv-show-assembly');\n }\n\n const measureWidth = jQuery(`<div class=\"gv-chromosome\"><ul class=\"gv-label-container\"><li><span class=\"gv-name\">${name}</span></li></ul></div>`).appendTo(container);\n const labelWidth = pluginConf.karyotypeLabel === false ? 0 : measureWidth.find('.gv-name').outerWidth(true) + 10;\n\n measureWidth.remove();\n\n this.karyotype = new Genoverse({\n parent : this,\n container : chromosome,\n width : chromosome.width(),\n genome : this.genome,\n chr : this.chr,\n start : 1,\n end : this.chromosomeSize,\n isStatic : true,\n tracks : [\n Chromosome.extend({\n name : name,\n height : 20,\n featureHeight : 20,\n border : false,\n legend : false,\n unsortable : true,\n\n click: function (e) {\n const offset = this.container.parent().offset().left;\n const x = e.pageX - offset;\n const f = this.featurePositions.search({ x: x, y: 1, w: 1, h: 1 })[0];\n\n if (f) {\n if (e.type === 'mouseup') {\n if (!this.browser.parent.isStatic) {\n this.browser.parent.moveTo(f.chr, f.start, f.end, true);\n }\n } else if (this.hoverFeature !== f && !this.browser.hideTooltip) {\n this.container.tipsy('hide');\n\n if (f.label) {\n const left = offset + f.position[this.scale].start + f.position[this.scale].width / 2;\n\n this.container.attr('title', f.label[0]).tipsy({ trigger: 'manual', container: 'body' }).tipsy('show').data('tipsy').$tip.css('left', function () { return left - jQuery(this).width() / 2; });\n }\n\n this.hoverFeature = f;\n }\n }\n },\n\n addUserEventHandlers: function () {\n const track = this;\n\n this.base();\n\n this.container.on({\n mousemove : (e) => { track.click(e); },\n mouseout : (e) => {\n if (track.browser.viewPoint.is(e.relatedTarget) || track.browser.viewPoint.find(e.relatedTarget).length) {\n return true;\n }\n\n track.container.tipsy('hide');\n track.hoverFeature = false;\n },\n }, '.gv-image-container');\n\n // Don't allow zooming in and out on the karyotype image\n this.container.on('mousewheel', '.gv-image-container, .gv-selector', (e) => {\n e.stopPropagation();\n });\n },\n\n afterSetName: function () {\n this.label.css('lineHeight', `${this.label.height()}px`);\n },\n }),\n ],\n\n addUserEventHandlers: () => {},\n\n afterInit: function () {\n this.updatePosition();\n this.viewPoint.fadeIn();\n },\n\n afterAddTracks: function () {\n this.track = this.tracks[0];\n },\n\n afterAddDomElements: function () {\n const karyotype = this;\n const parent = this.parent;\n\n function hideTooltip() {\n karyotype.hideTooltip = true;\n karyotype.track.prop('container').tipsy('hide');\n }\n\n function updateLocation(e, ui) {\n karyotype.hideTooltip = false;\n\n const scale = karyotype.chromosomeSize / karyotype.width;\n const axis = e.type === 'resizestop' ? jQuery(this).data('ui-resizable').axis : undefined;\n const start = axis === 'e' ? parent.start : Math.max(Math.floor(ui.position.left * scale), 1);\n const end = axis === 'w' ? parent.end : e.type === 'dragstop' ? start + parent.length - 1 : Math.floor(ui.helper.outerWidth(true) * scale) + start;\n\n if (start !== parent.start || end !== parent.end) {\n parent.moveTo(karyotype.chr, start, end, true, e.type === 'dragstop');\n }\n }\n\n if (pluginConf.karyotypeLabel === false) {\n this.labelContainer.remove();\n this.labelContainer = jQuery();\n container.addClass('gv-no-label');\n } else {\n this.labelContainer.width(labelWidth);\n }\n\n this.viewPoint = jQuery('<div class=\"gv-karyotype-viewpoint-wrapper\"><div class=\"gv-karyotype-viewpoint\"></div></div>').appendTo(container).css({\n left : labelWidth,\n width : this.width - labelWidth,\n }).children().on({\n mousemove : (e) => { karyotype.track.controller.click(e); },\n mouseout : (e) => {\n const el = jQuery(e.relatedTarget);\n\n if (karyotype.viewPoint.is(el) || karyotype.viewPoint.find(el).length || (el.prop('nodeName') === 'IMG' && el.parent().is(karyotype.track.prop('imgContainers')[0]))) {\n return true;\n }\n\n karyotype.track.prop('container').tipsy('hide');\n karyotype.track.prop('hoverFeature', false);\n },\n });\n\n if (!parent.isStatic) {\n this.viewPoint.draggable({\n axis : 'x',\n containment : this.wrapper,\n start : hideTooltip,\n stop : updateLocation,\n }).resizable({\n handles : 'e, w',\n containment : 'parent',\n start : hideTooltip,\n stop : updateLocation,\n resize : function (e, ui) {\n ui.element.css('left', Math.max(0, ui.position.left));\n\n if (ui.position.left > 0) {\n ui.element.width(Math.min(ui.size.width, ui.element.parent().width() - ui.position.left));\n } else {\n ui.element.width(ui.size.width + ui.position.left);\n }\n },\n });\n }\n },\n\n updatePosition: function () {\n const left = this.parent.start * this.scale;\n const width = (this.parent.end * this.scale) - left;\n\n this.viewPoint.css({ left: left, width: width });\n },\n });\n\n if (this.loadedPlugins.controlPanel !== true) {\n jQuery('<li class=\"gv-unsortable\">').height((i, h) => h + container.height()).prependTo(this.labelContainer);\n }\n }\n\n function recreateKaryotype() {\n const container = this.karyotype.container.parent();\n\n this.karyotype.destroy();\n container.remove();\n\n createKaryotype.call(this);\n }\n\n this.on({\n afterInit: createKaryotype,\n\n afterSetRange: function () {\n if (this.karyotype) {\n this.karyotype.updatePosition();\n }\n },\n\n afterSetWidth: recreateKaryotype,\n\n afterMoveTo: function (chr) {\n if (this.karyotype && this.karyotype.chr !== chr) {\n recreateKaryotype.call(this);\n }\n },\n });\n};\n\nexport default { karyotype: plugin };\n"],"names":["controlPanel","pluginConf","jQuery","this","controls","name","buttons","icon","class","init","browser","el","find","on","mousedown","startDragScroll","mouseup","stopDragScroll","mousehold","move","scrollDelta","action","zoomIn","zoomOut","setDragAction","addClass","siblings","removeClass","dragAction","setWheelAction","wheelAction","saveable","push","resetConfig","beforeInit","tracksLibrary","tracks","map","track","normaliseTrackDefinition","filter","prototype","panel","appendTo","container","superContainer","forEach","control","buttonSet","attr","button","call","width","document","e","keyCode","hasClass","trigger","afterInit","tracksButton","getTrackTags","tags","constructor","ancestor","concat","menu","data","show","makeMenu","str","value","toLowerCase","each","match","indexOf","some","tag","visibleTracks","children","length","availableTracks","currentTracks","before","reload","empty","listTracks","removable","unsortable","parentTrack","lockToTrack","append","defaultName","prepend","remove","trackNameEl","tipsy","gravity","tip","$tip","css","sortable","items","cursor","axis","handle","update","updateTrackOrder","bind","start","stop","insertAfter","preventDefault","tracksLibraryCategories","reduce","acc","categoryName","category","tracksLibraryCategoryOrder","i","Object","assign","keys","sort","a","b","Boolean","localeCompare","allCategoryNames","parentEl","html","row","trackIds","id","addTrack","extend","tracksById","left","marginLeft","labelContainer","afterAddDomElements","wrapper","after","afterSetName","requires","karyotype","createKaryotype","chromosome","insertBefore","assemblyName","assembly","genomeName","showAssembly","chr","measureWidth","labelWidth","karyotypeLabel","outerWidth","Genoverse","parent","genome","end","chromosomeSize","isStatic","Chromosome","height","featureHeight","border","legend","click","offset","x","pageX","f","featurePositions","search","y","w","h","type","moveTo","hoverFeature","hideTooltip","label","position","scale","addUserEventHandlers","base","mousemove","mouseout","viewPoint","is","relatedTarget","stopPropagation","updatePosition","fadeIn","afterAddTracks","prop","updateLocation","ui","undefined","Math","max","floor","helper","controller","draggable","containment","resizable","handles","resize","element","min","size","loadedPlugins","prependTo","recreateKaryotype","destroy","afterSetRange","afterSetWidth","afterMoveTo"],"sourceRoot":""}
1
+ {"version":3,"file":"804.genoverse.js","mappings":"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","sources":["webpack://genoverse/./src/js/plugins/controlPanel.js","webpack://genoverse/./src/js/plugins/karyotype.js"],"sourcesContent":["import '../../css/controlPanel.css';\nimport karyotype from './karyotype';\n\nconst plugin = function (pluginConf) {\n const jQuery = this.jQuery;\n\n this.controls = [\n // Scroll left/right\n {\n name : 'Scroll left and right by pressing and holding these buttons',\n buttons : [{\n name : 'Scroll left',\n icon : '<i class=\"fas fa-chevron-left\"></i>',\n class : 'gv-scroll-left',\n }, {\n name : 'Scroll right',\n icon : '<i class=\"fas fa-chevron-right\"></i>',\n class : 'gv-scroll-right',\n }],\n init: function (browser) {\n const el = jQuery(this);\n\n el.find('.gv-scroll-left, .gv-scroll-right').on({\n mousedown : () => { browser.startDragScroll(); },\n mouseup : () => { browser.stopDragScroll(); },\n });\n\n el.find('.gv-scroll-left').mousehold(50, () => { browser.move(browser.scrollDelta); });\n el.find('.gv-scroll-right').mousehold(50, () => { browser.move(-browser.scrollDelta); });\n },\n },\n\n // Zoom in/out\n {\n name : 'Zoom-in and zoom-out',\n buttons : [{\n name : 'Zoom in',\n icon : '<i class=\"fas fa-search-plus\"></i>',\n class : 'gv-zoom-in',\n action : (browser) => { browser.zoomIn(); },\n }, {\n name : 'Zoom out',\n icon : '<i class=\"fas fa-search-minus\"></i>',\n class : 'gv-zoom-out',\n action : (browser) => { browser.zoomOut(); },\n }],\n },\n\n // Toogle drag action\n {\n name : 'Toggle your mouse drag action between scroll left/right and select region',\n buttons : [{\n name : 'Mouse drag action to scroll the browser left or right',\n icon : '<i class=\"fas fa-arrows-alt-h\"></i>',\n class : 'gv-drag-scroll',\n action : function (browser) {\n browser.setDragAction('scroll');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }, {\n name : 'Mouse drag action to select a region',\n icon : '<i></i>',\n class : 'gv-drag-select',\n action : function (browser) {\n browser.setDragAction('select');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }],\n init: function (browser) {\n jQuery(this).find(`.gv-drag-${browser.dragAction}`).addClass('gv-active').siblings().removeClass('gv-active');\n },\n },\n\n // Toogle wheel action\n {\n name : 'Toggle your mouse wheel action between zoom in/out and default page scroll',\n buttons : [{\n name : 'Mouse wheel action to scroll the page up and down',\n icon : '<i class=\"fas fa-arrows-alt-v\"></i>',\n class : 'gv-wheel-off',\n action : function (browser) {\n browser.setWheelAction('off');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }, {\n name : 'Mouse wheel to zoom in and out',\n icon : '&#177;',\n class : 'gv-wheel-zoom',\n action : function (browser) {\n browser.setWheelAction('zoom');\n jQuery(this).addClass('gv-active').siblings().removeClass('gv-active');\n },\n }],\n init: function (browser) {\n jQuery(this).find(`.gv-wheel-${browser.wheelAction}`).addClass('gv-active').siblings().removeClass('gv-active');\n },\n },\n ];\n\n if (this.saveable) {\n this.controls.push({\n icon : '<i class=\"fas fa-undo\"></i>',\n name : 'Reset tracks and configuration',\n action : (browser) => { browser.resetConfig(); },\n });\n }\n\n this.on({\n beforeInit: function () {\n const browser = this;\n\n this.tracksLibrary = (this.tracksLibrary || this.tracks).map(\n track => this.normaliseTrackDefinition(track)\n ).filter(\n track => track.prototype.name\n );\n\n const panel = jQuery(`\n <table cellspacing=0 cellpadding=0 class=\"gv\">\n <tr>\n <td class=\"gv-panel gv-panel-left\"></td>\n <td class=\"gv-canvas-container\"></td>\n <td class=\"gv-panel gv-panel-right\"></td>\n </tr>\n </table>\n `).appendTo(this.container).find('.gv-panel-right');\n\n this.controlPanel = panel;\n this.superContainer = this.container;\n this.container = jQuery('.gv-canvas-container', this.container);\n\n browser.controls.forEach(\n (control) => {\n const buttonSet = jQuery('<div class=\"gv-button-set\">').attr('title', control.name).appendTo(browser.superContainer.find('.gv-panel-right'));\n const buttons = control.buttons || [ control ];\n\n buttons.forEach(\n (button) => {\n const el = jQuery(`<button>${button.icon}</button>`).addClass(button.class).attr('title', button.name).appendTo(buttonSet);\n\n if (button.action) {\n el.on('click', () => {\n button.action.call(el[0], browser);\n });\n }\n\n if (button.init && button !== control) {\n button.init.call(el[0], browser);\n }\n }\n );\n\n if (control.init) {\n control.init.call(buttonSet, browser);\n }\n }\n );\n\n this.superContainer.width(this.width);\n\n // ESC key to toggle crosshair select to drag mode and close menus\n jQuery(document).on('keydown', (e) => {\n if (e.keyCode === 27) {\n if (panel.find('button.gv-drag-select').hasClass('gv-active')) {\n panel.find('button.gv-drag-scroll').trigger('click');\n }\n\n jQuery('.gv-menu .gv-close').trigger('click');\n }\n });\n },\n\n afterInit: function () {\n const browser = this;\n const tracksButton = jQuery('<button class=\"gv-tracks-library-button\" title=\"Tracks menu\"><i class=\"fas fa-bars\"></i> Tracks</button>').on('click', function () {\n const button = this;\n\n const getTrackTags = (track, tags) => (\n track.constructor?.ancestor?.prototype\n ? getTrackTags(track.constructor.ancestor.prototype, tags.concat(track.constructor.ancestor.prototype.tags || []))\n : tags\n );\n\n if (jQuery(this).hasClass('gv-active')) {\n jQuery('.gv-menu.gv-tracks-menu .gv-close').trigger('click');\n jQuery(this).removeClass('gv-active');\n } else {\n let menu = jQuery(this).data('menu');\n\n if (menu) {\n menu.show();\n } else {\n menu = browser.makeMenu({\n 'Currently enabled tracks:' : 'Available tracks:',\n '<div class=\"gv-current-tracks\"></div>' : '<input placeholder=\"Search\"><div class=\"gv-available-tracks\"></div>',\n }).addClass('gv-tracks-menu');\n\n jQuery('input[placeholder=Search]', menu).on('keyup', function () {\n const str = this.value.toLowerCase();\n\n jQuery('.gv-tracks-library-item', menu).each(function () {\n const track = jQuery(this).data('track');\n\n let match = false;\n\n if (track.name && track.name.toLowerCase().indexOf(str) >= 0) {\n match = true;\n } else {\n const tags = getTrackTags(track, []).concat(track.tags || []);\n\n if (tags.some(tag => tag.toLowerCase().indexOf(str) >= 0)) {\n match = true;\n }\n }\n\n jQuery(this)[match ? 'removeClass' : 'addClass']('gv-hide');\n });\n\n jQuery('.gv-tracks-library-category', menu).each(function () {\n const visibleTracks = jQuery(this).children('.gv-tracks-library-item:not(.gv-hide)');\n\n jQuery(this)[visibleTracks.length ? 'removeClass' : 'addClass']('gv-hide');\n });\n });\n\n jQuery('.gv-close', menu).on('click', () => {\n jQuery(button).removeClass('gv-active');\n });\n\n const availableTracks = jQuery('.gv-available-tracks', menu);\n const currentTracks = jQuery('.gv-current-tracks', menu).before('<div class=\"gv-current-tracks-instructions\">Drag and drop to reorder</div>').data({\n reload : function () { jQuery(this).empty().data('listTracks')(); },\n listTracks : function () {\n browser.tracks.filter(\n track => track.name && !(track.removable === false && track.unsortable) && !track.parentTrack && !track.lockToTrack\n ).forEach(\n (track) => {\n const el = jQuery('<div class=\"gv-tracks-menu-track\">')\n .append(`<span class=\"gv-tracks-menu-track-name\" title=\"${track.name}\">${track.defaultName}</span>`)\n .appendTo(currentTracks)\n .data('track', track)\n .addClass(track.unsortable ? 'gv-unsortable' : '');\n\n if (track.removable === false) {\n el.prepend('<i class=\"gv-remove-track gv-menu-button fas fa-circle\">');\n } else {\n el.prepend(jQuery('<i class=\"gv-remove-track gv-menu-button fas fa-times-circle\">').on('click', () => { track.remove(); }));\n }\n\n const trackNameEl = el.find('.gv-tracks-menu-track-name').tipsy({ gravity: 'w', trigger: 'manual' }).on('mouseenter', function () {\n const tip = jQuery(this).tipsy('show').data('tipsy').$tip;\n\n if (tip) {\n tip.css('zIndex', 1002);\n }\n }).on('mouseleave', function () {\n jQuery(this).tipsy('hide');\n });\n\n if (track.name === track.defaultName) {\n trackNameEl.tipsy('disable');\n }\n }\n );\n },\n }).sortable({\n items : 'div:not(.gv-unsortable)',\n cursor : 'move',\n axis : 'y',\n handle : 'span',\n update : browser.updateTrackOrder.bind(browser),\n start : function () {\n currentTracks.find('.gv-tracks-menu-track-name').each(function () { jQuery(this).tipsy('hide').tipsy('disable'); });\n },\n stop: function () {\n currentTracks.find('.gv-tracks-menu-track-name').each(function () { jQuery(this).tipsy('enable'); });\n },\n });\n\n currentTracks.data('listTracks')();\n\n if (browser.saveable) {\n jQuery('<div class=\"gv-tracks-menu-reset gv-menu-button\"><i class=\"fas fa-undo\"></i> Reset tracks and configuration</div>').insertAfter(currentTracks).on('click', (e) => {\n e.preventDefault();\n browser.resetConfig();\n });\n }\n\n if (browser.tracksLibrary?.length) {\n const tracksLibraryCategories = browser.tracksLibrary.filter(track => track.prototype.name && track.prototype.removable !== false).reduce(\n (acc, track) => {\n const categoryName = track.prototype.category || '';\n\n acc[categoryName] = acc[categoryName] || [];\n acc[categoryName].push([ track.prototype.name.toLowerCase(), track ]);\n\n return acc;\n },\n {}\n );\n\n const tracksLibraryCategoryOrder = (pluginConf?.tracksLibraryCategoryOrder || []).reduce(\n (acc, categoryName, i) => Object.assign(acc, { [categoryName]: i + 1 }),\n {}\n );\n\n Object.keys(tracksLibraryCategories).sort((a, b) => (Boolean(b) - Boolean(a)) || (tracksLibraryCategoryOrder[a] - tracksLibraryCategoryOrder[b]) || a.localeCompare(b)).forEach(\n (categoryName, i, allCategoryNames) => {\n const parentEl = (\n allCategoryNames.length > 1\n ? jQuery('<div class=\"gv-tracks-library-category\">').append(\n jQuery('<div class=\"gv-tracks-library-category-header\">').html(categoryName || 'Other')\n ).appendTo(availableTracks)\n : availableTracks\n );\n\n tracksLibraryCategories[categoryName].sort((a, b) => a[0].localeCompare(b[0])).forEach(\n (row) => {\n const track = row[1];\n\n jQuery('<div class=\"gv-tracks-library-item\">').append(\n jQuery('<i class=\"gv-add-track gv-menu-button fas fa-plus-circle\">').on('click', () => {\n browser.trackIds = browser.trackIds || {};\n browser.trackIds[track.prototype.id] = browser.trackIds[track.prototype.id] || 1;\n\n browser.addTrack(track.extend({ id: `${track.prototype.id}${browser.tracksById[track.prototype.id] ? browser.trackIds[track.prototype.id]++ : ''}` }));\n })\n ).append(`<span>${track.prototype.name}</span>`).appendTo(parentEl).data('track', track.prototype);\n }\n );\n }\n );\n }\n\n menu.css({ left: '50%', marginLeft: menu.width() / -2 });\n\n jQuery(this).data('menu', menu);\n }\n\n jQuery(this).addClass('gv-active');\n }\n });\n\n this.labelContainer.prepend(\n jQuery('<li class=\"gv-unsortable\">').append(\n jQuery('<div class=\"gv-button-set\" title=\"Tracks menu\">').append(tracksButton)\n )\n );\n },\n\n afterAddDomElements: function () {\n this.wrapper.after('<div class=\"gv-powered-by\">Powered by <a target=\"_blank\" href=\"https://wtsi-decipher-grp.github.io/Genoverse/\">Genoverse</a></div>');\n this.superContainer.find('.gv-panel-left').append(this.labelContainer);\n },\n\n 'afterAddTracks afterRemoveTracks': function () {\n const currentTracks = this.superContainer.find('.gv-tracks-menu .gv-current-tracks');\n\n if (currentTracks.length) {\n currentTracks.data('reload').call(currentTracks);\n }\n },\n });\n\n this.on({\n afterSetName: function (name) {\n const track = this.track;\n\n if (track?.browser) {\n const menu = track.browser.superContainer.find('.gv-tracks-library-button').data('menu');\n\n if (menu) {\n menu.find('.gv-tracks-menu-track').filter(function () {\n return jQuery(this).data('track') === track;\n }).children('.gv-tracks-menu-track-name').attr('title', name).each(function () {\n if (name === track.defaultName) {\n jQuery(this).tipsy('hide').tipsy('disable');\n } else {\n jQuery(this).tipsy('enable');\n }\n });\n }\n }\n },\n }, 'tracks');\n};\n\nexport default { controlPanel: plugin, requires: karyotype };\n","import '../../css/karyotype.css';\nimport Chromosome from '../Track/library/Chromosome';\n\nconst plugin = function (pluginConf) {\n const jQuery = this.jQuery;\n\n function createKaryotype() {\n const chromosome = jQuery('<div class=\"gv-chromosome\">');\n const container = jQuery('<div class=\"gv-karyotype-container\">').html(chromosome).insertBefore(this.wrapper);\n const assemblyName = this.assembly || this.genomeName;\n const name = `${pluginConf.showAssembly && assemblyName ? `${assemblyName}: ` : ''}Chr ${this.chr}`;\n\n if (pluginConf.showAssembly && assemblyName) {\n container.addClass('gv-show-assembly');\n }\n\n const measureWidth = jQuery(`<div class=\"gv-chromosome\"><ul class=\"gv-label-container\"><li><span class=\"gv-name\">${name}</span></li></ul></div>`).appendTo(container);\n const labelWidth = pluginConf.karyotypeLabel === false ? 0 : measureWidth.find('.gv-name').outerWidth(true) + 10;\n\n measureWidth.remove();\n\n this.karyotype = new Genoverse({\n parent : this,\n container : chromosome,\n width : chromosome.width(),\n genome : this.genome,\n chr : this.chr,\n start : 1,\n end : this.chromosomeSize,\n isStatic : true,\n tracks : [\n Chromosome.extend({\n name : name,\n height : 20,\n featureHeight : 20,\n border : false,\n legend : false,\n unsortable : true,\n\n click: function (e) {\n const offset = this.container.parent().offset().left;\n const x = e.pageX - offset;\n const f = this.featurePositions.search({ x: x, y: 1, w: 1, h: 1 })[0];\n\n if (f) {\n if (e.type === 'mouseup') {\n if (!this.browser.parent.isStatic) {\n this.browser.parent.moveTo(f.chr, f.start, f.end, true);\n }\n } else if (this.hoverFeature !== f && !this.browser.hideTooltip) {\n this.container.tipsy('hide');\n\n if (f.label) {\n const left = offset + f.position[this.scale].start + f.position[this.scale].width / 2;\n\n this.container.attr('title', f.label[0]).tipsy({ trigger: 'manual', container: 'body' }).tipsy('show').data('tipsy').$tip.css('left', function () { return left - jQuery(this).width() / 2; });\n }\n\n this.hoverFeature = f;\n }\n }\n },\n\n addUserEventHandlers: function () {\n const track = this;\n\n this.base();\n\n this.container.on({\n mousemove : (e) => { track.click(e); },\n mouseout : (e) => {\n if (track.browser.viewPoint.is(e.relatedTarget) || track.browser.viewPoint.find(e.relatedTarget).length) {\n return true;\n }\n\n track.container.tipsy('hide');\n track.hoverFeature = false;\n },\n }, '.gv-image-container');\n\n // Don't allow zooming in and out on the karyotype image\n this.container.on('mousewheel', '.gv-image-container, .gv-selector', (e) => {\n e.stopPropagation();\n });\n },\n\n afterSetName: function () {\n this.label.css('lineHeight', `${this.label.height()}px`);\n },\n }),\n ],\n\n addUserEventHandlers: () => {},\n\n afterInit: function () {\n this.updatePosition();\n this.viewPoint.fadeIn();\n },\n\n afterAddTracks: function () {\n this.track = this.tracks[0];\n },\n\n afterAddDomElements: function () {\n const karyotype = this;\n const parent = this.parent;\n\n function hideTooltip() {\n karyotype.hideTooltip = true;\n karyotype.track.prop('container').tipsy('hide');\n }\n\n function updateLocation(e, ui) {\n karyotype.hideTooltip = false;\n\n const scale = karyotype.chromosomeSize / karyotype.width;\n const axis = e.type === 'resizestop' ? jQuery(this).data('ui-resizable').axis : undefined;\n const start = axis === 'e' ? parent.start : Math.max(Math.floor(ui.position.left * scale), 1);\n const end = axis === 'w' ? parent.end : e.type === 'dragstop' ? start + parent.length - 1 : Math.floor(ui.helper.outerWidth(true) * scale) + start;\n\n if (start !== parent.start || end !== parent.end) {\n parent.moveTo(karyotype.chr, start, end, true, e.type === 'dragstop');\n }\n }\n\n if (pluginConf.karyotypeLabel === false) {\n this.labelContainer.remove();\n this.labelContainer = jQuery();\n container.addClass('gv-no-label');\n } else {\n this.labelContainer.width(labelWidth);\n }\n\n this.viewPoint = jQuery('<div class=\"gv-karyotype-viewpoint-wrapper\"><div class=\"gv-karyotype-viewpoint\"></div></div>').appendTo(container).css({\n left : labelWidth,\n width : this.width - labelWidth,\n }).children().on({\n mousemove : (e) => { karyotype.track.controller.click(e); },\n mouseout : (e) => {\n const el = jQuery(e.relatedTarget);\n\n if (karyotype.viewPoint.is(el) || karyotype.viewPoint.find(el).length || (el.prop('nodeName') === 'IMG' && el.parent().is(karyotype.track.prop('imgContainers')[0]))) {\n return true;\n }\n\n karyotype.track.prop('container').tipsy('hide');\n karyotype.track.prop('hoverFeature', false);\n },\n });\n\n if (!parent.isStatic) {\n this.viewPoint.draggable({\n axis : 'x',\n containment : this.wrapper,\n start : hideTooltip,\n stop : updateLocation,\n }).resizable({\n handles : 'e, w',\n containment : 'parent',\n start : hideTooltip,\n stop : updateLocation,\n resize : function (e, ui) {\n ui.element.css('left', Math.max(0, ui.position.left));\n\n if (ui.position.left > 0) {\n ui.element.width(Math.min(ui.size.width, ui.element.parent().width() - ui.position.left));\n } else {\n ui.element.width(ui.size.width + ui.position.left);\n }\n },\n });\n }\n },\n\n updatePosition: function () {\n const left = this.parent.start * this.scale;\n const width = (this.parent.end * this.scale) - left;\n\n this.viewPoint.css({ left: left, width: width });\n },\n });\n\n if (this.loadedPlugins.controlPanel !== true) {\n jQuery('<li class=\"gv-unsortable\">').height((i, h) => h + container.height()).prependTo(this.labelContainer);\n }\n }\n\n function recreateKaryotype() {\n const container = this.karyotype.container.parent();\n\n this.karyotype.destroy();\n container.remove();\n\n createKaryotype.call(this);\n }\n\n this.on({\n afterInit: createKaryotype,\n\n afterSetRange: function () {\n if (this.karyotype) {\n this.karyotype.updatePosition();\n }\n },\n\n afterSetWidth: recreateKaryotype,\n\n afterMoveTo: function (chr) {\n if (this.karyotype && this.karyotype.chr !== chr) {\n recreateKaryotype.call(this);\n }\n },\n });\n};\n\nexport default { karyotype: plugin };\n"],"names":["controlPanel","pluginConf","jQuery","this","controls","name","buttons","icon","class","init","browser","el","find","on","mousedown","startDragScroll","mouseup","stopDragScroll","mousehold","move","scrollDelta","action","zoomIn","zoomOut","setDragAction","addClass","siblings","removeClass","dragAction","setWheelAction","wheelAction","saveable","push","resetConfig","beforeInit","tracksLibrary","tracks","map","track","normaliseTrackDefinition","filter","prototype","panel","appendTo","container","superContainer","forEach","control","buttonSet","attr","button","call","width","document","e","keyCode","hasClass","trigger","afterInit","tracksButton","getTrackTags","tags","constructor","ancestor","concat","menu","data","show","makeMenu","str","value","toLowerCase","each","match","indexOf","some","tag","visibleTracks","children","length","availableTracks","currentTracks","before","reload","empty","listTracks","removable","unsortable","parentTrack","lockToTrack","append","defaultName","prepend","remove","trackNameEl","tipsy","gravity","tip","$tip","css","sortable","items","cursor","axis","handle","update","updateTrackOrder","bind","start","stop","insertAfter","preventDefault","tracksLibraryCategories","reduce","acc","categoryName","category","tracksLibraryCategoryOrder","i","Object","assign","keys","sort","a","b","Boolean","localeCompare","allCategoryNames","parentEl","html","row","trackIds","id","addTrack","extend","tracksById","left","marginLeft","labelContainer","afterAddDomElements","wrapper","after","afterSetName","requires","karyotype","createKaryotype","chromosome","insertBefore","assemblyName","assembly","genomeName","showAssembly","chr","measureWidth","labelWidth","karyotypeLabel","outerWidth","Genoverse","parent","genome","end","chromosomeSize","isStatic","Chromosome","height","featureHeight","border","legend","click","offset","x","pageX","f","featurePositions","search","y","w","h","type","moveTo","hoverFeature","hideTooltip","label","position","scale","addUserEventHandlers","base","mousemove","mouseout","viewPoint","is","relatedTarget","stopPropagation","updatePosition","fadeIn","afterAddTracks","prop","updateLocation","ui","undefined","Math","max","floor","helper","controller","draggable","containment","resizable","handles","resize","element","min","size","loadedPlugins","prependTo","recreateKaryotype","destroy","afterSetRange","afterSetWidth","afterMoveTo"],"sourceRoot":""}
package/index.html CHANGED
@@ -14,7 +14,7 @@
14
14
  </style>
15
15
  </head>
16
16
  <body>
17
- <a class="fork" href="https://github.com/wtsi-web/Genoverse" target="_blank"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
17
+ <a class="fork" href="https://github.com/WTSI-decipher-grp/Genoverse" target="_blank"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
18
18
  <div class="container">
19
19
  <div class="head"><h1>Genoverse - interactive HTML5 genome browser</h1></div>
20
20
  <div class="wrap">
@@ -25,7 +25,7 @@
25
25
  <p>Data is visualized in the browser, meaning Genoverse can be installed on any website and show data from a wide range of online or local sources.</p>
26
26
  <p>Genoverse works with a variety of formats, such as XML, JSON, GFF, GFF3, BED (try drag-n-drop one), and can be customized to parse and display any data source as required.</p>
27
27
 
28
- <p class="help">If you have any questions or need help, please raise an issue at <a href="https://github.com/wtsi-web/Genoverse" target="_blank">https://github.com/wtsi-web/Genoverse</a></p>
28
+ <p class="help">If you have any questions or need help, please raise an issue at <a href="https://github.com/WTSI-decipher-grp/Genoverse" target="_blank">https://github.com/WTSI-decipher-grp/Genoverse</a></p>
29
29
  </div>
30
30
  </div>
31
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genoverse",
3
- "version": "4.0.6",
3
+ "version": "4.0.7",
4
4
  "description": "Genoverse is a portable, customizable, back-end independent JavaScript and HTML5 based genome browser which allows the user to explore data in a dynamic and interactive manner.",
5
5
  "main": "src/js/Genoverse.js",
6
6
  "directories": {
@@ -349,7 +349,7 @@ const plugin = function (pluginConf) {
349
349
  },
350
350
 
351
351
  afterAddDomElements: function () {
352
- this.wrapper.after('<div class="gv-powered-by">Powered by <a target="_blank" href="https://wtsi-web.github.io/Genoverse/">Genoverse</a></div>');
352
+ this.wrapper.after('<div class="gv-powered-by">Powered by <a target="_blank" href="https://wtsi-decipher-grp.github.io/Genoverse/">Genoverse</a></div>');
353
353
  this.superContainer.find('.gv-panel-left').append(this.labelContainer);
354
354
  },
355
355