!function(){"use strict";angular.module("angularplasmid.services",[]).factory("SVGUtil",function(){function e(e,t){var r="round";return"undefined"==typeof t||0===+t?Math[r](e):(e=+e,t=+t,isNaN(e)||"number"!=typeof t||t%1!==0?0/0:(e=e.toString().split("e"),e=Math[r](+(e[0]+"e"+(e[1]?+e[1]-t:-t))),e=e.toString().split("e"),+(e[0]+"e"+(e[1]?+e[1]+t:t))))}function t(e){p.push(e)}function r(e){var t;for(t=0;t<p.length;t+=1)if(p[t].id===e)return p[t]}function n(e,t,r,n){var a=(n-90)*Math.PI/180;return{x:e+r*Math.cos(a),y:t+r*Math.sin(a)}}function a(e,t){var r,n,a=["id","name","class","style","filter","ng-attr-style","ng-attr-class","ng-class"];for(n=0;n<a.length;n+=1)r=a[n],e[0].hasAttribute(r)&&(t.attr(r,e.attr(r)),e.removeAttr(r))}function i(e,t,r){var n,a="http://www.w3.org/2000/svg",i=document.createElementNS(a,e);return r=r||[],angular.forEach(t,function(e){r.indexOf(e)<0&&(n=t[e],null===n||e.match(/\$/)||"string"==typeof n&&""===n||i.setAttribute(e,n))}),i}function l(e){angular.forEach(["id","class","style"],function(t){e.removeAttribute(t)})}function c(e,t,r,a){var i,l,c;return e=Number(e||0),t=Number(t||0),r=Number(r||0),a=Number(a||0),i={start:n(e,t,r,359.99),end:n(e,t,r,0)},l={start:n(e,t,r+a,359.99),end:n(e,t,r+a,0)},c=["M",i.start.x,i.start.y,"A",r,r,0,1,0,i.end.x,i.end.y,"M",l.start.x,l.start.y,"A",r+a,r+a,0,1,0,l.end.x,l.end.y].join(" ")}function s(e,t,r,a,i,l,c,s){var u,d,o,p,f,g,m,h,b,y,v,k,w;return e=Number(e),t=Number(t),r=Number(r),a=Number(a),i=Number(i),l=Number(l),c=c||{width:0,length:0,angle:0},s=s||{width:0,length:0,angle:0},a===i?(d=n(e,t,r,a),p=n(e,t,r+l,a),u=["M",d.x,d.y,"L",p.x,p.y].join(" ")):1===l?(d=n(e,t,r,a),p=n(e,t,r,i),f=i>a?180>=i-a?"0":"1":180>=i-a?"1":"0",u=["M",d.x,d.y,"A",r,r,0,f,1,p.x,p.y].join(" ")):(i-=s.length<0?0:s.length,a+=c.length<0?0:c.length,d=n(e,t,r,i),p=n(e,t,r,a),g=n(e,t,r-c.width,a+c.angle),m=n(e,t,r+l/2,a-c.length),h=n(e,t,r+l+c.width,a+c.angle),b=n(e,t,r+l,a),y=n(e,t,r+l+s.width,i-s.angle),v=n(e,t,r+l/2,i+s.length),k=n(e,t,r-s.width,i-s.angle),w=n(e,t,r,i),o=n(e,t,r+l,i),f=180>=i-a?"0":"1",u=["M",d.x,d.y,"A",r,r,0,f,0,p.x,p.y,"L",g.x,g.y,"L",m.x,m.y,"L",h.x,h.y,"L",b.x,b.y,"A",r+l,r+l,0,f,1,o.x,o.y,"L",y.x,y.y,"L",v.x,v.y,"L",k.x,k.y,"L",w.x,w.y,"z"].join(" ")),u}function u(t,r,n,a,i,l){t=Number(t||0),r=Number(r||0),n=Number(n||0),a=Number(a||0),i=Number(i||0),l=Number(l||2);var c,s,u,d,o=Number(a)>0?Number(i)/Number(a):0,p=2*Math.PI/o,f=-1,g="";for(d=0;o>d;d+=1)c=p*d-Math.PI/2,u=Math.cos(c),s=Math.sin(c),g+="M"+e(t+n*u,f)+","+e(r+n*s,f)+" L"+e(t+(n+l)*u,f)+","+e(r+(n+l)*s,f)+" ";return g=g||"M 0,0"}function d(t,r,n,a,i){t=Number(t),r=Number(r),n=Number(n),a=Number(a),i=Number(i);var l,c,s,u,d=Number(a)>0?Number(i)/Number(a):0,o=2*Math.PI/d,p=-1,f=[];for(u=0;d>u;u+=1)l=o*u-Math.PI/2,s=Math.cos(l),c=Math.sin(l),f.push({x:e(t+n*s,p),y:e(r+n*c,p),text:a*u});return f}function o(e,t){return isNaN(e)?t||0:Number(e)}var p=[],f=[],g=[];return{api:{addPlasmid:t,plasmids:p,plasmid:r,plasmidtracks:f,trackmarkers:g},util:{polarToCartesian:n,swapProperties:a,Numeric:o},svg:{createNode:i,removeAttributes:l,path:{donut:c,arc:s,scale:u},element:{scalelabels:d}}}})}(),function(){"use strict";angular.module("angularplasmid",["angularplasmid.services"]).directive("plasmidapi",["SVGUtil",function(e){return{restrict:"AE",link:function(t,r,n){t[n.name]=e.api}}}]).directive("plasmid",["SVGUtil",function(){return{restrict:"AE",type:"svg",template:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>',replace:!0,transclude:!0,require:"plasmid",scope:{plasmidheight:"@",plasmidwidth:"@",sequencelength:"@",sequence:"@",plasmidclass:"@",plasmidstyle:"@"},link:{pre:function(e,t,r,n){n.init(t)},post:function(e,t,r,n,a){a(e.$parent,function(e){t.append(e)}),e.$watchGroup(["plasmidheight","plasmidwidth","sequencelength","sequence","plasmidclass","plasmidstyle"],function(){n.draw()})}},controller:["$scope","SVGUtil",function(e,t){var r,n,a=[];n=this,n.elementtype="plasmid",n.init=function(e){t.api.addPlasmid(n),r=e,n.id=r.attr("id")},n.draw=function(){var e=n.dimensions,t=r.plasmidclass,i=r.plasmidstyle;r.attr("height",e.height),r.attr("width",e.width),t&&r.attr("class",t),i&&r.attr("style",i),angular.forEach(a,function(e){e.draw()})},n.addTrack=function(e){a.push(e)},Object.defineProperty(n,"center",{get:function(){var e=n.dimensions;return{x:e.width/2,y:e.height/2}}}),Object.defineProperty(n,"dimensions",{get:function(){return{height:t.util.Numeric(e.plasmidheight,300),width:t.util.Numeric(e.plasmidwidth,300)}}}),Object.defineProperty(n,"sequencelength",{get:function(){return n.sequence?n.sequence.length:t.util.Numeric(e.sequencelength)}}),Object.defineProperty(n,"sequence",{get:function(){return e.sequence}}),Object.defineProperty(n,"plasmidclass",{get:function(){return e.plasmidclass}}),Object.defineProperty(n,"plasmidstyle",{get:function(){return e.plasmidstyle}}),n.tracks=a}]}}]).directive("plasmidtrack",["SVGUtil","$compile",function(e,t){return{restrict:"AE",type:"svg",template:"<g><path></path></g>",replace:!0,transclude:!0,require:["plasmidtrack","^plasmid"],scope:{radius:"@",width:"@",trackclass:"@",trackstyle:"@",trackclick:"&"},link:{pre:function(e,t,r,n){var a=n[0],i=n[1],l=angular.element(t.children()[0]);a.init(l,i)},post:function(r,n,a,i,l){l(r.$parent,function(e){n.append(e)});var c=angular.element(n),s=angular.element(n.children()[0]),u=i[0];e.util.swapProperties(c,s),s.attr("fill-rule","evenodd"),t(s)(r.$parent),s.on("click",function(e){r.trackclick({$event:e,$track:u})}),r.$watchGroup(["radius","width","trackstyle","trackclass"],function(){u.draw()})}},controller:["$scope",function(t){var r,n,a,i=[],l=[],c=[];a=this,a.elementtype="plasmidtrack",a.init=function(e,t){r=t,r.addTrack(a),a.plasmid=r,n=e},a.draw=function(){var t=a.center,r=e.svg.path.donut(t.x,t.y,a.radius,a.width),s=a.trackclass,u=a.trackstyle;n.attr("d",r),s&&n.attr("class",s),u&&n.attr("style",u),angular.forEach(i,function(e){e.draw()}),angular.forEach(l,function(e){e.draw()}),angular.forEach(c,function(e){e.draw()})},a.addMarker=function(e){i.push(e)},a.addScale=function(e){l.push(e)},a.addLabel=function(e){c.push(e)},a.markergroup=function(e){var t=[];return angular.forEach(i,function(r){r.markergroup===e&&t.push(r)}),t},a.getPosition=function(t,n,i){i=Number(i||0),t=Number(t);var l,c,s=1,u=2,d=a.center,o=r.sequencelength;if(o>0){switch(c=t/o*360,n){case s:l=a.radius+i;break;case u:l=a.radius+a.width+i;break;default:l=a.radius+a.width/2+i}return e.util.polarToCartesian(d.x,d.y,l,c)}},Object.defineProperty(a,"center",{get:function(){return r.center}}),Object.defineProperty(a,"radius",{get:function(){return e.util.Numeric(t.radius,100)}}),Object.defineProperty(a,"width",{get:function(){return e.util.Numeric(t.width,25)}}),Object.defineProperty(a,"trackclass",{get:function(){return t.trackclass}}),Object.defineProperty(a,"trackstyle",{get:function(){return t.trackstyle}}),a.markers=i,a.scales=l,a.labels=c}]}}]).directive("trackscale",["SVGUtil","$compile",function(e,t){return{restrict:"AE",type:"svg",template:"<g><path></path><g></g></g>",replace:!0,transclude:!0,require:["trackscale","^plasmidtrack"],scope:{interval:"@",vadjust:"@",ticksize:"@",direction:"@",showlabels:"@",labelvadjust:"@",labelclass:"@",labelstyle:"@",tickclass:"@",tickstyle:"@",scaleclick:"&"},link:{pre:function(e,t,r,n){var a=n[0],i=n[1],l=angular.element(t.children()[0]),c=angular.element(t.children()[1]);a.init(l,c,i)},post:function(r,n,a,i,l){var c,s,u;l(r.$parent,function(e){n.append(e)}),c=angular.element(n),s=angular.element(n.children()[0]),e.util.swapProperties(c,s),t(s)(r.$parent),s.on("click",function(e){r.scaleclick({$event:e,$scale:u})}),u=i[0],r.$watchGroup(["interval","vadjust","ticksize","labelvadjust","direction","showlabels","labelstyle","labelclass","tickstyle","tickclass"],function(){u.draw()})}},controller:["$scope",function(t){var r,n,a,i,l=15,c=3;n=this,n.elementtype="trackscale",n.init=function(e,t,l){r=l,r.addScale(n),n.track=r,a=e,i=t},n.draw=function(){var t=n.tickclass,l=n.tickstyle,c=r.center,s=e.svg.path.scale(c.x,c.y,n.radius,n.interval,n.total,n.ticksize);a.attr("d",s),t&&a.attr("class",t),l&&a.attr("style",l),n.showlabels?n.drawLabel():i.empty()},n.drawLabel=function(){function a(e){t.scaleclick({$event:e,$scale:n})}var l,c,s,u=r.center;for(s=e.svg.element.scalelabels(u.x,u.y,n.labelradius,n.interval,n.total),i.empty(),l=0;l<=s.length-1;l+=1)c=angular.element(e.svg.createNode("text")),n.labelclass&&c.attr("class",n.labelclass),n.labelstyle&&c.attr("style",n.labelstyle),c.attr("x",s[l].x),c.attr("y",s[l].y),c.attr("text-anchor","middle"),c.attr("alignment-baseline","middle"),c.text(s[l].text),c.on("click",a),i.append(c)},Object.defineProperty(n,"radius",{get:function(){return(n.inwardflg?r.radius:r.radius+r.width)+(n.inwardflg?-1:1)*n.vadjust+(n.inwardflg?-n.ticksize:0)}}),Object.defineProperty(n,"interval",{get:function(){return e.util.Numeric(t.interval)}}),Object.defineProperty(n,"vadjust",{get:function(){return e.util.Numeric(t.vadjust)}}),Object.defineProperty(n,"ticksize",{get:function(){return e.util.Numeric(t.ticksize,c)}}),Object.defineProperty(n,"inwardflg",{get:function(){return"in"===t.direction?!0:!1}}),Object.defineProperty(n,"total",{get:function(){return r.plasmid.sequencelength}}),Object.defineProperty(n,"showlabels",{get:function(){return"1"===t.showlabels?!0:!1}}),Object.defineProperty(n,"labelvadjust",{get:function(){return e.util.Numeric(t.labelvadjust,l)}}),Object.defineProperty(n,"tickclass",{get:function(){return t.tickclass}}),Object.defineProperty(n,"tickstyle",{get:function(){return t.tickstyle}}),Object.defineProperty(n,"labelclass",{get:function(){return t.labelclass}}),Object.defineProperty(n,"labelstyle",{get:function(){return t.labelstyle}}),Object.defineProperty(n,"labelradius",{get:function(){return n.radius+n.labelvadjust*(n.inwardflg?-1:1)}})}]}}]).directive("tracklabel",["SVGUtil",function(e){return{restrict:"AE",type:"svg",template:"<text></text>",replace:!0,transclude:!0,require:["tracklabel","^plasmidtrack"],scope:{text:"@",hadjust:"@",vadjust:"@",labelclass:"@",labelstyle:"@",labelclick:"&"},link:{pre:function(e,t,r,n){var a=n[0],i=n[1],l=angular.element(t[0]);a.init(l,i)},post:function(e,t,r,n,a){var i;a(e.$parent,function(e){t.append(e)}),t.attr("text-anchor","middle"),t.attr("alignment-baseline","middle"),t.on("click",function(t){e.labelclick({$event:t,$label:i})}),i=n[0],e.$watchGroup(["text","vadjust","hadjust","labelstyle","labelclass"],function(){i.draw()})}},controller:["$scope",function(t){var r,n,a;n=this,n.elementtype="tracklabel",n.init=function(e,t){r=t,r.addLabel(n),n.track=r,a=e},n.draw=function(){var e=r.center,t=n.labelclass,i=n.labelstyle;a.attr("x",e.x+n.hadjust),a.attr("y",e.y+n.vadjust),a.text(n.text),t&&a.attr("class",t),i&&a.attr("style",i)},Object.defineProperty(n,"center",{get:function(){return r.center}}),Object.defineProperty(n,"text",{get:function(){return t.text}}),Object.defineProperty(n,"labelclass",{get:function(){return t.labelclass}}),Object.defineProperty(n,"labelstyle",{get:function(){return t.labelstyle}}),Object.defineProperty(n,"hadjust",{get:function(){return e.util.Numeric(t.hadjust,0)}}),Object.defineProperty(n,"vadjust",{get:function(){return e.util.Numeric(t.vadjust,0)}}),Object.defineProperty(n,"dimensions",{get:function(){return a[0].getBBox()}})}]}}]).directive("trackmarker",["SVGUtil","$compile",function(e,t){return{restrict:"AE",type:"svg",template:"<g><path></path></g>",replace:!0,transclude:!0,require:["trackmarker","^plasmidtrack"],scope:{start:"@",end:"@",vadjust:"@",wadjust:"@",markergroup:"@",arrowstartlength:"@",arrowstartwidth:"@",arrowstartangle:"@",arrowendlength:"@",arrowendwidth:"@",arrowendangle:"@",markerclass:"@",markerstyle:"@",markerclick:"&"},link:{pre:function(e,t,r,n){var a=n[0],i=n[1],l=angular.element(t.children()[0]);a.init(l,i)},post:function(r,n,a,i,l){var c,s,u=i[0];l(r.$parent,function(e){n.append(e)}),c=angular.element(n),s=angular.element(n.children()[0]),e.util.swapProperties(c,s),t(s)(r.$parent),s.on("click",function(e){r.markerclick({$event:e,$marker:u})}),r.$watchGroup(["start","end","vadjust","wadjust","markergroup","markerclass","markerstyle","arrowstartlength","arrowstartwidth","arrowstartangle","arrowendlength","arrowendwidth","arrowendangle"],function(){u.draw()})}},controller:["$scope",function(t){var r,n,a,i=[];n=this,n.elementtype="trackmarker",n.init=function(e,t){r=t,r.addMarker(n),a=e,n.track=r},n.draw=function(){var e=n.markerclass,t=n.markerstyle;a.attr("d",n.getPath()),e&&a.attr("class",e),t&&a.attr("style",t),angular.forEach(i,function(e){e.draw()})},n.addMarkerLabel=function(e){i.push(e)},n.getPath=function(){var t=r.center,a=n.angle,i=n.radius;return e.svg.path.arc(t.x,t.y,i.inner,a.start,a.end,n.width,n.arrowstart,n.arrowend)},n.getPosition=function(t,a,i,l){var c,s,u,d,o,p="start",f="end",g="inner",m="outer";if(c=r.center,d=n.radius,o=n.angle,t=e.util.Numeric(t),a=e.util.Numeric(a),void 0!==l&&void 0!==i){switch(l){case g:s=d.inner+a;break;case m:s=d.outer+a;break;default:s=d.middle+a}switch(i){case p:u=o.start+t;break;case f:u=o.end+t;break;default:u=o.middle+t}return e.util.polarToCartesian(c.x,c.y,s,u)}return s={outer:d.outer+a,inner:d.inner+a,middle:d.middle+a},u={begin:o.start+t,end:o.end+t,middle:o.middle+t},{outer:{begin:e.util.polarToCartesian(c.x,c.y,s.outer,u.begin),middle:e.util.polarToCartesian(c.x,c.y,s.outer,u.middle),end:e.util.polarToCartesian(c.x,c.y,s.outer,u.end)},middle:{begin:e.util.polarToCartesian(c.x,c.y,s.middle,u.begin),middle:e.util.polarToCartesian(c.x,c.y,s.middle,u.middle),end:e.util.polarToCartesian(c.x,c.y,s.middle,u.end)},inner:{begin:e.util.polarToCartesian(c.x,c.y,s.inner,u.begin),middle:e.util.polarToCartesian(c.x,c.y,s.inner,u.middle),end:e.util.polarToCartesian(c.x,c.y,s.inner,u.end)}}},n.fireClick=function(e){t.markerclick({$event:e.$event,$marker:e.$marker})},Object.defineProperty(n,"center",{get:function(){return r.center}}),Object.defineProperty(n,"radius",{get:function(){return{inner:r.radius+n.vadjust,outer:r.radius+n.vadjust+n.width,middle:r.radius+n.vadjust+n.width/2}}}),Object.defineProperty(n,"angle",{get:function(){var a,i,l,c;return a=n.start/r.plasmid.sequencelength*360,c=t.end||t.start,i=e.util.Numeric(c)/r.plasmid.sequencelength*360,i+=a>i?360:0,l=a+(i-a)/2,{start:a,middle:l,end:i}}}),Object.defineProperty(n,"vadjust",{get:function(){return e.util.Numeric(t.vadjust)}}),Object.defineProperty(n,"wadjust",{get:function(){return e.util.Numeric(t.wadjust)}}),Object.defineProperty(n,"width",{get:function(){return r.width+n.wadjust}}),Object.defineProperty(n,"start",{get:function(){return e.util.Numeric(t.start)}}),Object.defineProperty(n,"end",{get:function(){return e.util.Numeric(t.end)}}),Object.defineProperty(n,"arrowstart",{get:function(){return{width:e.util.Numeric(t.arrowstartwidth),length:e.util.Numeric(t.arrowstartlength),angle:e.util.Numeric(t.arrowstartangle)}}}),Object.defineProperty(n,"arrowend",{get:function(){return{width:e.util.Numeric(t.arrowendwidth),length:e.util.Numeric(t.arrowendlength),angle:e.util.Numeric(t.arrowendangle)}}}),Object.defineProperty(n,"markergroup",{get:function(){return t.markergroup}}),Object.defineProperty(n,"markerclass",{get:function(){return t.markerclass}}),Object.defineProperty(n,"markerstyle",{get:function(){return t.markerstyle}}),Object.defineProperty(n,"sequence",{get:function(){var e=n.track.plasmid.sequence;return n.start>n.end?e.substring(n.start-1,e.length-1)+e.substring(0,n.end-1):e.substring(n.start-1,n.end-1)}}),n.labels=i}]}}]).directive("markerlabel",["SVGUtil","$compile",function(e,t){return{restrict:"AE",type:"svg",transclude:!0,template:'<g><path></path><path id="" style="fill:none;stroke:none"></path><text></text></g>',require:["markerlabel","^trackmarker"],replace:!0,scope:{text:"@",valign:"@",vadjust:"@",halign:"@",hadjust:"@",type:"@",showline:"@",linestyle:"@",lineclass:"@",labelstyle:"@",labelclass:"@",linevadjust:"@",labelclick:"&"},link:{pre:function(e,t,r,n){var a=n[0],i=n[1],l=angular.element(t[0]),c=angular.element(t.children()[0]),s=angular.element(t.children()[1]),u=angular.element(t.children()[2]);a.init(u,l,s,c,i)},post:function(r,n,a,i,l){l(r.$parent,function(e){n.append(e)});var c=i[0],s=i[1],u=angular.element(n),d=angular.element(n.children()[2]);d.attr("text-anchor","middle"),d.attr("alignment-baseline","middle"),e.util.swapProperties(u,d),t(d)(r.$parent),a.labelclick?d.on("click",function(e){r.labelclick({$event:e,$label:c})}):d.on("click",function(e){s.fireClick({$event:e,$marker:s})}),r.$watchGroup(["text","type","valign","vadjust","halign","hadjust","showline","linevadjust","linestyle","labelclass","labelstyle"],function(){c.draw()})}},controller:["$scope","$compile",function(t,r){var n,a,i,l,c,s,u,d;a=this,a.elementtype="markerlabel",a.init=function(e,t,r,c,s){var o="TPATH"+(Math.random()+1).toString(36).substring(3,7);n=s,n.addMarkerLabel(a),a.marker=n,i=e,l=r,u=c,d=t,l.attr("id",o)},a.draw=function(){var e,d,o,p,f,g="middle",m="inner",h="outer",b="start",y="end",v=0,k=0,w=a.labelclass,j=a.labelstyle;if(w&&i.attr("class",w),j&&i.attr("style",j),"path"===a.type)switch(i.attr("x",""),i.attr("y",""),c||(s=document.createElementNS("http://www.w3.org/2000/svg","textPath"),s.setAttributeNS("http://www.w3.org/1999/xlink","href","#"+l.attr("id")),c=angular.element(s),r(c)(t),i.empty(),i.append(c)),s.textContent=a.text,v=window.getComputedStyle(i[0]).fontSize.replace("px",""),k=a.valign===h?0:a.valign===m?Number(v||0):Number(v||0)/2,l.attr("d",a.getPath(a.hadjust,a.vadjust-k,a.halign,a.valign)),a.halign){case b:i.attr("text-anchor","start"),c[0].setAttribute("startOffset","0%");break;case y:i.attr("text-anchor","end"),c[0].setAttribute("startOffset","100%");break;default:i.attr("text-anchor","middle"),c[0].setAttribute("startOffset","50%")}else c&&(c.remove(),c=null),e=n.getPosition(a.hadjust,a.vadjust,a.halign,a.valign),i.attr("x",e.x),i.attr("y",e.y),i.text(a.text);a.showlineflg?(d=n.getPosition(a.hadjust,a.vadjust+a.linevadjust,a.halign,a.valign),p=n.getPosition(),f=a.valign===m?p.inner:a.valign===g?p.middle:p.outer,o=a.halign===b?f.begin:a.halign===y?f.end:f.middle,u.attr("d",["M",d.x,d.y,"L",o.x,o.y].join(" ")),a.linestyle||a.lineclass||u.attr("style","stroke:#000"),a.linestyle&&u.attr("style",a.linestyle),a.lineclass&&u.attr("class",a.lineclass)):u.removeAttr("d")},a.getPath=function(t,r,a,i){var l,c,s,u,d,o="inner",p="outer",f="start",g="end",m=n.center;switch(c=n.radius,i){case o:l=c.inner;break;case p:l=c.outer;break;default:l=c.middle}switch(s=n.angle,a){case f:u=s.start,d=s.start+359.99;break;case g:u=s.end+1,d=s.end;break;default:u=s.middle+180.05,d=s.middle+179.95}return e.svg.path.arc(m.x,m.y,l+Number(r||0),u+Number(t||0),d+Number(t||0),1)},Object.defineProperty(a,"showlineflg",{get:function(){return"1"===t.showline?!0:!1}}),Object.defineProperty(a,"halign",{get:function(){return t.halign||"middle"}}),Object.defineProperty(a,"valign",{get:function(){return t.valign||"middle"}}),Object.defineProperty(a,"hadjust",{get:function(){return e.util.Numeric(t.hadjust)}}),Object.defineProperty(a,"vadjust",{get:function(){return e.util.Numeric(t.vadjust)}}),Object.defineProperty(a,"type",{get:function(){return t.type}}),Object.defineProperty(a,"linevadjust",{get:function(){return e.util.Numeric(t.linevadjust)}}),Object.defineProperty(a,"labelclass",{get:function(){return t.labelclass}}),Object.defineProperty(a,"labelstyle",{get:function(){return t.labelstyle}}),Object.defineProperty(a,"linestyle",{get:function(){return t.linestyle}}),Object.defineProperty(a,"lineclass",{get:function(){return t.lineclass}}),Object.defineProperty(a,"text",{get:function(){return t.text}})}]}}]).directive("svgelement",["SVGUtil",function(){return{restrict:"AE",template:function(e,t){return"<"+t.type+"></"+t.type+">"},type:"svg",replace:!0,transclude:!0,require:["^plasmid"],scope:{},link:function(e,t,r,n,a){a(e.$parent,function(e){t.append(e)})}}}])}();