text: !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).FunnelGraph=t()}}(function(){return function a(o,s,c){function l(e,t){if(!s[e]){if(!o[e]){var n="function"==typeof require&&require;if(!t&&n)return n(e,!0);if(u)return u(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=s[e]={exports:{}};o[e][0].call(i.exports,function(t){return l(o[e][1][t]||t)},i,i.exports,a,o,s,c)}return s[e].exports}for(var u="function"==typeof require&&require,t=0;t<c.length;t++)l(c[t]);return l}({1:[function(t,e,n){"use strict";e.exports=t("./src/js/main").default},{"./src/js/main":4}],2:[function(t,e,n){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.defaultColors=n.removeAttrs=n.setAttrs=n.createSVGElement=n.areEqual=n.getDefaultColors=n.generateLegendBackground=void 0;function a(e,n){"object"===i(n)&&Object.keys(n).forEach(function(t){e.setAttribute(t,n[t])})}n.setAttrs=a;n.removeAttrs=function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];n.forEach(function(t){e.removeAttribute(t)})};n.createSVGElement=function(t,e,n){var r=document.createElementNS("http://www.w3.org/2000/svg",t);return"object"===i(n)&&a(r,n),void 0!==e&&e.appendChild(r),r};n.generateLegendBackground=function(t,e){var n=1<arguments.length&&void 0!==e?e:"horizontal";return"string"==typeof t?"background-color: ".concat(t):1===t.length?"background-color: ".concat(t[0]):"background-image: linear-gradient(".concat("horizontal"===n?"to right, ":"").concat(t.join(", "),")")};var o=["#FF4589","#FF5050","#05DF9D","#4FF2FD","#2D9CDB","#A0BBFF","#FFD76F","#F2C94C","#FF9A9A","#FFB178"];n.defaultColors=o;n.getDefaultColors=function(t){for(var e=[].concat(o),n=[],r=0;r<t;r++){var i=Math.abs(Math.round(Math.random()*(e.length-1)));n.push(e[i]),e.splice(i,1)}return n};n.areEqual=function(t,e){var n=Object.prototype.toString.call(t);if(n!==Object.prototype.toString.call(e))return!1;if("[object Array]"!==n)return!1;if(t.length!==e.length)return!1;for(var r=0;r<t.length;r++){var i=Object.prototype.toString.call(t[r]);if(i!==Object.prototype.toString.call(e[r]))return!1;if("[object Array]"===i){if(t[r].length!==e[r].length)return!1;for(var a=0;a<t[r].length;a++)if(t[r][a]!==e[r][a])return!1}else if(t[r]!==e[r])return!1}return!0}},{}],3:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=n.getDropoffColor=void 0;function r(t,e,n){var r=n-e,i=0==r?100:(t-e)/r*100,a=i<=0?0:255,o=i<=0?255:255-255*Math.log10(0<i&&i<1?1:i)/2,s=65536*a+256*Math.round(o)+60;return"#".concat("000000".concat(s.toString(16)).slice(-6))}var i={getDropoffColor:n.getDropoffColor=r};n.default=i},{}],4:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var p=t("./number"),h=t("./path"),l=t("./graph"),b=t("./helpers");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var a=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.containerSelector=t.container,this.gradientDirection=t.gradientDirection&&"vertical"===t.gradientDirection?"vertical":"horizontal",this.direction=t.direction&&"vertical"===t.direction?"vertical":"horizontal",this.labels=e.getLabels(t),this.subLabels=e.getSubLabels(t),this.values=e.getValues(t),this.percentages=this.createPercentages(),this.colors=t.data.colors||(0,l.getDefaultColors)(this.is2d()?this.getSubDataSize():2),this.displayPercent=t.displayPercent||!1,this.data=t.data,this.height=t.height,this.width=t.width,this.subLabelValue=t.subLabelValue||"percent",this.backgroundColor=t.backgroundColor||"#132f4b"}return function(t,e,n){e&&i(t.prototype,e),n&&i(t,n)}(e,[{key:"getMainAxisPoints",value:function(){for(var t=this.getDataSize(),e=[],n=this.isVertical()?this.getHeight():this.getWidth(),r=0;r<=t;r++)e.push((0,p.roundPoint)(n*r/t));return e}},{key:"getCrossAxisPoints",value:function(){var t=[],e=this.getFullDimension(),n=e/2;if(this.is2d()){var r=this.getValues2d(),i=Math.max.apply(Math,f(r));r.push(f(r).pop()),t.push(r.map(function(t){return(0,p.roundPoint)((i-t)/i*n)}));for(var a=this.getPercentages2d(),o=t[0],s=1;s<this.getSubDataSize();s++){for(var c=t[s-1],l=[],u=0;u<this.getDataSize();u++)l.push((0,p.roundPoint)(c[u]+(e-2*o[u])*(a[u][s-1]/100)));l.push([].concat(l).pop()),t.push(l)}t.push(o.map(function(t){return e-t}))}else{var h=Math.max.apply(Math,f(this.values)),d=f(this.values).concat(f(this.values).pop());t.push(d.map(function(t){return(0,p.roundPoint)((h-t)/h*n)})),t.push(t[0].map(function(t){return e-t}))}return t}},{key:"getGraphType",value:function(){return this.values&&this.values[0]instanceof Array?"2d":"normal"}},{key:"is2d",value:function(){return"2d"===this.getGraphType()}},{key:"isVertical",value:function(){return"vertical"===this.direction}},{key:"getDataSize",value:function(){return this.values.length}},{key:"getSubDataSize",value:function(){return this.values[0].length}},{key:"getFullDimension",value:function(){return this.isVertical()?this.getWidth():this.getHeight()}},{key:"addLabels",value:function(){var g=this,v=document.createElement("div");v.setAttribute("class","svg-funnel-js__labels"),this.percentages.forEach(function(t,r){var e=document.createElement("div");e.setAttribute("class","svg-funnel-js__label label-".concat(r+1));var n=document.createElement("div");n.setAttribute("class","label__title"),n.textContent=g.labels[r]||"";var i=document.createElement("div");i.setAttribute("class","label__value");var a=g.is2d()?g.getValues2d()[r]:g.values[r];i.textContent=(0,p.formatNumber)(a);var o=document.createElement("div");o.setAttribute("class","label__percentage"),100!==t[0]&&(o.textContent="".concat(t[0].toString(),"%"));var s=document.createElement("div");if(s.setAttribute("class","label__dropoff_container"),0!==r){var c=document.createElement("p"),l=(0,b.getDropoffColor)(t[1],0,100);c.setAttribute("class","dropoff_text_percentage"),c.setAttribute("style","background-color: ".concat(g.backgroundColor,"; color: ").concat(l,";"));var u=-1*t[1];c.textContent="".concat(u.toString(),"%"),s.appendChild(c)}if(e.appendChild(i),e.appendChild(n),g.displayPercent&&(e.appendChild(o),e.appendChild(s)),g.is2d()){var h=document.createElement("div");h.setAttribute("class","label__segment-percentages");var d='<ul class="segment-percentage__list">',f=g.getPercentages2d();g.subLabels.forEach(function(t,e){var n="percent"===g.subLabelValue?"".concat(f[r][e],"%"):(0,p.formatNumber)(g.values[r][e]);d+="<li>".concat(g.subLabels[e],':\n    <span class="percentage__list-label">').concat(n,"</span>\n </li>")}),d+="</ul>",h.innerHTML=d,e.appendChild(h)}v.appendChild(e)}),this.container.appendChild(v)}},{key:"addSubLabels",value:function(){var n=this;if(this.subLabels){var t=document.createElement("div");t.setAttribute("class","svg-funnel-js__subLabels");var r="";this.subLabels.forEach(function(t,e){r+='<div class="svg-funnel-js__subLabel svg-funnel-js__subLabel-'.concat(e+1,'">\n    <div class="svg-funnel-js__subLabel--color" \n        style="').concat((0,l.generateLegendBackground)(n.colors[e],n.gradientDirection),'"></div>\n    <div class="svg-funnel-js__subLabel--title">').concat(t,"</div>\n</div>")}),t.innerHTML=r,this.container.appendChild(t)}}},{key:"createContainer",value:function(){if(!this.containerSelector)throw new Error("Container is missing");this.container=document.querySelector(this.containerSelector),this.container.classList.add("svg-funnel-js"),this.container.setAttribute("style","background-color:".concat(this.backgroundColor,";")),this.graphContainer=document.createElement("div"),this.graphContainer.classList.add("svg-funnel-js__container"),this.container.appendChild(this.graphContainer),"vertical"===this.direction&&this.container.classList.add("svg-funnel-js--vertical")}},{key:"destroy",value:function(){if(!this.containerSelector)throw new Error("Container is missing");document.querySelector(".svg-funnel-js")&&(document.querySelector(this.containerSelector).innerHTML="",this.container.classList.remove("svg-funnel-js"),this.container.classList.remove("svg-funnel-js--vertical"))}},{key:"setValues",value:function(t){return this.values=t,this}},{key:"setDirection",value:function(t){return this.direction=t,this}},{key:"setHeight",value:function(t){return this.height=t,this}},{key:"setWidth",value:function(t){return this.width=t,this}},{key:"getValues2d",value:function(){var e=[];return this.values.forEach(function(t){e.push(t.reduce(function(t,e){return t+e},0))}),e}},{key:"getPercentages2d",value:function(){var n=[];return this.values.forEach(function(t){var e=t.reduce(function(t,e){return t+e},0);n.push(t.map(function(t){return 0===e?0:(0,p.roundPoint)(100*t/e)}))}),n}},{key:"createPercentages",value:function(){var t=[];t=this.is2d()?this.getValues2d():f(this.values);var r=Math.max.apply(Math,f(t));return t.map(function(t,e,n){return[(0,p.roundPoint)(100*t/r),(0,p.roundPoint)(100-100*t/(n[e-1]||t))]})}},{key:"applyGradient",value:function(t,e,n,r){var i=null===t.querySelector("defs")?(0,l.createSVGElement)("defs",t):t.querySelector("defs"),a="funnelGradient-".concat(r),o=(0,l.createSVGElement)("linearGradient",i,{id:a});"vertical"===this.gradientDirection&&(0,l.setAttrs)(o,{x1:"0",x2:"0",y1:"0",y2:"1"});for(var s=n.length,c=0;c<s;c++)(0,l.createSVGElement)("stop",o,{"stop-color":n[c],offset:"".concat(Math.round(100*c/(s-1)),"%")});(0,l.setAttrs)(e,{fill:'url("#'.concat(a,'")'),stroke:'url("#'.concat(a,'")')})}},{key:"makeSVG",value:function(){for(var t=(0,l.createSVGElement)("svg",this.graphContainer,{width:this.getWidth(),height:this.getHeight()}),e=this.getCrossAxisPoints().length-1,n=0;n<e;n++){var r=(0,l.createSVGElement)("path",t),i=this.is2d()?this.colors[n]:this.colors,a="string"==typeof i||1===i.length?"solid":"gradient";"solid"==a?(0,l.setAttrs)(r,{fill:i,stroke:i}):"gradient"==a&&this.applyGradient(t,r,i,n+1),t.appendChild(r)}this.graphContainer.appendChild(t)}},{key:"getSVG",value:function(){var t=this.container.querySelector("svg");if(!t)throw new Error("No SVG found inside of the container");return t}},{key:"getWidth",value:function(){return this.width||this.graphContainer.clientWidth}},{key:"getHeight",value:function(){return this.height||this.graphContainer.clientHeight}},{key:"getPathDefinitions",value:function(){for(var t=this.getCrossAxisPoints().length-1,e=[],n=0;n<t;n++)if(this.isVertical()){var r=this.getCrossAxisPoints()[n],i=this.getCrossAxisPoints()[n+1],a=this.getMainAxisPoints(),o=(0,h.createVerticalPath)(n,r,i,a);e.push(o)}else{var s=this.getMainAxisPoints(),c=this.getCrossAxisPoints()[n],l=this.getCrossAxisPoints()[n+1],u=(0,h.createPath)(n,s,c,l);e.push(u)}return e}},{key:"getPathMedian",value:function(t){if(this.isVertical()){var e=this.getCrossAxisPoints()[t],r=this.getCrossAxisPoints()[t+1],n=this.getMainAxisPoints(),i=[],a=[];return e.forEach(function(t,e){var n=(t+r[e])/2;i.push(n-1),a.push(1+n)}),(0,h.createVerticalPath)(t,i,a,n)}var o=this.getMainAxisPoints(),s=this.getCrossAxisPoints()[t],c=this.getCrossAxisPoints()[t+1],l=[],u=[];return s.forEach(function(t,e){var n=(t+c[e])/2;l.push(n-1),u.push(1+n)}),(0,h.createPath)(t,o,l,u)}},{key:"drawPaths",value:function(){var n=this.getSVG().querySelectorAll("path");this.getPathDefinitions().forEach(function(t,e){n[e].setAttribute("d",t)})}},{key:"draw",value:function(){this.createContainer(),this.makeSVG(),this.addLabels(),this.is2d()&&this.addSubLabels(),this.drawPaths()}},{key:"makeVertical",value:function(){if("vertical"===this.direction)return!0;this.direction="vertical",this.container.classList.add("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,l.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"makeHorizontal",value:function(){if("horizontal"===this.direction)return!0;this.direction="horizontal",this.container.classList.remove("svg-funnel-js--vertical");var t=this.getSVG(),e=this.getHeight(),n=this.getWidth();return(0,l.setAttrs)(t,{height:e,width:n}),this.drawPaths(),!0}},{key:"toggleDirection",value:function(){"horizontal"===this.direction?this.makeVertical():this.makeHorizontal()}},{key:"gradientMakeVertical",value:function(){if("vertical"===this.gradientDirection)return!0;this.gradientDirection="vertical";for(var t=this.graphContainer.querySelectorAll("linearGradient"),e=0;e<t.length;e++)(0,l.setAttrs)(t[e],{x1:"0",x2:"0",y1:"0",y2:"1"});return!0}},{key:"gradientMakeHorizontal",value:function(){if("horizontal"===this.gradientDirection)return!0;this.gradientDirection="horizontal";for(var t=this.graphContainer.querySelectorAll("linearGradient"),e=0;e<t.length;e++)(0,l.removeAttrs)(t[e],"x1","x2","y1","y2");return!0}},{key:"gradientToggleDirection",value:function(){"horizontal"===this.gradientDirection?this.gradientMakeVertical():this.gradientMakeHorizontal()}},{key:"updateWidth",value:function(t){this.width=t;var e=this.getSVG(),n=this.getWidth();return(0,l.setAttrs)(e,{width:n}),this.drawPaths(),!0}},{key:"updateHeight",value:function(t){this.height=t;var e=this.getSVG(),n=this.getHeight();return(0,l.setAttrs)(e,{height:n}),this.drawPaths(),!0}},{key:"updateData",value:function(t){void 0!==t.labels&&(this.container.querySelector(".svg-funnel-js__labels").remove(),this.labels=e.getLabels({data:t}),this.addLabels()),void 0!==t.colors&&(this.colors=t.colors||(0,l.getDefaultColors)(this.is2d()?this.getSubDataSize():2)),void 0!==t.values&&(Object.prototype.toString.call(t.values[0])!==Object.prototype.toString.call(this.values[0])?(this.container.querySelector("svg").remove(),this.values=e.getValues({data:t}),this.makeSVG()):this.values=e.getValues({data:t}),this.drawPaths()),void 0!==t.subLabels&&(this.container.querySelector(".svg-funnel-js__subLabels").remove(),this.subLabels=e.getSubLabels({data:t}),this.addSubLabels())}},{key:"update",value:function(t){var i=this;void 0!==t.displayPercent&&this.displayPercent!==t.displayPercent&&(!0===this.displayPercent?this.container.querySelectorAll(".label__percentage").forEach(function(t){t.remove()}):this.container.querySelectorAll(".svg-funnel-js__label").forEach(function(t,e){var n=i.percentages[e],r=document.createElement("div");r.setAttribute("class","label__percentage"),100!==n&&(r.textContent="".concat(n.toString(),"%"),t.appendChild(r))})),void 0!==t.height&&this.updateHeight(t.height),void 0!==t.width&&this.updateWidth(t.width),void 0!==t.gradientDirection&&("vertical"===t.gradientDirection?this.gradientMakeVertical():"horizontal"===t.gradientDirection&&this.gradientMakeHorizontal()),void 0!==t.direction&&("vertical"===t.direction?this.makeVertical():"horizontal"===t.direction&&this.makeHorizontal()),void 0!==t.data&&this.updateData(t.data)}}],[{key:"getSubLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.subLabels?[]:e.subLabels}},{key:"getLabels",value:function(t){if(!t.data)throw new Error("Data is missing");var e=t.data;return void 0===e.labels?[]:e.labels}},{key:"getValues",value:function(t){if(!t.data)return[];var e=t.data;return"object"===r(e)?e.values:[]}}]),e}();n.default=a},{"./graph":2,"./helpers":3,"./number":5,"./path":6}],5:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.formatNumber=n.roundPoint=void 0;n.roundPoint=function(t){return Math.round(10*t)/10};n.formatNumber=function(t){return Number(t).toFixed().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,")}},{}],6:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.createVerticalPath=n.createPath=n.createVerticalCurves=n.createCurves=void 0;var i=t("./number");function s(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function c(t,e,n,r){return" C".concat((0,i.roundPoint)((n+t)/2),",").concat(e," ")+"".concat((0,i.roundPoint)((n+t)/2),",").concat(r," ").concat(n,",").concat(r)}n.createCurves=c;function l(t,e,n,r){return" C".concat(t,",").concat((0,i.roundPoint)((r+e)/2)," ")+"".concat(n,",").concat((0,i.roundPoint)((r+e)/2)," ").concat(n,",").concat(r)}n.createVerticalCurves=l;n.createPath=function(t,e,n,r){for(var i="M".concat(e[0],",").concat(n[0]),a=0;a<e.length-1;a++)i+=c(e[a],n[a],e[a+1],n[a+1]);i+=" L".concat(s(e).pop(),",").concat(s(r).pop());for(var o=e.length-1;0<o;o--)i+=c(e[o],r[o],e[o-1],r[o-1]);return i+=" Z"};n.createVerticalPath=function(t,e,n,r){for(var i="M".concat(e[0],",").concat(r[0]),a=0;a<e.length-1;a++)i+=l(e[a],r[a],e[a+1],r[a+1]);i+=" L".concat(s(n).pop(),",").concat(s(r).pop());for(var o=e.length-1;0<o;o--)i+=l(n[o],r[o],n[o-1],r[o-1]);return i+=" Z"}},{"./number":5}]},{},[1])(1)});