diff --git a/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js b/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js index 53dc0ca61f7..f45e43deddb 100644 --- a/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js +++ b/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js @@ -59,19 +59,22 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap node_size = 20, text_size = 20, line_width = 2; + // Set different properties of the tree tree.setTreeType( settings.get( 'tree_type' ) ); - tree.branchColour = settings.get( 'edge_color' ); + // Set properties related to labels tree.showLabels = settings.get( 'show_labels' ) === "true" ? true : false; tree.alignLabels = settings.get( 'align_labels' ) === "true" ? true : false; + // Set properties related to colors + tree.branchColour = settings.get( 'edge_color' ); tree.highlightColour = settings.get( 'highlighted_color' ); tree.selectedColour = settings.get( 'selected_color' ); + // Set properties related to size tree.setNodeSize( node_size ); tree.setTextSize( text_size ); tree.lineWidth = line_width; - // Register click event on tree - tree.on('click', function (e) { + tree.on( 'click', function ( e ) { var node = tree.getNodeAtMousePosition( e ); // Here collapse action is taking preference. // Whenver collapse and prune both are selected true, @@ -88,6 +91,11 @@ define(function() { return /******/ (function(modules) { // webpackBootstrap }); // Draw the phylogenetic tree tree.load( content ); + // Set node shape + for(var j = 0, length = tree.leaves.length; j < length; j++) { + tree.leaves[ j ].nodeShape = settings.get( 'node_shape' ); + } + tree.draw(); chart.state( 'ok', 'Done.' ); options.process.resolve(); // Adjust the size of tree on window resize diff --git a/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js.map b/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js.map index 64af8660eab..66c98d1afd6 100644 --- a/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js.map +++ b/config/plugins/visualizations/charts/static/repository/build/biojs_phylocanvas.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap d3d60c90002f765885ab","webpack:///./static/repository/visualizations/biojs/phylocanvas/wrapper.js","webpack:///./static/repository/utilities/utils.js","webpack:///./static/repository/plugins/biojs/phylocanvas/phylocanvas.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;iECtCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D,0BAAyB;AACzB,sBAAqB;AACrB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;AACL,EAAC;;;;;;;AC7DD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA,yBAAwB;AACxB;AACA;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,eAAc,SAAS;AACvB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,SAAS;AACvB,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;;AAEA;AACA;AACA,eAAc,OAAO;AACrB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","file":"biojs_phylocanvas.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d3d60c90002f765885ab","define( [ 'utilities/utils', 'plugins/biojs/phylocanvas/phylocanvas' ], function( Utils, Phylocanvas ) {\n return Backbone.Model.extend({\n initialize: function( options ) {\n var chart = options.chart,\n dataset = options.dataset,\n settings = options.chart.settings;\n\n Utils.get( {\n url : dataset.download_url,\n success : function( content ) {\n try {\n var tree = Phylocanvas.default.createTree( options.targets[ 0 ] ),\n node_size = 20,\n text_size = 20,\n line_width = 2;\n // Set different properties of the tree\n tree.setTreeType( settings.get( 'tree_type' ) );\n tree.branchColour = settings.get( 'edge_color' );\n tree.showLabels = settings.get( 'show_labels' ) === \"true\" ? true : false;\n tree.alignLabels = settings.get( 'align_labels' ) === \"true\" ? true : false;\n tree.highlightColour = settings.get( 'highlighted_color' );\n tree.selectedColour = settings.get( 'selected_color' );\n tree.setNodeSize( node_size );\n tree.setTextSize( text_size );\n tree.lineWidth = line_width;\n\n // Register click event on tree\n tree.on('click', function (e) {\n var node = tree.getNodeAtMousePosition( e );\n // Here collapse action is taking preference.\n // Whenver collapse and prune both are selected true,\n // collapse action will be performed\n // Collapse the selected branch\n if( settings.get( 'collapse_branch' ) === \"true\" ) {\n tree.branches[ node.id ].collapsed = true;\n tree.draw();\n }// Prune the selected branch\n else if( settings.get( 'prune_branch' ) === \"true\" ) {\n tree.branches[ node.id ].pruned = true;\n tree.draw();\n }\n });\n // Draw the phylogenetic tree\n tree.load( content );\n chart.state( 'ok', 'Done.' );\n options.process.resolve();\n // Adjust the size of tree on window resize\n $( window ).resize( function() {\n tree.fitInPanel( tree.leaves ); tree.draw();\n } );\n } catch( err ) {\n chart.state( 'failed', err );\n }\n },\n error: function() {\n chart.state( 'failed', 'Failed to access dataset.' );\n options.process.resolve();\n }\n });\n }\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./static/repository/visualizations/biojs/phylocanvas/wrapper.js\n// module id = 0\n// module chunks = 0","/** Useful helper functions */\ndefine( [], function() {\n\n /** Clone */\n function clone( obj ) {\n return JSON.parse( JSON.stringify( obj ) || null );\n };\n\n /**\n * Check if a string is a json string\n * @param{String} text - Content to be validated\n */\n function isJSON(text) {\n return /^[\\],:{}\\s]*$/.test(text.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@').\n replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']').\n replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''));\n };\n\n /**\n * Request handler for GET\n * @param{String} url - Url request is made to\n * @param{Function} success - Callback on success\n * @param{Function} error - Callback on error\n * @param{Boolean} cache - Use cached data if available\n */\n function get (options) {\n top.__utils__get__ = top.__utils__get__ || {};\n var cache_key = JSON.stringify( options );\n if (options.cache && top.__utils__get__[cache_key]) {\n options.success && options.success(top.__utils__get__[cache_key]);\n window.console.debug('utils.js::get() - Fetching from cache [' + options.url + '].');\n } else {\n request({\n url : options.url,\n data : options.data,\n success : function(response) {\n top.__utils__get__[cache_key] = response;\n options.success && options.success(response);\n },\n error : function(response) {\n options.error && options.error(response);\n }\n });\n }\n };\n\n /**\n * Request handler\n * @param{String} method - Request method ['GET', 'POST', 'DELETE', 'PUT']\n * @param{String} url - Url request is made to\n * @param{Object} data - Data send to url\n * @param{Function} success - Callback on success\n * @param{Function} error - Callback on error\n */\n function request (options) {\n var ajaxConfig = {\n contentType : 'application/json',\n type : options.type || 'GET',\n data : options.data || {},\n url : options.url\n }\n if ( ajaxConfig.type == 'GET' || ajaxConfig.type == 'DELETE' ) {\n if ( !$.isEmptyObject(ajaxConfig.data) ) {\n ajaxConfig.url += ajaxConfig.url.indexOf('?') == -1 ? '?' : '&';\n ajaxConfig.url += $.param(ajaxConfig.data, true);\n }\n ajaxConfig.data = null;\n } else {\n ajaxConfig.dataType = 'json';\n ajaxConfig.url = ajaxConfig.url;\n ajaxConfig.data = JSON.stringify( ajaxConfig.data );\n }\n $.ajax( ajaxConfig ).done( function( response ) {\n if ( typeof response === 'string' && isJSON( response ) ) {\n try {\n response = response.replace( 'Infinity,', '\"Infinity\",' );\n response = jQuery.parseJSON( response );\n } catch ( e ) {\n console.debug( e );\n }\n }\n options.success && options.success( response );\n }).fail( function( response ) {\n var response_text = null;\n try {\n response_text = jQuery.parseJSON( response.responseText );\n } catch (e) {\n response_text = response.responseText;\n }\n options.error && options.error( response_text, response );\n }).always( function() {\n options.complete && options.complete();\n });\n };\n\n /**\n * Safely merge to dictionaries\n * @param{Object} options - Target dictionary\n * @param{Object} optionsDefault - Source dictionary\n */\n function merge (options, optionsDefault) {\n if (options) {\n return _.defaults(options, optionsDefault);\n } else {\n return optionsDefault;\n }\n };\n\n /** Create a unique id */\n function uid(){\n top.__utils__uid__ = top.__utils__uid__ || 0;\n return 'uid-' + top.__utils__uid__++;\n };\n\n return {\n get : get,\n merge : merge,\n uid : uid,\n request : request,\n clone : clone,\n isJSON : isJSON\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./static/repository/utilities/utils.js\n// module id = 1\n// module chunks = 0","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.Phylocanvas=t():e.Phylocanvas=t()}(this,function(){return function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={exports:{},id:a,loaded:!1};return e[a].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p=\"/dist/\",t(0)}([function(e,t,n){\"use strict\";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t,n){var a=e[t]?e:e.prototype,r=a[t];a[t]=function(){for(var e=arguments.length,t=Array(e),a=0;a1&&void 0!==arguments[1]?arguments[1]:{};return new h.default(e,t)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.utils=t.nodeRenderers=t.treeTypes=t.Parser=t.Tooltip=t.Prerenderer=t.Branch=t.Tree=void 0;var o=n(1),h=r(o),c=n(7),u=r(c),d=n(11),f=r(d),v=n(27),g=r(v),y=n(29),p=r(y),b=n(8),m=r(b),x=n(26),S=r(x),k=n(2),w=a(k);t.Tree=h.default,t.Branch=u.default,t.Prerenderer=f.default,t.Tooltip=g.default,t.Parser=p.default,t.treeTypes=m.default,t.nodeRenderers=S.default,t.utils=w,t.default={plugin:s,createTree:l}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{};i(this,e),this._point={x:0,y:0},this.containerElement=\"string\"==typeof t?document.getElementById(t):t,g(this.containerElement,\"pc-container\"),this.branches={},this.leaves=[],this.root=!1,this.stringRepresentation=\"\",this.backColour=!1,this.originalTree={},\"static\"===window.getComputedStyle(this.containerElement).position&&(this.containerElement.style.position=\"relative\"),this.containerElement.style.boxSizing=\"border-box\";var r=document.createElement(\"canvas\");r.id=(this.containerElement.id||\"\")+\"__canvas\",r.className=\"phylocanvas\",r.style.position=\"relative\",r.height=t.offsetHeight||400,r.width=t.offsetWidth||400,r.style.zIndex=\"1\",this.containerElement.appendChild(r),this.canvas=r.getContext(\"2d\"),this.canvas.canvas.onselectstart=function(){return!1},this.canvas.fillStyle=\"#000000\",this.canvas.strokeStyle=\"#000000\",this.canvas.save(),this.collapsedColour=\"rgba(0, 0, 0, 0.5)\",this.defaultCollapsed={},this.tooltip=new c.ChildNodesTooltip(this),this.drawn=!1,this.highlighters=[],this.zoom=1,this.zoomFactor=3,this.disableZoom=!1,this.fillCanvas=!1,this.branchScaling=!0,this.currentBranchScale=1,this.branchScalingStep=1.2,this.pickedup=!1,this.dragging=!1,this.startx=null,this.starty=null,this.baseNodeSize=1,this.origx=null,this.origy=null,this.offsetx=this.canvas.canvas.width/2,this.offsety=this.canvas.canvas.height/2,this.selectedColour=\"rgba(49,151,245,1)\",this.highlightColour=\"rgba(49,151,245,1)\",this.highlightWidth=4,this.highlightSize=2,this.branchColour=\"rgba(0,0,0,1)\",this.branchScalar=1,this.padding=50,this.labelPadding=5,this.multiSelect=!0,this.clickFlag=\"selected\",this.clickFlagPredicate=w.tautology,this.hoverLabel=!1,this.internalNodesSelectable=!0,this.showLabels=!0,this.showBranchLengthLabels=!1,this.branchLengthLabelPredicate=w.tautology,this.showInternalNodeLabels=!1,this.internalLabelStyle={colour:this.branchColour,textSize:this.textSize,font:this.font,format:\"\"},this.setTreeType(\"radial\"),this.maxBranchLength=0,this.lineWidth=1,this.textSize=7,this.font=\"sans-serif\",this.unselectOnClickAway=!0,this.farthestNodeFromRootX=0,this.farthestNodeFromRootY=0,this.shiftKeyDrag=!1,this.maxLabelLength={},Object.assign(this,a),this.resizeToContainer(),this.eventListeners={};var s=Object.assign({click:{listener:this.clicked.bind(this)},mousedown:{listener:this.pickup.bind(this)},mouseup:{listener:this.drop.bind(this)},mouseout:{listener:this.drop.bind(this)},mousemove:{target:this.canvas.canvas,listener:this.drag.bind(this)},mousewheel:{target:this.canvas.canvas,listener:this.scroll.bind(this)},DOMMouseScroll:{target:this.canvas.canvas,listener:this.scroll.bind(this)},resize:{target:window,listener:function(){n.resizeToContainer(),n.draw()}}},a.eventListeners||{}),l=!0,o=!1,h=void 0;try{for(var u,d=Object.keys(s)[Symbol.iterator]();!(l=(u=d.next()).done);l=!0){var f=u.value,v=s[f],y=v.listener,p=v.target;this.addListener(f,y,p)}}catch(e){o=!0,h=e}finally{try{!l&&d.return&&d.return()}finally{if(o)throw h}}}return s(e,[{key:\"removeEventListeners\",value:function(){var e=!0,t=!1,n=void 0;try{for(var a,r=Object.keys(this.eventListeners)[Symbol.iterator]();!(e=(a=r.next()).done);e=!0){var i=a.value,s=!0,l=!1,o=void 0;try{for(var h,c=this.eventListeners[i][Symbol.iterator]();!(s=(h=c.next()).done);s=!0){var u=h.value,d=u.target,f=u.listener;x(d||this.containerElement,i,f)}}catch(e){l=!0,o=e}finally{try{!s&&c.return&&c.return()}finally{if(l)throw o}}}}catch(e){t=!0,n=e}finally{try{!e&&r.return&&r.return()}finally{if(t)throw n}}}},{key:\"setInitialCollapsedBranches\",value:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root;if(e=n.getChildProperties(\"id\"),e&&e.length>this.defaultCollapsed.min&&e.length1&&void 0!==arguments[1])||arguments[1];return this.leaves.reduce(function(n,a){return a[e]===t&&n.push(a.id),n},[])}},{key:\"clicked\",value:function(e){var t;if(0===e.button){var n=[];if(this.dragging)return void(this.dragging=!1);if(!this.root)return!1;t=this.getNodeAtMousePosition(e);var a=this.multiSelect&&(e.metaKey||e.ctrlKey);if(t&&t.interactive)if(a){if(t.leaf)t[this.clickFlag]=!t[this.clickFlag];else if(this.internalNodesSelectable){var r=t.getChildProperties(this.clickFlag).some(function(e){return e===!1});t.cascadeFlag(this.clickFlag,r,this.clickFlagPredicate)}n=this.getNodeIdsWithFlag(this.clickFlag),this.draw()}else this.root.cascadeFlag(this.clickFlag,!1,this.clickFlagPredicate),(this.internalNodesSelectable||t.leaf)&&(t.cascadeFlag(this.clickFlag,!0,this.clickFlagPredicate),n=t.getChildProperties(\"id\")),this.draw();else!this.unselectOnClickAway||this.dragging||a||(this.root.cascadeFlag(this.clickFlag,!1,this.clickFlagPredicate),this.draw());this.pickedup||(this.dragging=!1),this.nodesUpdated(n,this.clickFlag)}}},{key:\"drag\",value:function(e){var t=S(this.canvas);if(!this.drawn)return!1;if(this.pickedup){var n=(e.clientX-this.startx)*t,a=(e.clientY-this.starty)*t;Math.abs(n)+Math.abs(a)>5&&(this.dragging=!0,this.offsetx=this.origx+n,this.offsety=this.origy+a,this.draw())}else{var r=e,i=this.getNodeAtMousePosition(r);i&&i.interactive&&(this.internalNodesSelectable||i.leaf)?(this.root.cascadeFlag(\"hovered\",!1),i.hovered=!0,i.leaf||i.hasCollapsedAncestor()||this.tooltip.open(r.clientX,r.clientY,i),this.containerElement.style.cursor=\"pointer\"):(this.tooltip.close(),this.root.cascadeFlag(\"hovered\",!1),this.shiftKeyDrag&&r.shiftKey?y(this.containerElement):this.containerElement.style.cursor=\"auto\"),this.draw()}}},{key:\"draw\",value:function(e){if(this.highlighters.length=0,0===this.maxBranchLength)return void this.loadError(new Error(\"All branches in the tree are identical.\"));this.canvas.clearRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height),this.canvas.lineCap=\"round\",this.canvas.lineJoin=\"round\",this.canvas.strokeStyle=this.branchColour,this.canvas.save(),this.drawn&&!e||(this.prerenderer.run(this),e||this.fitInPanel());var t=S(this.canvas);this.canvas.lineWidth=this.lineWidth/this.zoom,this.canvas.translate(this.offsetx*t,this.offsety*t),this.canvas.scale(this.zoom,this.zoom),this.branchRenderer.render(this,this.root),this.highlighters.forEach(function(e){return e()}),this.drawn=!0,this.canvas.restore()}},{key:\"pickup\",value:function(e){if(!this.shiftKeyDrag||e.shiftKey){if(!this.drawn)return!1;this.origx=this.offsetx,this.origy=this.offsety,0===e.button&&(this.pickedup=!0,p(this.containerElement)),this.startx=e.clientX,this.starty=e.clientY}}},{key:\"drop\",value:function(e){return!!this.drawn&&(this.pickedup=!1,void(this.shiftKeyDrag&&e.shiftKey?y(this.containerElement):this.containerElement.style.cursor=\"auto\"))}},{key:\"scroll\",value:function(e){if(!(this.disableZoom||\"wheelDelta\"in e&&0===e.wheelDelta)){e.preventDefault(),this._point.x=e.offsetX,this._point.y=e.offsetY;var t=e.detail<0||e.wheelDelta>0?1:-1;this.branchScaling&&(e.metaKey||e.ctrlKey)?(this.currentBranchScale*=Math.pow(this.branchScalingStep,t),this.setBranchScale(this.currentBranchScale,this._point)):this.smoothZoom(t,this._point)}}},{key:\"findLeaves\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"id\",n=[],a=!0,r=!1,i=void 0;try{for(var s,l=this.leaves[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var o=s.value;o[t]&&o[t].match(e)&&n.push(o)}}catch(e){r=!0,i=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw i}}return n}},{key:\"updateLeaves\",value:function(e,t,n){var a=!0,r=!1,i=void 0;try{for(var s,l=this.leaves[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var o=s.value;o[t]=!n}}catch(e){r=!0,i=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw i}}var h=!0,c=!1,u=void 0;try{for(var d,f=e[Symbol.iterator]();!(h=(d=f.next()).done);h=!0){var v=d.value;v[t]=n}}catch(e){c=!0,u=e}finally{try{!h&&f.return&&f.return()}finally{if(c)throw u}}this.nodesUpdated(e.map(function(e){return e.id}),t)}},{key:\"clearSelect\",value:function(){this.root.cascadeFlag(\"selected\",!1),this.draw()}},{key:\"getPngUrl\",value:function(){return this.canvas.canvas.toDataURL()}},{key:\"load\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],a=t,r=n;if(\"function\"==typeof t&&(r=t,a={}),r&&(a.callback=r),a.format)return void this.build(e,v.default[a.format],a);var i=!0,s=!1,l=void 0;try{for(var o,h=Object.keys(v.default)[Symbol.iterator]();!(i=(o=h.next()).done);i=!0){var c=o.value,u=v.default[c];if(e.match(u.fileExtension)||e.match(u.validator))return void this.build(e,u,a)}}catch(e){s=!0,l=e}finally{try{!i&&h.return&&h.return()}finally{if(s)throw l}}var d=new Error(\"String not recognised as a file or a parseable format string\");r&&r(d),this.loadError(d)}},{key:\"saveOriginalTree\",value:function(){this.originalTree.branches=this.branches,this.originalTree.leaves=this.leaves,this.originalTree.root=this.root,this.originalTree.branchLengths={},this.originalTree.parents={}}},{key:\"clearState\",value:function(){this.root=!1,this.leaves=[],this.branches={},this.drawn=!1}},{key:\"extractNestedBranches\",value:function(){this.branches={},this.leaves=[],this.storeNode(this.root),this.root.extractChildren()}},{key:\"saveState\",value:function(){if(this.extractNestedBranches(),this.root.branchLength=0,this.maxBranchLength=0,this.root.setTotalLength(),0===this.maxBranchLength)return void this.loadError(new Error(\"All branches in the tree are identical.\"))}},{key:\"build\",value:function(e,t,n){var a=this;this.originalTree={},this.clearState(),h.default.lastId=0;var r=new h.default;r.id=\"root\",this.branches.root=r,this.setRoot(r),t.parse({formatString:e,root:r,options:n},function(t){return t?(n.callback&&n.callback(t),void a.loadError(t)):(a.stringRepresentation=e,a.saveState(),a.setInitialCollapsedBranches(),a.beforeFirstDraw(),a.draw(),a.saveOriginalTree(),n.callback&&n.callback(),void a.loadCompleted())})}},{key:\"redrawFromBranch\",value:function(e){this.clearState(),this.resetTree(),this.originalTree.branchLengths[e.id]=e.branchLength,this.originalTree.parents[e.id]=e.parent,this.root=e,this.root.parent=!1,this.saveState(),this.draw(),this.subtreeDrawn(e.id)}},{key:\"redrawOriginalTree\",value:function(){this.load(this.stringRepresentation)}},{key:\"storeNode\",value:function(e){if(e.id&&\"\"!==e.id||(e.id=h.default.generateId()),this.branches[e.id]&&e!==this.branches[e.id]){if(e.leaf)throw new Error(\"Two nodes on this tree share the id \"+e.id);e.id=h.default.generateId()}this.branches[e.id]=e,e.leaf&&this.leaves.push(e)}},{key:\"setNodeSize\",value:function(e){this.baseNodeSize=Number(e),this.draw()}},{key:\"setRoot\",value:function(e){e.tree=this,this.root=e}},{key:\"setTextSize\",value:function(e){this.textSize=Number(e),this.draw()}},{key:\"setFontSize\",value:function(e){this.textSize=this.calculateFontSize?this.calculateFontSize(e):Math.min(e/2,15),this.canvas.font=this.textSize+\"pt \"+this.font}},{key:\"setTreeType\",value:function(e,t){if(!(e in d.default))return b(this.containerElement,\"error\",{error:new Error('\"'+e+'\" is not a known tree-type.')});var n=this.treeType;this.treeType=e,this.type=d.default[e],this.branchRenderer=d.default[e].branchRenderer,this.prerenderer=d.default[e].prerenderer,this.labelAlign=d.default[e].labelAlign,this.calculateFontSize=d.default[e].calculateFontSize,this.drawn&&(this.drawn=!1,this.draw()),t||this.treeTypeChanged(n,e)}},{key:\"setSize\",value:function(e,t){this.canvas.canvas.width=e,this.canvas.canvas.height=t,this.navigator&&this.navigator.resize(),this.adjustForPixelRatio()}},{key:\"adjustForPixelRatio\",value:function(){var e=S(this.canvas);this.canvas.canvas.style.height=this.canvas.canvas.height+\"px\",this.canvas.canvas.style.width=this.canvas.canvas.width+\"px\",e>1&&(this.canvas.canvas.width*=e,this.canvas.canvas.height*=e)}},{key:\"getCentrePoint\",value:function(){var e=S(this.canvas);return{x:this.canvas.canvas.width/2/e,y:this.canvas.canvas.height/2/e}}},{key:\"setZoom\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCentrePoint(),n=t.x,a=t.y;if(e>0){var r=this.zoom;this.zoom=e,this.offsetx=this.calculateZoomedOffset(this.offsetx,n,r,e),this.offsety=this.calculateZoomedOffset(this.offsety,a,r,e),this.draw()}}},{key:\"smoothZoom\",value:function(e,t){this.setZoom(Math.pow(10,Math.log(this.zoom)/Math.log(10)+e*this.zoomFactor*.01),t)}},{key:\"calculateZoomedOffset\",value:function(e,t,n,a){return-1*((-1*e+t)/n*a-t)}},{key:\"setBranchScale\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:this.canvas.canvas.width/2,y:this.canvas.canvas.height/2},n=d.default[this.treeType];if(n.branchScalingAxis&&!(e<0)){var a=this.branchScalar;this.branchScalar=this.initialBranchScalar*e;var r=this.branchScalar/a,i=this[\"offset\"+n.branchScalingAxis],s=t[n.branchScalingAxis],l=(t[n.branchScalingAxis]-i)*r+i;this[\"offset\"+n.branchScalingAxis]+=s-l,this.draw()}}},{key:\"toggleLabels\",value:function(){this.showLabels=!this.showLabels,this.draw()}},{key:\"setMaxLabelLength\",value:function(){var e;void 0===this.maxLabelLength[this.treeType]&&(this.maxLabelLength[this.treeType]=0);for(var t=0;tthis.maxLabelLength[this.treeType]&&(this.maxLabelLength[this.treeType]=e.width)}},{key:\"loadStarted\",value:function(){b(this.containerElement,\"loading\")}},{key:\"beforeFirstDraw\",value:function(){b(this.containerElement,\"beforeFirstDraw\")}},{key:\"loadCompleted\",value:function(){b(this.containerElement,\"loaded\")}},{key:\"loadError\",value:function(e){b(this.containerElement,\"error\",{error:e})}},{key:\"subtreeDrawn\",value:function(e){b(this.containerElement,\"subtree\",{node:e})}},{key:\"nodesUpdated\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];b(this.containerElement,\"updated\",{nodeIds:e,property:t,append:n})}},{key:\"treeTypeChanged\",value:function(e,t){b(this.containerElement,\"typechanged\",{oldType:e,newType:t})}},{key:\"addListener\",value:function(e,t,n){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push({listener:t,target:n}),m(n||this.containerElement,e,t)}},{key:\"removeListener\",value:function(e,t,n){x(n||this.containerElement,e,t)}},{key:\"getBounds\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.leaves,t=e===this.leaves?this.root:e[0],n=t.startx,a=t.startx,r=t.starty,i=t.starty,s=!0,l=!1,o=void 0;try{for(var h,c=e[Symbol.iterator]();!(s=(h=c.next()).done);s=!0){var u=h.value,d=u.getBounds();n=Math.min(n,d.minx),a=Math.max(a,d.maxx),r=Math.min(r,d.miny),i=Math.max(i,d.maxy)}}catch(e){l=!0,o=e}finally{try{!s&&c.return&&c.return()}finally{if(l)throw o}}return[[n,r],[a,i]]}},{key:\"fitInPanel\",value:function(e){this.zoom=1;var t=this.getBounds(e),n=[this.canvas.canvas.width-2*this.padding,this.canvas.canvas.height-2*this.padding],a=[t[1][0]-t[0][0],t[1][1]-t[0][1]],r=S(this.canvas),i=n[0]/a[0],s=n[1]/a[1];this.zoom=Math.min(i,s),this.offsetx=-1*t[0][0]*this.zoom,this.offsety=-1*t[0][1]*this.zoom,i>s?(this.offsetx+=this.padding+(n[0]-a[0]*this.zoom)/2,this.offsety+=this.padding):(this.offsetx+=this.padding,this.offsety+=this.padding+(n[1]-a[1]*this.zoom)/2),this.offsetx=this.offsetx/r,this.offsety=this.offsety/r}},{key:\"resetTree\",value:function(){if(this.originalTree.branches){this.branches=this.originalTree.branches;var e=!0,t=!1,n=void 0;try{for(var a,r=Object.keys(this.originalTree.branchLengths)[Symbol.iterator]();!(e=(a=r.next()).done);e=!0){var i=a.value;this.branches[i].branchLength=this.originalTree.branchLengths[i],this.branches[i].parent=this.originalTree.parents[i]}}catch(e){t=!0,n=e}finally{try{!e&&r.return&&r.return()}finally{if(t)throw n}}this.leaves=this.originalTree.leaves,this.root=this.originalTree.root}}},{key:\"rotateBranch\",value:function(e){this.branches[e.id].rotate()}},{key:\"exportNwk\",value:function(){var e=this.root.getNwk();return e.substr(0,e.lastIndexOf(\")\")+1)+\";\"}},{key:\"resizeToContainer\",value:function(){this.setSize(this.containerElement.offsetWidth,this.containerElement.offsetHeight)}},{key:\"cleanup\",value:function(){this.removeEventListeners()}},{key:\"alignLabels\",get:function(){return this.showLabels&&this.labelAlign&&this.labelAlignEnabled},set:function(e){this.labelAlignEnabled=e}}]),e}();L.prototype.on=L.prototype.addListener,L.prototype.off=L.prototype.removeListener,t.default=L},function(e,t,n){\"use strict\";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Object.defineProperty(t,\"__esModule\",{value:!0}),t.events=t.dom=t.constants=t.canvas=void 0;var r=n(3),i=a(r),s=n(6),l=a(s),o=n(4),h=a(o),c=n(5),u=a(c);t.canvas=i,t.constants=l,t.dom=h,t.events=u},function(e,t,n){\"use strict\";function a(e){return e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||1}function r(e){return(window.devicePixelRatio||1)/a(e)}function i(e,t){var n=r(t.canvas);return[(e.offsetX-t.offsetx)/t.zoom*n,(e.offsetY-t.offsety)/t.zoom*n]}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{x:0,y:0},t=e.x,n=e.y,a=arguments[1],i=r(a.canvas);return{x:(t-a.offsetx)/a.zoom*i,y:(n-a.offsety)/a.zoom*i}}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{x:0,y:0},t=e.x,n=e.y,a=arguments[1],i=r(a.canvas);return{x:t/i*a.zoom+a.offsetx,y:n/i*a.zoom+a.offsety}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.getBackingStorePixelRatio=a,t.getPixelRatio=r,t.translateClick=i,t.translatePoint=s,t.undoPointTranslation=l;n(4)},function(e,t,n){\"use strict\";function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"text/plain;charset=utf-8\",n=new Blob([e],{type:t});return f.createObjectURL(n)}function r(e,t){var n=document.createElement(\"a\"),a=\"undefined\"!=typeof n.download;n.href=e,n.target=\"_blank\",a&&(n.download=t),(0,d.fireEvent)(n,\"click\"),a&&f.revokeObjectURL(n.href)}function i(e){for(var t=0;e;)t+=e.offsetLeft,e=e.offsetParent;return t}function s(e){for(var t=0;e;)t+=e.offsetTop,e=e.offsetParent;return t}function l(e,t){var n=e.className.split(\" \");n.indexOf(t)===-1&&(n.push(t),e.className=n.join(\" \"))}function o(e,t){var n=e.className.split(\" \"),a=n.indexOf(t);a!==-1&&(n.splice(a,1),e.className=n.join(\" \"))}function h(e,t){var n=e.className.split(\" \"),a=n.indexOf(t);return a!==-1}function c(e){e.style.cursor=\"-webkit-grabbing\",e.style.cursor=\"-moz-grabbing\",e.style.cursor=\"grabbing\"}function u(e){e.style.cursor=\"-webkit-grab\",e.style.cursor=\"-moz-grab\",e.style.cursor=\"grab\"}Object.defineProperty(t,\"__esModule\",{value:!0}),t.createBlobUrl=a,t.setupDownloadLink=r,t.getX=i,t.getY=s,t.addClass=l,t.removeClass=o,t.hasClass=h,t.setCursorDragging=c,t.setCursorDrag=u;var d=n(5),f=window.URL||window.webkitURL},function(e,t){\"use strict\";function n(e){return e.preventDefault(),!1}function a(e,t){var n,a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};document.createEvent?(n=document.createEvent(\"HTMLEvents\"),n.initEvent(t,!0,!0)):(n=document.createEventObject(),n.eventType=t),n.eventName=t;for(a in r)r.hasOwnProperty(a)&&(n[a]=r[a]);document.createEvent?e.dispatchEvent(n):e.fireEvent(\"on\"+n.eventType,n)}function r(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent(\"on\"+t,function(){return n.call(e,window.event)})}function i(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):console.warn(\"[Phylocanvas] Unable to remove event, removeEventListener not supported\")}function s(e){e.stopPropagation(),e.preventDefault()}function l(e,t){var n;return n=(\"undefined\"==typeof t?\"undefined\":o(t))===o(\"aaa\")?function(n){if(e[t])return e[t](n)}:function(){return t(e)}}Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.preventDefault=n,t.fireEvent=a,t.addEvent=r,t.removeEvent=i,t.killEvent=s,t.createHandler=l},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.Angles={FORTYFIVE:Math.PI/4,QUARTER:Math.PI/2,HALF:Math.PI,FULL:2*Math.PI},t.Shapes={x:\"star\",s:\"square\",o:\"circle\",t:\"triangle\"},t.Predicates={tautology:function(){return!0},contradiction:function(){return!1},leafOnly:function(e){return e.leaf},nonLeaf:function(e){return!e.leaf}}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;nthis.minx&&tthis.miny)return this;for(var n=this.children.length-1;n>=0;n--){var a=this.children[n].clicked(e,t);if(a)return a}}},{key:\"drawLabel\",value:function(){var e=this.getTextSize(),t=this.getLabel();this.canvas.font=this.getFontString(),this.labelWidth=this.canvas.measureText(t).width,void 0===this.tree.maxLabelLength[this.tree.treeType]&&(this.tree.maxLabelLength[this.tree.treeType]=0),this.labelWidth>this.tree.maxLabelLength[this.tree.treeType]&&(this.tree.maxLabelLength[this.tree.treeType]=this.labelWidth);var n=this.getLabelStartX();this.tree.alignLabels&&(n+=Math.abs(this.tree.labelAlign.getLabelOffset(this))),this.angle>u.QUARTER&&this.angleu.QUARTER&&this.anglethis.tree.maxBranchLength&&(this.tree.maxBranchLength=this.totalBranchLength)):(this.totalBranchLength=this.branchLength,this.tree.maxBranchLength=this.totalBranchLength),e=0;e0&&void 0!==arguments[0])||arguments[0];if(this.leaf)return this.label+\":\"+this.branchLength;var t=this.children.map(function(e){return e.getNwk(!1)});return\"(\"+t.join(\",\")+\"):\"+this.branchLength+(e?\";\":\"\")}},{key:\"getTextColour\",value:function(){if(this.selected)return this.tree.selectedColour;if(this.isHighlighted)return this.tree.highlightColour;if(this.tree.backColour&&this.children.length){var e=this.getChildColours();if(1===e.length)return e[0]}return this.labelStyle.colour||this.colour||this.tree.branchColour}},{key:\"getLabel\",value:function(){return void 0!==this.label&&null!==this.label?this.label:\"\";\n}},{key:\"getTextSize\",value:function(){return this.labelStyle.textSize||this.tree.textSize}},{key:\"getFontString\",value:function(){var e=this.labelStyle.font||this.tree.font;return(this.labelStyle.format||\"\")+\" \"+this.getTextSize()+\"pt \"+e}},{key:\"getLabelSize\",value:function(){return this.canvas.font=this.getFontString(),this.canvas.measureText(this.getLabel()).width}},{key:\"getRadius\",value:function(){var e=this.tree.baseNodeSize;return this.leaf?e*this.radius:e/this.radius}},{key:\"getDiameter\",value:function(){return 2*this.getRadius()}},{key:\"hasLabelConnector\",value:function(){return!!this.tree.alignLabels&&this.tree.labelAlign.getLabelOffset(this)>this.getDiameter()}},{key:\"getLabelStartX\",value:function(){var e=this.getLeafStyle(),t=(e.lineWidth,this.hasLabelConnector()),n=this.getDiameter();return this.isHighlighted&&!t&&(n+=this.getHighlightSize()-this.getRadius()),n+Math.min(this.tree.labelPadding,this.tree.labelPadding/this.tree.zoom)}},{key:\"getHighlightLineWidth\",value:function(){return this.tree.highlightWidth/this.tree.zoom}},{key:\"getHighlightRadius\",value:function(){var e=this.getHighlightLineWidth()*this.tree.highlightSize;return e+=this.getLeafStyle().lineWidth/this.tree.highlightSize,this.leaf?this.getRadius()+e:.666*e}},{key:\"getHighlightSize\",value:function(){return this.getHighlightRadius()+this.getHighlightLineWidth()}},{key:\"rotate\",value:function(){for(var e=[],t=this.children.length;t--;)e.push(this.children[t]);this.children=e,this.tree.extractNestedBranches(),this.tree.draw(!0)}},{key:\"getChildNo\",value:function(){return this.parent.children.indexOf(this)}},{key:\"setDisplay\",value:function(e){var t=e.colour,n=e.shape,a=e.size,r=e.leafStyle,i=e.labelStyle;t&&(this.colour=t),n&&(this.nodeShape=d[n]?d[n]:n),a&&(this.radius=a),r&&(this.leafStyle=r),i&&(this.labelStyle=i)}},{key:\"getTotalLength\",value:function(){var e=this.getRadius();return(this.tree.showLabels||this.tree.hoverLabel&&this.isHighlighted)&&(e+=this.getLabelStartX()+this.getLabelSize()),e}},{key:\"getBounds\",value:function(){var e=this.tree,t=e.alignLabels?e.labelAlign.getX(this):this.centerx,n=e.alignLabels?e.labelAlign.getY(this):this.centery,a=this.getRadius(),r=this.getTotalLength(),i=void 0,s=void 0,l=void 0,o=void 0;this.angle>u.QUARTER&&this.angle0?e.leaves[n-1].centery+t:0,e.leaves[n].centerx=e.leaves[n].totalBranchLength*e.branchScalar,e.leaves[n].centerx>e.farthestNodeFromRootX&&(e.farthestNodeFromRootX=e.leaves[n].centerx),e.leaves[n].centery>e.farthestNodeFromRootY&&(e.farthestNodeFromRootY=e.leaves[n].centery);for(var a=e.leaves[n];a.parent;a=a.parent){var r=a.parent.children;a.parent.centery=(r[0].centery+r[r.length-1].centery)/2}}}}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(10),i=a(r),s=n(11),l=a(s),o=n(15),h=a(o),c=n(16),u=a(c),d={getX:function(e){return e.centerx+e.labelOffsetX+e.getDiameter()*Math.cos(e.angle)},getY:function(e){return e.centery+e.labelOffsetY+e.getDiameter()*Math.sin(e.angle)},getLabelOffset:function(e){return e.labelOffsetX/Math.cos(e.angle)}};t.default={branchRenderer:new i.default(h.default),prerenderer:new l.default(u.default),labelAlign:d,getCollapsedMeasurements:function(e){var t=e.tree,n=t.maxBranchLength,a=t.branchScalar,r=t.step;return{angle:e.getNumberOfLeaves()*r,radius:(n-e.totalBranchLength)*a}},calculateFontSize:function(e){return Math.min(10*e+4,40)}}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={draw:function(e,t){var n=t.totalBranchLength*e.branchScalar;t.canvas.beginPath(),t.canvas.moveTo(t.startx,t.starty),t.canvas.lineTo(t.centerx,t.centery),t.canvas.stroke(),t.canvas.closePath(),t.canvas.strokeStyle=t.getColour(),t.children.length>1&&!t.collapsed&&(t.canvas.beginPath(),t.canvas.arc(0,0,n,t.minChildAngle,t.maxChildAngle,t.maxChildAnglen?n=e.branchScalar*e.maxBranchLength:e.branchScalar=n/e.maxBranchLength;for(var a=0;a0?e.leaves[n-1].centery+t:0,e.leaves[n].angle=0;for(var a=e.leaves[n];a.parent&&a.getChildNo()===a.parent.children.length-1;a=a.parent){a.parent.centery=a.parent.getChildYTotal()/a.parent.getChildCount(),a.parent.centerx=a.parent.children[0].centerx+(a.parent.children[0].centery-a.parent.centery)*Math.tan(r.FORTYFIVE);for(var i=0;i0?e.leaves[n-1].centerx+t:0,e.leaves[n].centery=e.leaves[n].totalBranchLength*e.branchScalar;for(var a=e.leaves[n];a.parent&&(0===a.getChildNo()&&(a.parent.centerx=a.centerx),a.getChildNo()===a.parent.children.length-1);a=a.parent){a.parent.angle=r.QUARTER,a.parent.centerx=(a.parent.centerx+a.centerx)/2,a.parent.centery=a.parent.totalBranchLength*e.branchScalar;for(var i=0;ie.farthestNodeFromRootX&&(e.farthestNodeFromRootX=e.leaves[n].centerx),e.leaves[n].centery>e.farthestNodeFromRootY&&(e.farthestNodeFromRootY=e.leaves[n].centery)}}}},function(e,t,n){\"use strict\";function a(e,t){e.beginPath(),e.moveTo(0,0),e.lineTo(t,0),e.stroke(),e.closePath()}function r(e,t){var n=t.lineWidth,a=t.strokeStyle,r=t.fillStyle;e.lineWidth=n,e.strokeStyle=a,e.fillStyle=r,e.fill(),n>0&&a!==r&&e.stroke()}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(2),s=i.constants.Angles,l=function(e){return e*Math.sqrt(2)};t.default={circle:function(e,t,n){var i=Math.pow(l(t),2),o=Math.sqrt(i/Math.PI);a(e,t-o),e.beginPath(),e.arc(t,0,o,0,s.FULL,!1),e.closePath(),r(e,n)},square:function(e,t,n){var i=l(t),s=t-i/2;a(e,s),e.beginPath(),e.moveTo(s,0),e.lineTo(s,i/2),e.lineTo(s+i,i/2),e.lineTo(s+i,-i/2),e.lineTo(s,-i/2),e.lineTo(s,0),e.closePath(),r(e,n)},star:function(e,t,n){var i=t,s=0,l=5,o=t,h=.5*o,c=Math.PI/l;a(e,o-h);var u=Math.PI/2*3;e.beginPath(),e.moveTo(i,s-o);for(var d=0;d1&&void 0!==arguments[1]?arguments[1]:{},a=n.className,i=void 0===a?\"phylocanvas-tooltip\":a,s=n.element,l=void 0===s?document.createElement(\"div\"):s,o=n.zIndex,h=void 0===o?2e3:o,c=n.parent,u=void 0===c?t.containerElement:c;r(this,e),this.tree=t,this.element=l,this.element.className=i,this.element.style.display=\"none\",this.element.style.position=\"fixed\",this.element.style.zIndex=h,this.closed=!0,u.appendChild(this.element)}return i(e,[{key:\"close\",value:function(){this.element.style.display=\"none\",this.closed=!0}},{key:\"open\",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=arguments[2];this.element.hasChildNodes();)this.element.removeChild(this.element.firstChild);this.createContent(n),this.element.style.top=t+\"px\",this.element.style.left=e+\"px\",this.element.style.display=\"block\",this.closed=!1}},{key:\"createContent\",value:function(){throw new Error(\"Not implemented\")}}]),e}();t.default=s;t.ChildNodesTooltip=function(e){function t(e,a){r(this,t);var i=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a));return i.element.style.background=\"rgba(97, 97, 97, 0.9)\",i.element.style.color=\"#fff\",i.element.style.cursor=\"pointer\",i.element.style.padding=\"8px\",i.element.style.marginTop=\"16px\",i.element.style.borderRadius=\"2px\",i.element.style.textAlign=\"center\",i.element.style.fontFamily=i.tree.font||\"sans-serif\",i.element.style.fontSize=\"10px\",i.element.style.fontWeight=\"500\",i}return a(t,e),i(t,[{key:\"createContent\",value:function(e){var t=document.createTextNode(e.getChildProperties(\"id\").length);this.element.appendChild(t)}}]),t}(s)},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(29),i=a(r),s=n(30),l=a(s),o=n(31),h=a(o);t.default={nexus:new i.default(h.default),newick:new i.default(l.default)}},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var a=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};return new h.default(e,t)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.utils=t.nodeRenderers=t.treeTypes=t.Parser=t.Tooltip=t.Prerenderer=t.Branch=t.Tree=void 0;var o=n(1),h=r(o),c=n(7),u=r(c),d=n(11),f=r(d),v=n(27),g=r(v),y=n(29),p=r(y),b=n(8),m=r(b),x=n(26),S=r(x),k=n(2),w=a(k);t.Tree=h.default,t.Branch=u.default,t.Prerenderer=f.default,t.Tooltip=g.default,t.Parser=p.default,t.treeTypes=m.default,t.nodeRenderers=S.default,t.utils=w,t.default={plugin:s,createTree:l}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{};i(this,e),this._point={x:0,y:0},this.containerElement=\"string\"==typeof t?document.getElementById(t):t,g(this.containerElement,\"pc-container\"),this.branches={},this.leaves=[],this.root=!1,this.stringRepresentation=\"\",this.backColour=!1,this.originalTree={},\"static\"===window.getComputedStyle(this.containerElement).position&&(this.containerElement.style.position=\"relative\"),this.containerElement.style.boxSizing=\"border-box\";var r=document.createElement(\"canvas\");r.id=(this.containerElement.id||\"\")+\"__canvas\",r.className=\"phylocanvas\",r.style.position=\"relative\",r.height=t.offsetHeight||400,r.width=t.offsetWidth||400,r.style.zIndex=\"1\",this.containerElement.appendChild(r),this.canvas=r.getContext(\"2d\"),this.canvas.canvas.onselectstart=function(){return!1},this.canvas.fillStyle=\"#000000\",this.canvas.strokeStyle=\"#000000\",this.canvas.save(),this.collapsedColour=\"rgba(0, 0, 0, 0.5)\",this.defaultCollapsed={},this.tooltip=new c.ChildNodesTooltip(this),this.drawn=!1,this.highlighters=[],this.zoom=1,this.zoomFactor=3,this.disableZoom=!1,this.fillCanvas=!1,this.branchScaling=!0,this.currentBranchScale=1,this.branchScalingStep=1.2,this.pickedup=!1,this.dragging=!1,this.startx=null,this.starty=null,this.baseNodeSize=1,this.origx=null,this.origy=null,this.offsetx=this.canvas.canvas.width/2,this.offsety=this.canvas.canvas.height/2,this.selectedColour=\"rgba(49,151,245,1)\",this.highlightColour=\"rgba(49,151,245,1)\",this.highlightWidth=4,this.highlightSize=2,this.branchColour=\"rgba(0,0,0,1)\",this.branchScalar=1,this.padding=50,this.labelPadding=5,this.multiSelect=!0,this.clickFlag=\"selected\",this.clickFlagPredicate=w.tautology,this.hoverLabel=!1,this.internalNodesSelectable=!0,this.showLabels=!0,this.showBranchLengthLabels=!1,this.branchLengthLabelPredicate=w.tautology,this.showInternalNodeLabels=!1,this.internalLabelStyle={colour:this.branchColour,textSize:this.textSize,font:this.font,format:\"\"},this.setTreeType(\"radial\"),this.maxBranchLength=0,this.lineWidth=1,this.textSize=7,this.font=\"sans-serif\",this.unselectOnClickAway=!0,this.farthestNodeFromRootX=0,this.farthestNodeFromRootY=0,this.shiftKeyDrag=!1,this.maxLabelLength={},Object.assign(this,a),this.resizeToContainer(),this.eventListeners={};var s=Object.assign({click:{listener:this.clicked.bind(this)},mousedown:{listener:this.pickup.bind(this)},mouseup:{listener:this.drop.bind(this)},mouseout:{listener:this.drop.bind(this)},mousemove:{target:this.canvas.canvas,listener:this.drag.bind(this)},mousewheel:{target:this.canvas.canvas,listener:this.scroll.bind(this)},DOMMouseScroll:{target:this.canvas.canvas,listener:this.scroll.bind(this)},resize:{target:window,listener:function(){n.resizeToContainer(),n.draw()}}},a.eventListeners||{}),l=!0,o=!1,h=void 0;try{for(var u,d=Object.keys(s)[Symbol.iterator]();!(l=(u=d.next()).done);l=!0){var f=u.value,v=s[f],y=v.listener,p=v.target;this.addListener(f,y,p)}}catch(e){o=!0,h=e}finally{try{!l&&d.return&&d.return()}finally{if(o)throw h}}}return s(e,[{key:\"removeEventListeners\",value:function(){var e=!0,t=!1,n=void 0;try{for(var a,r=Object.keys(this.eventListeners)[Symbol.iterator]();!(e=(a=r.next()).done);e=!0){var i=a.value,s=!0,l=!1,o=void 0;try{for(var h,c=this.eventListeners[i][Symbol.iterator]();!(s=(h=c.next()).done);s=!0){var u=h.value,d=u.target,f=u.listener;x(d||this.containerElement,i,f)}}catch(e){l=!0,o=e}finally{try{!s&&c.return&&c.return()}finally{if(l)throw o}}}}catch(e){t=!0,n=e}finally{try{!e&&r.return&&r.return()}finally{if(t)throw n}}}},{key:\"setInitialCollapsedBranches\",value:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.root;if(e=n.getChildProperties(\"id\"),e&&e.length>this.defaultCollapsed.min&&e.length1&&void 0!==arguments[1])||arguments[1];return this.leaves.reduce(function(n,a){return a[e]===t&&n.push(a.id),n},[])}},{key:\"clicked\",value:function(e){var t;if(0===e.button){var n=[];if(this.dragging)return void(this.dragging=!1);if(!this.root)return!1;t=this.getNodeAtMousePosition(e);var a=this.multiSelect&&(e.metaKey||e.ctrlKey);if(t&&t.interactive)if(a){if(t.leaf)t[this.clickFlag]=!t[this.clickFlag];else if(this.internalNodesSelectable){var r=t.getChildProperties(this.clickFlag).some(function(e){return e===!1});t.cascadeFlag(this.clickFlag,r,this.clickFlagPredicate)}n=this.getNodeIdsWithFlag(this.clickFlag),this.draw()}else this.root.cascadeFlag(this.clickFlag,!1,this.clickFlagPredicate),(this.internalNodesSelectable||t.leaf)&&(t.cascadeFlag(this.clickFlag,!0,this.clickFlagPredicate),n=t.getChildProperties(\"id\")),this.draw();else!this.unselectOnClickAway||this.dragging||a||(this.root.cascadeFlag(this.clickFlag,!1,this.clickFlagPredicate),this.draw());this.pickedup||(this.dragging=!1),this.nodesUpdated(n,this.clickFlag)}}},{key:\"drag\",value:function(e){var t=S(this.canvas);if(!this.drawn)return!1;if(this.pickedup){var n=(e.clientX-this.startx)*t,a=(e.clientY-this.starty)*t;Math.abs(n)+Math.abs(a)>5&&(this.dragging=!0,this.offsetx=this.origx+n,this.offsety=this.origy+a,this.draw())}else{var r=e,i=this.getNodeAtMousePosition(r);i&&i.interactive&&(this.internalNodesSelectable||i.leaf)?(this.root.cascadeFlag(\"hovered\",!1),i.hovered=!0,i.leaf||i.hasCollapsedAncestor()||this.tooltip.open(r.clientX,r.clientY,i),this.containerElement.style.cursor=\"pointer\"):(this.tooltip.close(),this.root.cascadeFlag(\"hovered\",!1),this.shiftKeyDrag&&r.shiftKey?y(this.containerElement):this.containerElement.style.cursor=\"auto\"),this.draw()}}},{key:\"draw\",value:function(e){if(this.highlighters.length=0,0===this.maxBranchLength)return void this.loadError(new Error(\"All branches in the tree are identical.\"));this.canvas.clearRect(0,0,this.canvas.canvas.width,this.canvas.canvas.height),this.canvas.lineCap=\"round\",this.canvas.lineJoin=\"round\",this.canvas.strokeStyle=this.branchColour,this.canvas.save(),this.drawn&&!e||(this.prerenderer.run(this),e||this.fitInPanel());var t=S(this.canvas);this.canvas.lineWidth=this.lineWidth/this.zoom,this.canvas.translate(this.offsetx*t,this.offsety*t),this.canvas.scale(this.zoom,this.zoom),this.branchRenderer.render(this,this.root),this.highlighters.forEach(function(e){return e()}),this.drawn=!0,this.canvas.restore()}},{key:\"pickup\",value:function(e){if(!this.shiftKeyDrag||e.shiftKey){if(!this.drawn)return!1;this.origx=this.offsetx,this.origy=this.offsety,0===e.button&&(this.pickedup=!0,p(this.containerElement)),this.startx=e.clientX,this.starty=e.clientY}}},{key:\"drop\",value:function(e){return!!this.drawn&&(this.pickedup=!1,void(this.shiftKeyDrag&&e.shiftKey?y(this.containerElement):this.containerElement.style.cursor=\"auto\"))}},{key:\"scroll\",value:function(e){if(!(this.disableZoom||\"wheelDelta\"in e&&0===e.wheelDelta)){e.preventDefault(),this._point.x=e.offsetX,this._point.y=e.offsetY;var t=e.detail<0||e.wheelDelta>0?1:-1;this.branchScaling&&(e.metaKey||e.ctrlKey)?(this.currentBranchScale*=Math.pow(this.branchScalingStep,t),this.setBranchScale(this.currentBranchScale,this._point)):this.smoothZoom(t,this._point)}}},{key:\"findLeaves\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"id\",n=[],a=!0,r=!1,i=void 0;try{for(var s,l=this.leaves[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var o=s.value;o[t]&&o[t].match(e)&&n.push(o)}}catch(e){r=!0,i=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw i}}return n}},{key:\"updateLeaves\",value:function(e,t,n){var a=!0,r=!1,i=void 0;try{for(var s,l=this.leaves[Symbol.iterator]();!(a=(s=l.next()).done);a=!0){var o=s.value;o[t]=!n}}catch(e){r=!0,i=e}finally{try{!a&&l.return&&l.return()}finally{if(r)throw i}}var h=!0,c=!1,u=void 0;try{for(var d,f=e[Symbol.iterator]();!(h=(d=f.next()).done);h=!0){var v=d.value;v[t]=n}}catch(e){c=!0,u=e}finally{try{!h&&f.return&&f.return()}finally{if(c)throw u}}this.nodesUpdated(e.map(function(e){return e.id}),t)}},{key:\"clearSelect\",value:function(){this.root.cascadeFlag(\"selected\",!1),this.draw()}},{key:\"getPngUrl\",value:function(){return this.canvas.canvas.toDataURL()}},{key:\"load\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],a=t,r=n;if(\"function\"==typeof t&&(r=t,a={}),r&&(a.callback=r),a.format)return void this.build(e,v.default[a.format],a);var i=!0,s=!1,l=void 0;try{for(var o,h=Object.keys(v.default)[Symbol.iterator]();!(i=(o=h.next()).done);i=!0){var c=o.value,u=v.default[c];if(e.match(u.fileExtension)||e.match(u.validator))return void this.build(e,u,a)}}catch(e){s=!0,l=e}finally{try{!i&&h.return&&h.return()}finally{if(s)throw l}}var d=new Error(\"String not recognised as a file or a parseable format string\");r&&r(d),this.loadError(d)}},{key:\"saveOriginalTree\",value:function(){this.originalTree.branches=this.branches,this.originalTree.leaves=this.leaves,this.originalTree.root=this.root,this.originalTree.branchLengths={},this.originalTree.parents={}}},{key:\"clearState\",value:function(){this.root=!1,this.leaves=[],this.branches={},this.drawn=!1}},{key:\"extractNestedBranches\",value:function(){this.branches={},this.leaves=[],this.storeNode(this.root),this.root.extractChildren()}},{key:\"saveState\",value:function(){if(this.extractNestedBranches(),this.root.branchLength=0,this.maxBranchLength=0,this.root.setTotalLength(),0===this.maxBranchLength)return void this.loadError(new Error(\"All branches in the tree are identical.\"))}},{key:\"build\",value:function(e,t,n){var a=this;this.originalTree={},this.clearState(),h.default.lastId=0;var r=new h.default;r.id=\"root\",this.branches.root=r,this.setRoot(r),t.parse({formatString:e,root:r,options:n},function(t){return t?(n.callback&&n.callback(t),void a.loadError(t)):(a.stringRepresentation=e,a.saveState(),a.setInitialCollapsedBranches(),a.beforeFirstDraw(),a.draw(),a.saveOriginalTree(),n.callback&&n.callback(),void a.loadCompleted())})}},{key:\"redrawFromBranch\",value:function(e){this.clearState(),this.resetTree(),this.originalTree.branchLengths[e.id]=e.branchLength,this.originalTree.parents[e.id]=e.parent,this.root=e,this.root.parent=!1,this.saveState(),this.draw(),this.subtreeDrawn(e.id)}},{key:\"redrawOriginalTree\",value:function(){this.load(this.stringRepresentation)}},{key:\"storeNode\",value:function(e){if(e.id&&\"\"!==e.id||(e.id=h.default.generateId()),this.branches[e.id]&&e!==this.branches[e.id]){if(e.leaf)throw new Error(\"Two nodes on this tree share the id \"+e.id);e.id=h.default.generateId()}this.branches[e.id]=e,e.leaf&&this.leaves.push(e)}},{key:\"setNodeSize\",value:function(e){this.baseNodeSize=Number(e),this.draw()}},{key:\"setRoot\",value:function(e){e.tree=this,this.root=e}},{key:\"setTextSize\",value:function(e){this.textSize=Number(e),this.draw()}},{key:\"setFontSize\",value:function(e){this.textSize=this.calculateFontSize?this.calculateFontSize(e):Math.min(e/2,15),this.canvas.font=this.textSize+\"pt \"+this.font}},{key:\"setTreeType\",value:function(e,t){if(!(e in d.default))return b(this.containerElement,\"error\",{error:new Error('\"'+e+'\" is not a known tree-type.')});var n=this.treeType;this.treeType=e,this.type=d.default[e],this.branchRenderer=d.default[e].branchRenderer,this.prerenderer=d.default[e].prerenderer,this.labelAlign=d.default[e].labelAlign,this.calculateFontSize=d.default[e].calculateFontSize,this.drawn&&(this.drawn=!1,this.draw()),t||this.treeTypeChanged(n,e)}},{key:\"setSize\",value:function(e,t){this.canvas.canvas.width=e,this.canvas.canvas.height=t,this.navigator&&this.navigator.resize(),this.adjustForPixelRatio()}},{key:\"adjustForPixelRatio\",value:function(){var e=S(this.canvas);this.canvas.canvas.style.height=this.canvas.canvas.height+\"px\",this.canvas.canvas.style.width=this.canvas.canvas.width+\"px\",e>1&&(this.canvas.canvas.width*=e,this.canvas.canvas.height*=e)}},{key:\"getCentrePoint\",value:function(){var e=S(this.canvas);return{x:this.canvas.canvas.width/2/e,y:this.canvas.canvas.height/2/e}}},{key:\"setZoom\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getCentrePoint(),n=t.x,a=t.y;if(e>0){var r=this.zoom;this.zoom=e,this.offsetx=this.calculateZoomedOffset(this.offsetx,n,r,e),this.offsety=this.calculateZoomedOffset(this.offsety,a,r,e),this.draw()}}},{key:\"smoothZoom\",value:function(e,t){this.setZoom(Math.pow(10,Math.log(this.zoom)/Math.log(10)+e*this.zoomFactor*.01),t)}},{key:\"calculateZoomedOffset\",value:function(e,t,n,a){return-1*((-1*e+t)/n*a-t)}},{key:\"setBranchScale\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{x:this.canvas.canvas.width/2,y:this.canvas.canvas.height/2},n=d.default[this.treeType];if(n.branchScalingAxis&&!(e<0)){var a=this.branchScalar;this.branchScalar=this.initialBranchScalar*e;var r=this.branchScalar/a,i=this[\"offset\"+n.branchScalingAxis],s=t[n.branchScalingAxis],l=(t[n.branchScalingAxis]-i)*r+i;this[\"offset\"+n.branchScalingAxis]+=s-l,this.draw()}}},{key:\"toggleLabels\",value:function(){this.showLabels=!this.showLabels,this.draw()}},{key:\"setMaxLabelLength\",value:function(){var e;void 0===this.maxLabelLength[this.treeType]&&(this.maxLabelLength[this.treeType]=0);for(var t=0;tthis.maxLabelLength[this.treeType]&&(this.maxLabelLength[this.treeType]=e.width)}},{key:\"loadStarted\",value:function(){b(this.containerElement,\"loading\")}},{key:\"beforeFirstDraw\",value:function(){b(this.containerElement,\"beforeFirstDraw\")}},{key:\"loadCompleted\",value:function(){b(this.containerElement,\"loaded\")}},{key:\"loadError\",value:function(e){b(this.containerElement,\"error\",{error:e})}},{key:\"subtreeDrawn\",value:function(e){b(this.containerElement,\"subtree\",{node:e})}},{key:\"nodesUpdated\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];b(this.containerElement,\"updated\",{nodeIds:e,property:t,append:n})}},{key:\"treeTypeChanged\",value:function(e,t){b(this.containerElement,\"typechanged\",{oldType:e,newType:t})}},{key:\"addListener\",value:function(e,t,n){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push({listener:t,target:n}),m(n||this.containerElement,e,t)}},{key:\"removeListener\",value:function(e,t,n){x(n||this.containerElement,e,t)}},{key:\"getBounds\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.leaves,t=e===this.leaves?this.root:e[0],n=t.startx,a=t.startx,r=t.starty,i=t.starty,s=!0,l=!1,o=void 0;try{for(var h,c=e[Symbol.iterator]();!(s=(h=c.next()).done);s=!0){var u=h.value,d=u.getBounds();n=Math.min(n,d.minx),a=Math.max(a,d.maxx),r=Math.min(r,d.miny),i=Math.max(i,d.maxy)}}catch(e){l=!0,o=e}finally{try{!s&&c.return&&c.return()}finally{if(l)throw o}}return[[n,r],[a,i]]}},{key:\"fitInPanel\",value:function(e){this.zoom=1;var t=this.getBounds(e),n=[this.canvas.canvas.width-2*this.padding,this.canvas.canvas.height-2*this.padding],a=[t[1][0]-t[0][0],t[1][1]-t[0][1]],r=S(this.canvas),i=n[0]/a[0],s=n[1]/a[1];this.zoom=Math.min(i,s),this.offsetx=-1*t[0][0]*this.zoom,this.offsety=-1*t[0][1]*this.zoom,i>s?(this.offsetx+=this.padding+(n[0]-a[0]*this.zoom)/2,this.offsety+=this.padding):(this.offsetx+=this.padding,this.offsety+=this.padding+(n[1]-a[1]*this.zoom)/2),this.offsetx=this.offsetx/r,this.offsety=this.offsety/r}},{key:\"resetTree\",value:function(){if(this.originalTree.branches){this.branches=this.originalTree.branches;var e=!0,t=!1,n=void 0;try{for(var a,r=Object.keys(this.originalTree.branchLengths)[Symbol.iterator]();!(e=(a=r.next()).done);e=!0){var i=a.value;this.branches[i].branchLength=this.originalTree.branchLengths[i],this.branches[i].parent=this.originalTree.parents[i]}}catch(e){t=!0,n=e}finally{try{!e&&r.return&&r.return()}finally{if(t)throw n}}this.leaves=this.originalTree.leaves,this.root=this.originalTree.root}}},{key:\"rotateBranch\",value:function(e){this.branches[e.id].rotate()}},{key:\"exportNwk\",value:function(){var e=this.root.getNwk();return e.substr(0,e.lastIndexOf(\")\")+1)+\";\"}},{key:\"resizeToContainer\",value:function(){this.setSize(this.containerElement.offsetWidth,this.containerElement.offsetHeight)}},{key:\"cleanup\",value:function(){this.removeEventListeners()}},{key:\"alignLabels\",get:function(){return this.showLabels&&this.labelAlign&&this.labelAlignEnabled},set:function(e){this.labelAlignEnabled=e}}]),e}();L.prototype.on=L.prototype.addListener,L.prototype.off=L.prototype.removeListener,t.default=L},function(e,t,n){\"use strict\";function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Object.defineProperty(t,\"__esModule\",{value:!0}),t.events=t.dom=t.constants=t.canvas=void 0;var r=n(3),i=a(r),s=n(6),l=a(s),o=n(4),h=a(o),c=n(5),u=a(c);t.canvas=i,t.constants=l,t.dom=h,t.events=u},function(e,t,n){\"use strict\";function a(e){return e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||1}function r(e){return(window.devicePixelRatio||1)/a(e)}function i(e,t){var n=r(t.canvas);return[(e.offsetX-t.offsetx)/t.zoom*n,(e.offsetY-t.offsety)/t.zoom*n]}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{x:0,y:0},t=e.x,n=e.y,a=arguments[1],i=r(a.canvas);return{x:(t-a.offsetx)/a.zoom*i,y:(n-a.offsety)/a.zoom*i}}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{x:0,y:0},t=e.x,n=e.y,a=arguments[1],i=r(a.canvas);return{x:t/i*a.zoom+a.offsetx,y:n/i*a.zoom+a.offsety}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.getBackingStorePixelRatio=a,t.getPixelRatio=r,t.translateClick=i,t.translatePoint=s,t.undoPointTranslation=l;n(4)},function(e,t,n){\"use strict\";function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"text/plain;charset=utf-8\",n=new Blob([e],{type:t});return f.createObjectURL(n)}function r(e,t){var n=document.createElement(\"a\"),a=\"undefined\"!=typeof n.download;n.href=e,n.target=\"_blank\",a&&(n.download=t),(0,d.fireEvent)(n,\"click\"),a&&f.revokeObjectURL(n.href)}function i(e){for(var t=0;e;)t+=e.offsetLeft,e=e.offsetParent;return t}function s(e){for(var t=0;e;)t+=e.offsetTop,e=e.offsetParent;return t}function l(e,t){var n=e.className.split(\" \");n.indexOf(t)===-1&&(n.push(t),e.className=n.join(\" \"))}function o(e,t){var n=e.className.split(\" \"),a=n.indexOf(t);a!==-1&&(n.splice(a,1),e.className=n.join(\" \"))}function h(e,t){var n=e.className.split(\" \"),a=n.indexOf(t);return a!==-1}function c(e){e.style.cursor=\"-webkit-grabbing\",e.style.cursor=\"-moz-grabbing\",e.style.cursor=\"grabbing\"}function u(e){e.style.cursor=\"-webkit-grab\",e.style.cursor=\"-moz-grab\",e.style.cursor=\"grab\"}Object.defineProperty(t,\"__esModule\",{value:!0}),t.createBlobUrl=a,t.setupDownloadLink=r,t.getX=i,t.getY=s,t.addClass=l,t.removeClass=o,t.hasClass=h,t.setCursorDragging=c,t.setCursorDrag=u;var d=n(5),f=window.URL||window.webkitURL},function(e,t){\"use strict\";function n(e){return e.preventDefault(),!1}function a(e,t){var n,a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};document.createEvent?(n=document.createEvent(\"HTMLEvents\"),n.initEvent(t,!0,!0)):(n=document.createEventObject(),n.eventType=t),n.eventName=t;for(a in r)r.hasOwnProperty(a)&&(n[a]=r[a]);document.createEvent?e.dispatchEvent(n):e.fireEvent(\"on\"+n.eventType,n)}function r(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent(\"on\"+t,function(){return n.call(e,window.event)})}function i(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):console.warn(\"[Phylocanvas] Unable to remove event, removeEventListener not supported\")}function s(e){e.stopPropagation(),e.preventDefault()}function l(e,t){var n;return n=(\"undefined\"==typeof t?\"undefined\":o(t))===o(\"aaa\")?function(n){if(e[t])return e[t](n)}:function(){return t(e)}}Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};t.preventDefault=n,t.fireEvent=a,t.addEvent=r,t.removeEvent=i,t.killEvent=s,t.createHandler=l},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.Angles={FORTYFIVE:Math.PI/4,QUARTER:Math.PI/2,HALF:Math.PI,FULL:2*Math.PI},t.Shapes={x:\"star\",s:\"square\",o:\"circle\",t:\"triangle\"},t.Predicates={tautology:function(){return!0},contradiction:function(){return!1},leafOnly:function(e){return e.leaf},nonLeaf:function(e){return!e.leaf}}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;nthis.minx&&tthis.miny)return this;for(var n=this.children.length-1;n>=0;n--){var a=this.children[n].clicked(e,t);if(a)return a}}},{key:\"drawLabel\",value:function(){var e=this.getTextSize(),t=this.getLabel();this.canvas.font=this.getFontString(),this.labelWidth=this.canvas.measureText(t).width,void 0===this.tree.maxLabelLength[this.tree.treeType]&&(this.tree.maxLabelLength[this.tree.treeType]=0),this.labelWidth>this.tree.maxLabelLength[this.tree.treeType]&&(this.tree.maxLabelLength[this.tree.treeType]=this.labelWidth);var n=this.getLabelStartX();this.tree.alignLabels&&(n+=Math.abs(this.tree.labelAlign.getLabelOffset(this))),this.angle>u.QUARTER&&this.angleu.QUARTER&&this.anglethis.tree.maxBranchLength&&(this.tree.maxBranchLength=this.totalBranchLength)):(this.totalBranchLength=this.branchLength,this.tree.maxBranchLength=this.totalBranchLength),e=0;e0&&void 0!==arguments[0])||arguments[0];if(this.leaf)return this.label+\":\"+this.branchLength;var t=this.children.map(function(e){return e.getNwk(!1)});return\"(\"+t.join(\",\")+\"):\"+this.branchLength+(e?\";\":\"\")}},{key:\"getTextColour\",value:function(){if(this.selected)return this.tree.selectedColour;if(this.isHighlighted)return this.tree.highlightColour;if(this.tree.backColour&&this.children.length){var e=this.getChildColours();if(1===e.length)return e[0]}return this.labelStyle.colour||this.colour||this.tree.branchColour}},{key:\"getLabel\",value:function(){return void 0!==this.label&&null!==this.label?this.label:\"\";\n}},{key:\"getTextSize\",value:function(){return this.labelStyle.textSize||this.tree.textSize}},{key:\"getFontString\",value:function(){var e=this.labelStyle.font||this.tree.font;return(this.labelStyle.format||\"\")+\" \"+this.getTextSize()+\"pt \"+e}},{key:\"getLabelSize\",value:function(){return this.canvas.font=this.getFontString(),this.canvas.measureText(this.getLabel()).width}},{key:\"getRadius\",value:function(){var e=this.tree.baseNodeSize;return this.leaf?e*this.radius:e/this.radius}},{key:\"getDiameter\",value:function(){return 2*this.getRadius()}},{key:\"hasLabelConnector\",value:function(){return!!this.tree.alignLabels&&this.tree.labelAlign.getLabelOffset(this)>this.getDiameter()}},{key:\"getLabelStartX\",value:function(){var e=this.getLeafStyle(),t=(e.lineWidth,this.hasLabelConnector()),n=this.getDiameter();return this.isHighlighted&&!t&&(n+=this.getHighlightSize()-this.getRadius()),n+Math.min(this.tree.labelPadding,this.tree.labelPadding/this.tree.zoom)}},{key:\"getHighlightLineWidth\",value:function(){return this.tree.highlightWidth/this.tree.zoom}},{key:\"getHighlightRadius\",value:function(){var e=this.getHighlightLineWidth()*this.tree.highlightSize;return e+=this.getLeafStyle().lineWidth/this.tree.highlightSize,this.leaf?this.getRadius()+e:.666*e}},{key:\"getHighlightSize\",value:function(){return this.getHighlightRadius()+this.getHighlightLineWidth()}},{key:\"rotate\",value:function(){for(var e=[],t=this.children.length;t--;)e.push(this.children[t]);this.children=e,this.tree.extractNestedBranches(),this.tree.draw(!0)}},{key:\"getChildNo\",value:function(){return this.parent.children.indexOf(this)}},{key:\"setDisplay\",value:function(e){var t=e.colour,n=e.shape,a=e.size,r=e.leafStyle,i=e.labelStyle;t&&(this.colour=t),n&&(this.nodeShape=d[n]?d[n]:n),a&&(this.radius=a),r&&(this.leafStyle=r),i&&(this.labelStyle=i)}},{key:\"getTotalLength\",value:function(){var e=this.getRadius();return(this.tree.showLabels||this.tree.hoverLabel&&this.isHighlighted)&&(e+=this.getLabelStartX()+this.getLabelSize()),e}},{key:\"getBounds\",value:function(){var e=this.tree,t=e.alignLabels?e.labelAlign.getX(this):this.centerx,n=e.alignLabels?e.labelAlign.getY(this):this.centery,a=this.getRadius(),r=this.getTotalLength(),i=void 0,s=void 0,l=void 0,o=void 0;this.angle>u.QUARTER&&this.angle0?e.leaves[n-1].centery+t:0,e.leaves[n].centerx=e.leaves[n].totalBranchLength*e.branchScalar,e.leaves[n].centerx>e.farthestNodeFromRootX&&(e.farthestNodeFromRootX=e.leaves[n].centerx),e.leaves[n].centery>e.farthestNodeFromRootY&&(e.farthestNodeFromRootY=e.leaves[n].centery);for(var a=e.leaves[n];a.parent;a=a.parent){var r=a.parent.children;a.parent.centery=(r[0].centery+r[r.length-1].centery)/2}}}}},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(10),i=a(r),s=n(11),l=a(s),o=n(15),h=a(o),c=n(16),u=a(c),d={getX:function(e){return e.centerx+e.labelOffsetX+e.getDiameter()*Math.cos(e.angle)},getY:function(e){return e.centery+e.labelOffsetY+e.getDiameter()*Math.sin(e.angle)},getLabelOffset:function(e){return e.labelOffsetX/Math.cos(e.angle)}};t.default={branchRenderer:new i.default(h.default),prerenderer:new l.default(u.default),labelAlign:d,getCollapsedMeasurements:function(e){var t=e.tree,n=t.maxBranchLength,a=t.branchScalar,r=t.step;return{angle:e.getNumberOfLeaves()*r,radius:(n-e.totalBranchLength)*a}},calculateFontSize:function(e){return Math.min(10*e+4,40)}}},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={draw:function(e,t){var n=t.totalBranchLength*e.branchScalar;t.canvas.beginPath(),t.canvas.moveTo(t.startx,t.starty),t.canvas.lineTo(t.centerx,t.centery),t.canvas.stroke(),t.canvas.closePath(),t.canvas.strokeStyle=t.getColour(),t.children.length>1&&!t.collapsed&&(t.canvas.beginPath(),t.canvas.arc(0,0,n,t.minChildAngle,t.maxChildAngle,t.maxChildAnglen?n=e.branchScalar*e.maxBranchLength:e.branchScalar=n/e.maxBranchLength;for(var a=0;a0?e.leaves[n-1].centery+t:0,e.leaves[n].angle=0;for(var a=e.leaves[n];a.parent&&a.getChildNo()===a.parent.children.length-1;a=a.parent){a.parent.centery=a.parent.getChildYTotal()/a.parent.getChildCount(),a.parent.centerx=a.parent.children[0].centerx+(a.parent.children[0].centery-a.parent.centery)*Math.tan(r.FORTYFIVE);for(var i=0;i0?e.leaves[n-1].centerx+t:0,e.leaves[n].centery=e.leaves[n].totalBranchLength*e.branchScalar;for(var a=e.leaves[n];a.parent&&(0===a.getChildNo()&&(a.parent.centerx=a.centerx),a.getChildNo()===a.parent.children.length-1);a=a.parent){a.parent.angle=r.QUARTER,a.parent.centerx=(a.parent.centerx+a.centerx)/2,a.parent.centery=a.parent.totalBranchLength*e.branchScalar;for(var i=0;ie.farthestNodeFromRootX&&(e.farthestNodeFromRootX=e.leaves[n].centerx),e.leaves[n].centery>e.farthestNodeFromRootY&&(e.farthestNodeFromRootY=e.leaves[n].centery)}}}},function(e,t,n){\"use strict\";function a(e,t){e.beginPath(),e.moveTo(0,0),e.lineTo(t,0),e.stroke(),e.closePath()}function r(e,t){var n=t.lineWidth,a=t.strokeStyle,r=t.fillStyle;e.lineWidth=n,e.strokeStyle=a,e.fillStyle=r,e.fill(),n>0&&a!==r&&e.stroke()}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(2),s=i.constants.Angles,l=function(e){return e*Math.sqrt(2)};t.default={circle:function(e,t,n){var i=Math.pow(l(t),2),o=Math.sqrt(i/Math.PI);a(e,t-o),e.beginPath(),e.arc(t,0,o,0,s.FULL,!1),e.closePath(),r(e,n)},square:function(e,t,n){var i=l(t),s=t-i/2;a(e,s),e.beginPath(),e.moveTo(s,0),e.lineTo(s,i/2),e.lineTo(s+i,i/2),e.lineTo(s+i,-i/2),e.lineTo(s,-i/2),e.lineTo(s,0),e.closePath(),r(e,n)},star:function(e,t,n){var i=t,s=0,l=5,o=t,h=.5*o,c=Math.PI/l;a(e,o-h);var u=Math.PI/2*3;e.beginPath(),e.moveTo(i,s-o);for(var d=0;d1&&void 0!==arguments[1]?arguments[1]:{},a=n.className,i=void 0===a?\"phylocanvas-tooltip\":a,s=n.element,l=void 0===s?document.createElement(\"div\"):s,o=n.zIndex,h=void 0===o?2e3:o,c=n.parent,u=void 0===c?t.containerElement:c;r(this,e),this.tree=t,this.element=l,this.element.className=i,this.element.style.display=\"none\",this.element.style.position=\"fixed\",this.element.style.zIndex=h,this.closed=!0,u.appendChild(this.element)}return i(e,[{key:\"close\",value:function(){this.element.style.display=\"none\",this.closed=!0}},{key:\"open\",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=arguments[2];this.element.hasChildNodes();)this.element.removeChild(this.element.firstChild);this.createContent(n),this.element.style.top=t+\"px\",this.element.style.left=e+\"px\",this.element.style.display=\"block\",this.closed=!1}},{key:\"createContent\",value:function(){throw new Error(\"Not implemented\")}}]),e}();t.default=s;t.ChildNodesTooltip=function(e){function t(e,a){r(this,t);var i=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,a));return i.element.style.background=\"rgba(97, 97, 97, 0.9)\",i.element.style.color=\"#fff\",i.element.style.cursor=\"pointer\",i.element.style.padding=\"8px\",i.element.style.marginTop=\"16px\",i.element.style.borderRadius=\"2px\",i.element.style.textAlign=\"center\",i.element.style.fontFamily=i.tree.font||\"sans-serif\",i.element.style.fontSize=\"10px\",i.element.style.fontWeight=\"500\",i}return a(t,e),i(t,[{key:\"createContent\",value:function(e){var t=document.createTextNode(e.getChildProperties(\"id\").length);this.element.appendChild(t)}}]),t}(s)},function(e,t,n){\"use strict\";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(29),i=a(r),s=n(30),l=a(s),o=n(31),h=a(o);t.default={nexus:new i.default(h.default),newick:new i.default(l.default)}},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var a=function(){function e(e,t){for(var n=0;n