UNPKG

phylocanvas-plugin-history

Version:
1 lines 4.3 kB
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("phylocanvas"));else if("function"==typeof define&&define.amd)define(["phylocanvas"],e);else{var r=e("object"==typeof exports?require("phylocanvas"):t.phylocanvas);for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}(this,function(t){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=r(1),s=n(i);e["default"]=s["default"]},function(t,e,r){"use strict";function n(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t){t(this,"createTree",function(t,e){var r=t.apply(void 0,n(e)),i=o(e,2),s=i[1],a=void 0===s?{}:s;return a.history!==!1&&(r.history=new b(r,a.history||{})),r}),this.History=b}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){var r=[],n=!0,i=!1,s=void 0;try{for(var o,a=t[Symbol.iterator]();!(n=(o=a.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(c){i=!0,s=c}finally{try{!n&&a["return"]&&a["return"]()}finally{if(i)throw s}}return r}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}();e["default"]=s;var c=r(2),l=c.utils.dom,u=l.addClass,h=l.removeClass,d=c.utils.events,p=d.fireEvent,f=d.addEvent,y=d.killEvent,v="phylocanvas-history-snapshot",m=v+"--selected",b=function(){function t(e,r){var n=this,s=r.parent,o=void 0===s?e.containerElement:s,a=r.zIndex,c=void 0===a?1:a;i(this,t),this.tree=e,this.snapshots=[],this.isOpen=!1,this.parent=o,this.buttonClickHandler=this.toggle.bind(this),this.container=this.createElements(o),this.container.style.zIndex=c,this.tree.addListener("subtree",function(t){var e=t.node;return n.addSnapshot(e)}),this.tree.addListener("loaded",function(){return n.addSnapshot(n.tree.root.id)}),this.tree.addListener("typechanged",function(){return n.addSnapshot(n.tree.root.id)})}return a(t,[{key:"toggle",value:function(){this.isOpen=!this.isOpen,(this.isOpen?u:h)(this.container,"phylocanvas-history--open"),this.parent[(this.isOpen?"add":"remove")+"EventListener"]("click",this.buttonClickHandler),p(this.tree.containerElement,"historytoggle",{isOpen:this.isOpen})}},{key:"createElements",value:function(t){var e=document.createElement("div");e.className="phylocanvas-history",f(e,"click",y),f(e,"contextmenu",y);var r=document.createElement("button");r.className="phylocanvas-history-button",r.innerHTML="History",f(r,"click",this.buttonClickHandler),e.appendChild(r),this.button=r;var n=document.createElement("ul");return n.className="phylocanvas-history-snapshots",e.appendChild(n),this.snapshotList=n,t.appendChild(e),e}},{key:"addSnapshot",value:function(t){if(t){var e=this.tree.treeType,r=!1;if(this.snapshots.forEach(function(n){h(n,m),n.getAttribute("data-tree-root")===t&&n.getAttribute("data-tree-type")===e&&(r=!0,u(n,m))}),!r){var n=this.tree.getPngUrl(),i=document.createElement("li");i.className=v+" "+m,i.setAttribute("data-tree-root",t),i.setAttribute("data-tree-type",this.tree.treeType),i.className=v+" "+m;var s=document.createElement("img");s.src=n,this.snapshots.push(i),i.appendChild(s),this.snapshotList.appendChild(i),f(i,"click",this.goBackTo.bind(this,i))}}}},{key:"clear",value:function(){for(var t=this.snapshots.length;t--;)this.snapshotList.removeChild(this.snapshots[t]);this.snapshots.length=0}},{key:"goBackTo",value:function(t){var e=t.getAttribute("data-tree-root");this.tree.setTreeType(t.getAttribute("data-tree-type"),!0),this.tree.redrawFromBranch(this.tree.originalTree.branches[e]),this.toggle()}}]),t}()},function(e,r){e.exports=t}])});