diff --git a/dist/frappe-gantt.min.js b/dist/frappe-gantt.min.js index ca60390..bb9dbd1 100644 --- a/dist/frappe-gantt.min.js +++ b/dist/frappe-gantt.min.js @@ -1,2 +1,2 @@ -!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("Gantt",[],n):"object"==typeof exports?exports.Gantt=n():t.Gantt=n()}(this,function(){return function(t){function n(r){if(e[r])return e[r].exports;var a=e[r]={exports:{},id:r,loaded:!1};return t[r].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}var e={};return n.m=t,n.c=e,n.p="",n(0)}([function(t,n,e){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function a(t,n,e){function r(){a(),I.change_view_mode=c,I.unselect_all=U,I.view_is=H,I.get_bar=G,I.trigger_event=R,I.refresh=d,c(I.config.view_mode)}function a(){var t={header_height:50,column_width:30,step:24,view_modes:["Quarter Day","Half Day","Day","Week","Month"],bar:{height:20},arrow:{curve:5},padding:18,view_mode:"Day",date_format:"YYYY-MM-DD",custom_popup_html:null};I.config=Object.assign({},t,e),o(n)}function o(n){I.element=t,I._tasks=n,I._bars=[],I._arrows=[],I.element_groups={}}function d(t){o(t),c(I.config.view_mode)}function c(t){w(t),l(),h(),R("view_change",[t])}function l(){f(),u(),g(),p()}function f(){I.tasks=I._tasks.map(function(t,n){if(t._start=moment(t.start,I.config.date_format),t._end=moment(t.end,I.config.date_format),t._index=n,t.start||t.end||(t._start=moment().startOf("day"),t._end=moment().startOf("day").add(2,"days")),!t.start&&t.end&&(t._start=t._end.clone().add(-2,"days")),t.start&&!t.end&&(t._end=t._start.clone().add(2,"days")),t.start&&t.end||(t.invalid=!0),"string"==typeof t.dependencies||!t.dependencies){var e=[];t.dependencies&&(e=t.dependencies.split(",").map(function(t){return t.trim()}).filter(function(t){return t})),t.dependencies=e}return t.id||(t.id=L(t)),t})}function u(){I.dependency_map={};var t=!0,n=!1,e=void 0;try{for(var r,a=I.tasks[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value,i=!0,d=!1,s=void 0;try{for(var c,l=o.dependencies[Symbol.iterator]();!(i=(c=l.next()).done);i=!0){var f=c.value;I.dependency_map[f]=I.dependency_map[f]||[],I.dependency_map[f].push(o.id)}}catch(u){d=!0,s=u}finally{try{!i&&l["return"]&&l["return"]()}finally{if(d)throw s}}}}catch(u){n=!0,e=u}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function g(){I.gantt_start=I.gantt_end=null;var t=!0,n=!1,e=void 0;try{for(var r,a=I.tasks[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;(!I.gantt_start||o._startI.gantt_end)&&(I.gantt_end=o._end)}}catch(i){n=!0,e=i}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}v(),m()}function p(){I.canvas||(I.canvas=Snap(I.element).addClass("gantt"))}function h(){_(),y(),k(),E(),T(),j(),W(),b(),A(),X()}function _(){I.canvas.clear(),I._bars=[],I._arrows=[]}function v(){H(["Quarter Day","Half Day"])?(I.gantt_start=I.gantt_start.clone().subtract(7,"day"),I.gantt_end=I.gantt_end.clone().add(7,"day")):H("Month")?(I.gantt_start=I.gantt_start.clone().startOf("year"),I.gantt_end=I.gantt_end.clone().endOf("month").add(1,"year")):(I.gantt_start=I.gantt_start.clone().startOf("month").subtract(1,"month"),I.gantt_end=I.gantt_end.clone().endOf("month").add(1,"month"))}function m(){I.dates=[];for(var t=null;null===t||t=1&&s.date()<8&&(c+=" thick"),H("Month")&&s.month()%3===0&&(c+=" thick"),I.canvas.path(Snap.format("M {x} {y} v {height}",{x:t,y:n,height:e})).addClass(c).appendTo(I.element_groups.grid),t+=H("Month")?s.daysInMonth()*I.config.column_width/30:I.config.column_width}}catch(l){a=!0,o=l}finally{try{!r&&d["return"]&&d["return"]()}finally{if(a)throw o}}}function D(){if(H("Day")){var t=moment().startOf("day").diff(I.gantt_start,"hours")/I.config.step*I.config.column_width,n=0,e=I.config.column_width,r=(I.config.bar.height+I.config.padding)*I.tasks.length+I.config.header_height+I.config.padding/2;I.canvas.rect(t,n,e,r).addClass("today-highlight").appendTo(I.element_groups.grid)}}function E(){var t=!0,n=!1,e=void 0;try{for(var r,a=S()[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;if(I.canvas.text(o.lower_x,o.lower_y,o.lower_text).addClass("lower-text").appendTo(I.element_groups.date),o.upper_text){var i=I.canvas.text(o.upper_x,o.upper_y,o.upper_text).addClass("upper-text").appendTo(I.element_groups.date);i.getBBox().x2>I.element_groups.grid.getBBox().width&&i.remove()}}}catch(d){n=!0,e=d}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function S(){var t=null,n=I.dates.map(function(n,e){var r=Y(n,t,e);return t=n,r});return n}function Y(t,n,e){n||(n=t.clone().add(1,"year"));var r={"Quarter Day_lower":t.format("HH"),"Half Day_lower":t.format("HH"),Day_lower:t.date()!==n.date()?t.format("D"):"",Week_lower:t.month()!==n.month()?t.format("D MMM"):t.format("D"),Month_lower:t.format("MMMM"),"Quarter Day_upper":t.date()!==n.date()?t.format("D MMM"):"","Half Day_upper":t.date()!==n.date()?t.month()!==n.month()?t.format("D MMM"):t.format("D"):"",Day_upper:t.month()!==n.month()?t.format("MMMM"):"",Week_upper:t.month()!==n.month()?t.format("MMMM"):"",Month_upper:t.year()!==n.year()?t.format("YYYY"):""},a={x:e*I.config.column_width,lower_y:I.config.header_height,upper_y:I.config.header_height-25},o={"Quarter Day_lower":4*I.config.column_width/2,"Quarter Day_upper":0,"Half Day_lower":2*I.config.column_width/2,"Half Day_upper":0,Day_lower:I.config.column_width/2,Day_upper:30*I.config.column_width/2,Week_lower:0,Week_upper:4*I.config.column_width/2,Month_lower:I.config.column_width/2,Month_upper:12*I.config.column_width/2};return{upper_text:r[I.config.view_mode+"_upper"],lower_text:r[I.config.view_mode+"_lower"],upper_x:a.x+o[I.config.view_mode+"_upper"],upper_y:a.upper_y,lower_x:a.x+o[I.config.view_mode+"_lower"],lower_y:a.lower_y}}function j(){I._arrows=[];var t=!0,n=!1,e=void 0;try{for(var r,a=function(){var t=r.value,n=[];n=t.dependencies.map(function(n){var e=O(n);if(e){var r=(0,s["default"])(I,I._bars[e._index],I._bars[t._index]);return I.element_groups.arrow.add(r.element),r}}).filter(function(t){return t}),I._arrows=I._arrows.concat(n)},o=I.tasks[Symbol.iterator]();!(t=(r=o.next()).done);t=!0)a()}catch(i){n=!0,e=i}finally{try{!t&&o["return"]&&o["return"]()}finally{if(n)throw e}}}function T(){I._bars=I.tasks.map(function(t){var n=(0,i["default"])(I,t);return I.element_groups.bar.add(n.group),n})}function W(){var t=!0,n=!1,e=void 0;try{for(var r,a=function(){var t=r.value;t.arrows=I._arrows.filter(function(n){return n.from_task.task.id===t.task.id||n.to_task.task.id===t.task.id})},o=I._bars[Symbol.iterator]();!(t=(r=o.next()).done);t=!0)a()}catch(i){n=!0,e=i}finally{try{!t&&o["return"]&&o["return"]()}finally{if(n)throw e}}}function X(){I.element_groups.grid.click(function(){U(),I.element_groups.details.selectAll(".details-wrapper").forEach(function(t){return t.addClass("hide")})})}function U(){I.canvas.selectAll(".bar-wrapper").forEach(function(t){t.removeClass("active")})}function H(t){if("string"==typeof t)return I.config.view_mode===t;if(Array.isArray(t)){var n=!0,e=!1,r=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var i=a.value;if(I.config.view_mode===i)return!0}}catch(d){e=!0,r=d}finally{try{!n&&o["return"]&&o["return"]()}finally{if(e)throw r}}return!1}}function O(t){return I.tasks.find(function(n){return n.id===t})}function G(t){return I._bars.find(function(n){return n.task.id===t})}function L(t){return t.name+"_"+Math.random().toString(36).slice(2,12)}function R(t,n){I.config["on_"+t]&&I.config["on_"+t].apply(null,n)}var I={};return r(),I}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a,e(1);var o=e(5),i=r(o),d=e(6),s=r(d);t.exports=n["default"]},function(t,n,e){var r=e(2);"string"==typeof r&&(r=[[t.id,r,""]]);e(4)(r,{});r.locals&&(t.exports=r.locals)},function(t,n,e){n=t.exports=e(3)(),n.push([t.id,".gantt .grid-background{fill:none}.gantt .grid-header{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}.gantt .grid-row{fill:#fff}.gantt .grid-row:nth-child(2n){fill:#f5f5f5}.gantt .row-line{stroke:#ebeff2}.gantt .tick{stroke:#e0e0e0;stroke-width:.2}.gantt .tick.thick{stroke-width:.4}.gantt .today-highlight{fill:#fcf8e3;opacity:.5}.gantt #arrow{fill:none;stroke:#666;stroke-width:1.4}.gantt .bar{fill:#b8c2cc;stroke:#8d99a6;stroke-width:0;transition:stroke-width .3s ease}.gantt .bar-progress{fill:#a3a3ff}.gantt .bar-invalid{fill:transparent;stroke:#8d99a6;stroke-width:1;stroke-dasharray:5}.gantt .bar-invalid~.bar-label{fill:#555}.gantt .bar-label{fill:#fff;dominant-baseline:central;text-anchor:middle;font-size:12px;font-weight:lighter;letter-spacing:.8px}.gantt .bar-label.big{fill:#555;text-anchor:start}.gantt .handle{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden;transition:opacity .3s ease}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper:hover .bar{stroke-width:2}.gantt .bar-wrapper:hover .handle{visibility:visible;opacity:1}.gantt .bar-wrapper.active .bar{stroke-width:2}.gantt .lower-text,.gantt .upper-text{font-size:12px;text-anchor:middle}.gantt .upper-text{fill:#555}.gantt .lower-text{fill:#333}.gantt #details .details-container{background:#fff;display:inline-block;padding:12px}.gantt #details .details-container h5,.gantt #details .details-container p{margin:0}.gantt #details .details-container h5{font-size:12px;font-weight:700;margin-bottom:10px;color:#555}.gantt #details .details-container p{font-size:12px;margin-bottom:6px;color:#666}.gantt #details .details-container p:last-child{margin-bottom:0}.gantt .hide{display:none}","",{version:3,sources:["/./src/src/gantt.scss"],names:[],mappings:"AAYA,wBAGE,SAAU,CAHZ,oBAME,UACA,eACA,gBAAiB,CARnB,iBAWE,SAAa,CAXf,+BAcE,YAvBgB,CASlB,iBAiBE,cAzB0B,CAQ5B,aAoBE,eACA,eAAiB,CArBnB,mBAuBG,eAAiB,CAvBpB,wBA2BE,aACA,UAAY,CA5Bd,cAgCE,UACA,YACA,gBAAiB,CAlCnB,YAsCE,aACA,eACA,eACA,gCAAiC,CAzCnC,qBA4CE,YA/CY,CAGd,oBA+CE,iBACA,eACA,eACA,kBAAmB,CAlDrB,+BAqDG,SA1Dc,CAKjB,kBAyDE,UACA,0BACA,mBACA,eACA,oBACA,mBAAqB,CA9DvB,sBAiEG,UACA,iBAAkB,CAlErB,eAuEE,UACA,iBACA,UACA,kBACA,2BAA4B,CA3E9B,oBA+EE,cAAe,CA/EjB,+BAmFI,cAAe,CAnFnB,kCAuFI,mBACA,SAAU,CAxFd,gCA8FI,cAAe,CA9FnB,sCAoGE,eACA,kBAAmB,CArGrB,mBAwGE,SA7Ge,CAKjB,mBA2GE,SA/Ge,CAIjB,mCA+GE,gBACA,qBACA,YAAa,CAjHf,2EAoHG,QAAS,CApHZ,sCAwHG,eACA,gBACA,mBACA,UAhIc,CAKjB,qCA+HG,eACA,kBACA,UAvIc,CAMjB,gDAqIG,eAAgB,CArInB,aA0IE,YAAa,CACb",file:"gantt.scss",sourcesContent:["$bar-color: #b8c2cc;\n$bar-stroke: #8D99A6;\n$border-color: #e0e0e0;\n$light-bg: #f5f5f5;\n$light-border-color: #ebeff2;\n$light-yellow: #fcf8e3;\n$text-muted: #666;\n$text-light: #555;\n$text-color: #333;\n$blue: #a3a3ff;\n$handle-color: #ddd;\n\n.gantt {\n\n\t.grid-background {\n\t\tfill: none;\n\t}\n\t.grid-header {\n\t\tfill: #ffffff;\n\t\tstroke: $border-color;\n\t\tstroke-width: 1.4;\n\t}\n\t.grid-row {\n\t\tfill: #ffffff;\n\t}\n\t.grid-row:nth-child(even) {\n\t\tfill: $light-bg;\n\t}\n\t.row-line {\n\t\tstroke: $light-border-color;\n\t}\n\t.tick {\n\t\tstroke: $border-color;\n\t\tstroke-width: 0.2;\n\t\t&.thick {\n\t\t\tstroke-width: 0.4;\n\t\t}\n\t}\n\t.today-highlight {\n\t\tfill: $light-yellow;\n\t\topacity: 0.5;\n\t}\n\n\t#arrow {\n\t\tfill: none;\n\t\tstroke: $text-muted;\n\t\tstroke-width: 1.4;\n\t}\n\n\t.bar {\n\t\tfill: $bar-color;\n\t\tstroke: $bar-stroke;\n\t\tstroke-width: 0;\n\t\ttransition: stroke-width .3s ease;\n\t}\n\t.bar-progress {\n\t\tfill: $blue;\n\t}\n\t.bar-invalid {\n\t\tfill: transparent;\n\t\tstroke: $bar-stroke;\n\t\tstroke-width: 1;\n\t\tstroke-dasharray: 5;\n\n\t\t&~.bar-label {\n\t\t\tfill: $text-light;\n\t\t}\n\t}\n\t.bar-label {\n\t\tfill: #fff;\n\t\tdominant-baseline: central;\n\t\ttext-anchor: middle;\n\t\tfont-size: 12px;\n\t\tfont-weight: lighter;\n\t\tletter-spacing: 0.8px;\n\n\t\t&.big {\n\t\t\tfill: $text-light;\n\t\t\ttext-anchor: start;\n\t\t}\n\t}\n\n\t.handle {\n\t\tfill: $handle-color;\n\t\tcursor: ew-resize;\n\t\topacity: 0;\n\t\tvisibility: hidden;\n\t\ttransition: opacity .3s ease;\n\t}\n\n\t.bar-wrapper {\n\t\tcursor: pointer;\n\n\t\t&:hover {\n\t\t\t.bar {\n\t\t\t\tstroke-width: 2;\n\t\t\t}\n\n\t\t\t.handle {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&.active {\n\t\t\t.bar {\n\t\t\t\tstroke-width: 2;\n\t\t\t}\n\t\t}\n\t}\n\n\t.lower-text, .upper-text {\n\t\tfont-size: 12px;\n\t\ttext-anchor: middle;\n\t}\n\t.upper-text {\n\t\tfill: $text-light;\n\t}\n\t.lower-text {\n\t\tfill: $text-color;\n\t}\n\n\t#details .details-container {\n\t\tbackground: #fff;\n\t\tdisplay: inline-block;\n\t\tpadding: 12px;\n\n\t\th5, p {\n\t\t\tmargin: 0;\n\t\t}\n\n\t\th5 {\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 10px;\n\t\t\tcolor: $text-light;\n\t\t}\n\n\t\tp {\n\t\t\tfont-size: 12px;\n\t\t\tmargin-bottom: 6px;\n\t\t\tcolor: $text-muted;\n\t\t}\n\n\t\tp:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\n\t.hide {\n\t\tdisplay: none;\n\t}\n}"],sourceRoot:"webpack://"}])},function(t,n){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],n=0;n=0&&y.splice(n,1)}function d(t){var n=document.createElement("style");return n.type="text/css",o(t,n),n}function s(t){var n=document.createElement("link");return n.rel="stylesheet",o(t,n),n}function c(t,n){var e,r,a;if(n.singleton){var o=m++;e=v||(v=d(n)),r=l.bind(null,e,o,!1),a=l.bind(null,e,o,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=s(n),r=u.bind(null,e),a=function(){i(e),e.href&&URL.revokeObjectURL(e.href)}):(e=d(n),r=f.bind(null,e),a=function(){i(e)});return r(t),function(n){if(n){if(n.css===t.css&&n.media===t.media&&n.sourceMap===t.sourceMap)return;r(t=n)}else a()}}function l(t,n,e,r){var a=e?"":r.css;if(t.styleSheet)t.styleSheet.cssText=w(n,a);else{var o=document.createTextNode(a),i=t.childNodes;i[n]&&t.removeChild(i[n]),i.length?t.insertBefore(o,i[n]):t.appendChild(o)}}function f(t,n){var e=n.css,r=n.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}function u(t,n){var e=n.css,r=n.sourceMap;r&&(e+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([e],{type:"text/css"}),o=t.href;t.href=URL.createObjectURL(a),o&&URL.revokeObjectURL(o)}var g={},p=function(t){var n;return function(){return"undefined"==typeof n&&(n=t.apply(this,arguments)),n}},h=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),_=p(function(){return document.head||document.getElementsByTagName("head")[0]}),v=null,m=0,y=[];t.exports=function(t,n){n=n||{},"undefined"==typeof n.singleton&&(n.singleton=h()),"undefined"==typeof n.insertAt&&(n.insertAt="bottom");var e=a(t);return r(e,n),function(t){for(var o=[],i=0;i\n\t\t\t\t\n\t\t\t\t\t'+r+"\n\t\t\t\t\n\t\t\t\t");q.details_box.append(a)}function _(){if(t.config.custom_popup_html){var e=t.config.custom_popup_html;if("string"==typeof e)return e;if(N(e))return e(n)}var r=q.task._start.format("MMM D"),a=q.task._end.format("MMM D"),o=q.task.name+": "+r+" - "+a,i="Duration: "+q.duration+" days",d=q.task.progress?"Progress: "+q.task.progress:null,s='\n\t\t\t
\n\t\t\t\t
'+o+"
\n\t\t\t\t

"+i+"

\n\t\t\t\t"+(d?"

"+d+"

":"")+"\n\t\t\t
\n\t\t";return s}function v(){return{x:q.$bar.getEndX()+2,y:q.$bar.getY()-10}}function m(){function t(t,n){M(t,n)}function n(){D()}function e(t,n){C(t,n)}function r(){B()}var a=y(),o=a.left,i=a.right;o.drag(e,A,r),i.drag(t,A,n)}function y(){return{left:q.handle_group.select(".handle.left"),right:q.handle_group.select(".handle.right")}}function w(){q.bar_group.drag(x,A,k)}function b(){function t(t,n){t>a.max_dx&&(t=a.max_dx),t=n},a);if(!c)return void(i=null);G(d,"x",a)}i&&i>=t.config.column_width&&G(d,"width",i),R(),I(),L(),z(),Q()}function S(){q.group.click(function(){q.action_completed||(q.group.hasClass("active")&&t.trigger_event("click",[q.task]),t.unselect_all(),q.group.toggleClass("active"))})}function Y(){var n=W(),e=n.new_start_date,r=n.new_end_date;q.task._start=e,q.task._end=r,h(),t.trigger_event("date_change",[q.task,e,r])}function j(){var n=X();q.task.progress=n,h(),t.trigger_event("progress_change",[q.task,n])}function T(){q.action_completed=!0,setTimeout(function(){return q.action_completed=!1},2e3)}function W(){var n=q.$bar,e=n.getX()/t.config.column_width,r=t.gantt_start.clone().add(e*t.config.step,"hours"),a=n.getWidth()/t.config.column_width,o=r.clone().add(a*t.config.step,"hours");return o.add("-1","seconds"),{new_start_date:r,new_end_date:o}}function X(){var t=q.$bar_progress.getWidth()/q.$bar.getWidth()*100;return parseInt(t,10)}function U(){var n=q.task._start.diff(t.gantt_start,"hours")/t.config.step*t.config.column_width;return t.view_is("Month")&&(n=q.task._start.diff(t.gantt_start,"days")*t.config.column_width/30),n}function H(){return t.config.header_height+t.config.padding+q.task._index*(q.height+t.config.padding)}function O(n){var e=n,r=void 0,a=void 0;return t.view_is("Week")?(r=n%(t.config.column_width/7),a=e-r+(rt.getWidth()?n.addClass("big").attr("x",t.getX()+t.getWidth()+5):n.removeClass("big").attr("x",t.getX()+t.getWidth()/2)}function I(){var t=q.$bar;q.handle_group.select(".handle.left").attr({x:t.getX()+1}),q.handle_group.select(".handle.right").attr({x:t.getEndX()-9});var n=q.group.select(".handle.progress");n&&n.attr("points",u())}function z(){var t=!0,n=!1,e=void 0;try{for(var r,a=q.arrows[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;o.update()}}catch(i){n=!0,e=i}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function Q(){var t=v(),n=t.x,e=t.y;q.details_box&&q.details_box.transform("t"+n+","+e)}function N(t){var n={};return t&&"[object Function]"===n.toString.call(t)}var q={};return q.onstart=A,q.onmove=x,q.onstop=k,q.onmove_handle_left=C,q.onstop_handle_left=B,e(),q}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=e,t.exports=n["default"]},function(t,n){"use strict";function e(t,n,e){function r(){d.from_task=n,d.to_task=e,a(),o()}function a(){d.start_x=n.$bar.getX()+n.$bar.getWidth()/2;for(var r=function(){return e.$bar.getX()n.$bar.getX()+t.config.padding};r();)d.start_x-=10;d.start_y=t.config.header_height+t.config.bar.height+(t.config.padding+t.config.bar.height)*n.task._index+t.config.padding,d.end_x=e.$bar.getX()-t.config.padding/2,d.end_y=t.config.header_height+t.config.bar.height/2+(t.config.padding+t.config.bar.height)*e.task._index+t.config.padding;var a=n.task._index>e.task._index;d.curve=t.config.arrow.curve,d.clockwise=a?1:0,d.curve_y=a?-d.curve:d.curve,d.offset=a?d.end_y+t.config.arrow.curve:d.end_y-t.config.arrow.curve,d.path=Snap.format("M {start_x} {start_y} V {offset} a {curve} {curve} 0 0 {clockwise} {curve} {curve_y} L {end_x} {end_y} m -5 -5 l 5 5 l -5 5",{start_x:d.start_x,start_y:d.start_y,end_x:d.end_x,end_y:d.end_y,offset:d.offset,curve:d.curve,clockwise:d.clockwise,curve_y:d.curve_y}),e.$bar.getX()10&&(t.end=null),t._index=n,t.start||t.end||(t._start=moment().startOf("day"),t._end=moment().startOf("day").add(2,"days")),!t.start&&t.end&&(t._start=t._end.clone().add(-2,"days")),t.start&&!t.end&&(t._end=t._start.clone().add(2,"days")),t.start&&t.end||(t.invalid=!0),"string"==typeof t.dependencies||!t.dependencies){var e=[];t.dependencies&&(e=t.dependencies.split(",").map(function(t){return t.trim()}).filter(function(t){return t})),t.dependencies=e}return t.id||(t.id=L(t)),t})}function u(){z.dependency_map={};var t=!0,n=!1,e=void 0;try{for(var r,a=z.tasks[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value,i=!0,d=!1,s=void 0;try{for(var c,l=o.dependencies[Symbol.iterator]();!(i=(c=l.next()).done);i=!0){var f=c.value;z.dependency_map[f]=z.dependency_map[f]||[],z.dependency_map[f].push(o.id)}}catch(u){d=!0,s=u}finally{try{!i&&l["return"]&&l["return"]()}finally{if(d)throw s}}}}catch(u){n=!0,e=u}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function g(){z.gantt_start=z.gantt_end=null;var t=!0,n=!1,e=void 0;try{for(var r,a=z.tasks[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;(!z.gantt_start||o._startz.gantt_end)&&(z.gantt_end=o._end)}}catch(i){n=!0,e=i}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}v(),m()}function p(){z.canvas||(z.canvas=Snap(z.element).addClass("gantt"))}function h(){_(),y(),k(),D(),Y(),H(),j(),b(),A(),W()}function _(){z.canvas.clear(),z._bars=[],z._arrows=[]}function v(){U(["Quarter Day","Half Day"])?(z.gantt_start=z.gantt_start.clone().subtract(7,"day"),z.gantt_end=z.gantt_end.clone().add(7,"day")):U("Month")?(z.gantt_start=z.gantt_start.clone().startOf("year"),z.gantt_end=z.gantt_end.clone().endOf("month").add(1,"year")):(z.gantt_start=z.gantt_start.clone().startOf("month").subtract(1,"month"),z.gantt_end=z.gantt_end.clone().endOf("month").add(1,"month"))}function m(){z.dates=[];for(var t=null;null===t||t=1&&s.date()<8&&(c+=" thick"),U("Month")&&s.month()%3===0&&(c+=" thick"),z.canvas.path(Snap.format("M {x} {y} v {height}",{x:t,y:n,height:e})).addClass(c).appendTo(z.element_groups.grid),t+=U("Month")?s.daysInMonth()*z.config.column_width/30:z.config.column_width}}catch(l){a=!0,o=l}finally{try{!r&&d["return"]&&d["return"]()}finally{if(a)throw o}}}function S(){if(U("Day")){var t=moment().startOf("day").diff(z.gantt_start,"hours")/z.config.step*z.config.column_width,n=0,e=z.config.column_width,r=(z.config.bar.height+z.config.padding)*z.tasks.length+z.config.header_height+z.config.padding/2;z.canvas.rect(t,n,e,r).addClass("today-highlight").appendTo(z.element_groups.grid)}}function D(){var t=!0,n=!1,e=void 0;try{for(var r,a=E()[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;if(z.canvas.text(o.lower_x,o.lower_y,o.lower_text).addClass("lower-text").appendTo(z.element_groups.date),o.upper_text){var i=z.canvas.text(o.upper_x,o.upper_y,o.upper_text).addClass("upper-text").appendTo(z.element_groups.date);i.getBBox().x2>z.element_groups.grid.getBBox().width&&i.remove()}}}catch(d){n=!0,e=d}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function E(){var t=null,n=z.dates.map(function(n,e){var r=T(n,t,e);return t=n,r});return n}function T(t,n,e){n||(n=t.clone().add(1,"year"));var r={"Quarter Day_lower":t.format("HH"),"Half Day_lower":t.format("HH"),Day_lower:t.date()!==n.date()?t.format("D"):"",Week_lower:t.month()!==n.month()?t.format("D MMM"):t.format("D"),Month_lower:t.format("MMMM"),"Quarter Day_upper":t.date()!==n.date()?t.format("D MMM"):"","Half Day_upper":t.date()!==n.date()?t.month()!==n.month()?t.format("D MMM"):t.format("D"):"",Day_upper:t.month()!==n.month()?t.format("MMMM"):"",Week_upper:t.month()!==n.month()?t.format("MMMM"):"",Month_upper:t.year()!==n.year()?t.format("YYYY"):""},a={x:e*z.config.column_width,lower_y:z.config.header_height,upper_y:z.config.header_height-25},o={"Quarter Day_lower":4*z.config.column_width/2,"Quarter Day_upper":0,"Half Day_lower":2*z.config.column_width/2,"Half Day_upper":0,Day_lower:z.config.column_width/2,Day_upper:30*z.config.column_width/2,Week_lower:0,Week_upper:4*z.config.column_width/2,Month_lower:z.config.column_width/2,Month_upper:12*z.config.column_width/2};return{upper_text:r[z.config.view_mode+"_upper"],lower_text:r[z.config.view_mode+"_lower"],upper_x:a.x+o[z.config.view_mode+"_upper"],upper_y:a.upper_y,lower_x:a.x+o[z.config.view_mode+"_lower"],lower_y:a.lower_y}}function H(){z._arrows=[];var t=!0,n=!1,e=void 0;try{for(var r,a=function(){var t=r.value,n=[];n=t.dependencies.map(function(n){var e=O(n);if(e){var r=(0,s["default"])(z,z._bars[e._index],z._bars[t._index]);return z.element_groups.arrow.add(r.element),r}}).filter(function(t){return t}),z._arrows=z._arrows.concat(n)},o=z.tasks[Symbol.iterator]();!(t=(r=o.next()).done);t=!0)a()}catch(i){n=!0,e=i}finally{try{!t&&o["return"]&&o["return"]()}finally{if(n)throw e}}}function Y(){z._bars=z.tasks.map(function(t){var n=(0,i["default"])(z,t);return z.element_groups.bar.add(n.group),n})}function j(){var t=!0,n=!1,e=void 0;try{for(var r,a=function(){var t=r.value;t.arrows=z._arrows.filter(function(n){return n.from_task.task.id===t.task.id||n.to_task.task.id===t.task.id})},o=z._bars[Symbol.iterator]();!(t=(r=o.next()).done);t=!0)a()}catch(i){n=!0,e=i}finally{try{!t&&o["return"]&&o["return"]()}finally{if(n)throw e}}}function W(){z.element_groups.grid.click(function(){X(),z.element_groups.details.selectAll(".details-wrapper").forEach(function(t){return t.addClass("hide")})})}function X(){z.canvas.selectAll(".bar-wrapper").forEach(function(t){t.removeClass("active")})}function U(t){if("string"==typeof t)return z.config.view_mode===t;if(Array.isArray(t)){var n=!0,e=!1,r=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var i=a.value;if(z.config.view_mode===i)return!0}}catch(d){e=!0,r=d}finally{try{!n&&o["return"]&&o["return"]()}finally{if(e)throw r}}return!1}}function O(t){return z.tasks.find(function(n){return n.id===t})}function G(t){return z._bars.find(function(n){return n.task.id===t})}function L(t){return t.name+"_"+Math.random().toString(36).slice(2,12)}function R(t,n){z.config["on_"+t]&&z.config["on_"+t].apply(null,n)}var z={};return r(),z}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a,e(1);var o=e(5),i=r(o),d=e(6),s=r(d);t.exports=n["default"]},function(t,n,e){var r=e(2);"string"==typeof r&&(r=[[t.id,r,""]]);e(4)(r,{});r.locals&&(t.exports=r.locals)},function(t,n,e){n=t.exports=e(3)(),n.push([t.id,".gantt .grid-background{fill:none}.gantt .grid-header{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}.gantt .grid-row{fill:#fff}.gantt .grid-row:nth-child(2n){fill:#f5f5f5}.gantt .row-line{stroke:#ebeff2}.gantt .tick{stroke:#e0e0e0;stroke-width:.2}.gantt .tick.thick{stroke-width:.4}.gantt .today-highlight{fill:#fcf8e3;opacity:.5}.gantt #arrow{fill:none;stroke:#666;stroke-width:1.4}.gantt .bar{fill:#b8c2cc;stroke:#8d99a6;stroke-width:0;transition:stroke-width .3s ease}.gantt .bar-progress{fill:#a3a3ff}.gantt .bar-invalid{fill:transparent;stroke:#8d99a6;stroke-width:1;stroke-dasharray:5}.gantt .bar-invalid~.bar-label{fill:#555}.gantt .bar-label{fill:#fff;dominant-baseline:central;text-anchor:middle;font-size:12px;font-weight:lighter}.gantt .bar-label.big{fill:#555;text-anchor:start}.gantt .handle{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden;transition:opacity .3s ease}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper:hover .bar{stroke-width:2}.gantt .bar-wrapper:hover .handle{visibility:visible;opacity:1}.gantt .bar-wrapper.active .bar{stroke-width:2}.gantt .lower-text,.gantt .upper-text{font-size:12px;text-anchor:middle}.gantt .upper-text{fill:#555}.gantt .lower-text{fill:#333}.gantt #details .details-container{background:#fff;display:inline-block;padding:12px}.gantt #details .details-container h5,.gantt #details .details-container p{margin:0}.gantt #details .details-container h5{font-size:12px;font-weight:700;margin-bottom:10px;color:#555}.gantt #details .details-container p{font-size:12px;margin-bottom:6px;color:#666}.gantt #details .details-container p:last-child{margin-bottom:0}.gantt .hide{display:none}","",{version:3,sources:["/./src/src/gantt.scss"],names:[],mappings:"AAYA,wBAGE,SAAU,CAHZ,oBAME,UACA,eACA,gBAAiB,CARnB,iBAWE,SAAa,CAXf,+BAcE,YAvBgB,CASlB,iBAiBE,cAzB0B,CAQ5B,aAoBE,eACA,eAAiB,CArBnB,mBAuBG,eAAiB,CAvBpB,wBA2BE,aACA,UAAY,CA5Bd,cAgCE,UACA,YACA,gBAAiB,CAlCnB,YAsCE,aACA,eACA,eACA,gCAAiC,CAzCnC,qBA4CE,YA/CY,CAGd,oBA+CE,iBACA,eACA,eACA,kBAAmB,CAlDrB,+BAqDG,SA1Dc,CAKjB,kBAyDE,UACA,0BACA,mBACA,eACA,mBAAoB,CA7DtB,sBAgEG,UACA,iBAAkB,CAjErB,eAsEE,UACA,iBACA,UACA,kBACA,2BAA4B,CA1E9B,oBA8EE,cAAe,CA9EjB,+BAkFI,cAAe,CAlFnB,kCAsFI,mBACA,SAAU,CAvFd,gCA6FI,cAAe,CA7FnB,sCAmGE,eACA,kBAAmB,CApGrB,mBAuGE,SA5Ge,CAKjB,mBA0GE,SA9Ge,CAIjB,mCA8GE,gBACA,qBACA,YAAa,CAhHf,2EAmHG,QAAS,CAnHZ,sCAuHG,eACA,gBACA,mBACA,UA/Hc,CAKjB,qCA8HG,eACA,kBACA,UAtIc,CAMjB,gDAoIG,eAAgB,CApInB,aAyIE,YAAa,CACb",file:"gantt.scss",sourcesContent:["$bar-color: #b8c2cc;\n$bar-stroke: #8D99A6;\n$border-color: #e0e0e0;\n$light-bg: #f5f5f5;\n$light-border-color: #ebeff2;\n$light-yellow: #fcf8e3;\n$text-muted: #666;\n$text-light: #555;\n$text-color: #333;\n$blue: #a3a3ff;\n$handle-color: #ddd;\n\n.gantt {\n\n\t.grid-background {\n\t\tfill: none;\n\t}\n\t.grid-header {\n\t\tfill: #ffffff;\n\t\tstroke: $border-color;\n\t\tstroke-width: 1.4;\n\t}\n\t.grid-row {\n\t\tfill: #ffffff;\n\t}\n\t.grid-row:nth-child(even) {\n\t\tfill: $light-bg;\n\t}\n\t.row-line {\n\t\tstroke: $light-border-color;\n\t}\n\t.tick {\n\t\tstroke: $border-color;\n\t\tstroke-width: 0.2;\n\t\t&.thick {\n\t\t\tstroke-width: 0.4;\n\t\t}\n\t}\n\t.today-highlight {\n\t\tfill: $light-yellow;\n\t\topacity: 0.5;\n\t}\n\n\t#arrow {\n\t\tfill: none;\n\t\tstroke: $text-muted;\n\t\tstroke-width: 1.4;\n\t}\n\n\t.bar {\n\t\tfill: $bar-color;\n\t\tstroke: $bar-stroke;\n\t\tstroke-width: 0;\n\t\ttransition: stroke-width .3s ease;\n\t}\n\t.bar-progress {\n\t\tfill: $blue;\n\t}\n\t.bar-invalid {\n\t\tfill: transparent;\n\t\tstroke: $bar-stroke;\n\t\tstroke-width: 1;\n\t\tstroke-dasharray: 5;\n\n\t\t&~.bar-label {\n\t\t\tfill: $text-light;\n\t\t}\n\t}\n\t.bar-label {\n\t\tfill: #fff;\n\t\tdominant-baseline: central;\n\t\ttext-anchor: middle;\n\t\tfont-size: 12px;\n\t\tfont-weight: lighter;\n\n\t\t&.big {\n\t\t\tfill: $text-light;\n\t\t\ttext-anchor: start;\n\t\t}\n\t}\n\n\t.handle {\n\t\tfill: $handle-color;\n\t\tcursor: ew-resize;\n\t\topacity: 0;\n\t\tvisibility: hidden;\n\t\ttransition: opacity .3s ease;\n\t}\n\n\t.bar-wrapper {\n\t\tcursor: pointer;\n\n\t\t&:hover {\n\t\t\t.bar {\n\t\t\t\tstroke-width: 2;\n\t\t\t}\n\n\t\t\t.handle {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&.active {\n\t\t\t.bar {\n\t\t\t\tstroke-width: 2;\n\t\t\t}\n\t\t}\n\t}\n\n\t.lower-text, .upper-text {\n\t\tfont-size: 12px;\n\t\ttext-anchor: middle;\n\t}\n\t.upper-text {\n\t\tfill: $text-light;\n\t}\n\t.lower-text {\n\t\tfill: $text-color;\n\t}\n\n\t#details .details-container {\n\t\tbackground: #fff;\n\t\tdisplay: inline-block;\n\t\tpadding: 12px;\n\n\t\th5, p {\n\t\t\tmargin: 0;\n\t\t}\n\n\t\th5 {\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 10px;\n\t\t\tcolor: $text-light;\n\t\t}\n\n\t\tp {\n\t\t\tfont-size: 12px;\n\t\t\tmargin-bottom: 6px;\n\t\t\tcolor: $text-muted;\n\t\t}\n\n\t\tp:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\n\t.hide {\n\t\tdisplay: none;\n\t}\n}\n"],sourceRoot:"webpack://"}])},function(t,n){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],n=0;n=0&&y.splice(n,1)}function d(t){var n=document.createElement("style");return n.type="text/css",o(t,n),n}function s(t){var n=document.createElement("link");return n.rel="stylesheet",o(t,n),n}function c(t,n){var e,r,a;if(n.singleton){var o=m++;e=v||(v=d(n)),r=l.bind(null,e,o,!1),a=l.bind(null,e,o,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=s(n),r=u.bind(null,e),a=function(){i(e),e.href&&URL.revokeObjectURL(e.href)}):(e=d(n),r=f.bind(null,e),a=function(){i(e)});return r(t),function(n){if(n){if(n.css===t.css&&n.media===t.media&&n.sourceMap===t.sourceMap)return;r(t=n)}else a()}}function l(t,n,e,r){var a=e?"":r.css;if(t.styleSheet)t.styleSheet.cssText=w(n,a);else{var o=document.createTextNode(a),i=t.childNodes;i[n]&&t.removeChild(i[n]),i.length?t.insertBefore(o,i[n]):t.appendChild(o)}}function f(t,n){var e=n.css,r=n.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}function u(t,n){var e=n.css,r=n.sourceMap;r&&(e+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([e],{type:"text/css"}),o=t.href;t.href=URL.createObjectURL(a),o&&URL.revokeObjectURL(o)}var g={},p=function(t){var n;return function(){return"undefined"==typeof n&&(n=t.apply(this,arguments)),n}},h=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),_=p(function(){return document.head||document.getElementsByTagName("head")[0]}),v=null,m=0,y=[];t.exports=function(t,n){n=n||{},"undefined"==typeof n.singleton&&(n.singleton=h()),"undefined"==typeof n.insertAt&&(n.insertAt="bottom");var e=a(t);return r(e,n),function(t){for(var o=[],i=0;i\n\t\t\t\t\n\t\t\t\t\t'+r+"\n\t\t\t\t\n\t\t\t\t");N.details_box.append(a)}function _(){if(t.config.custom_popup_html){var e=t.config.custom_popup_html;if("string"==typeof e)return e;if(F(e))return e(n)}var r=N.task._start.format("MMM D"),a=N.task._end.format("MMM D"),o=N.task.name+": "+r+" - "+a,i="Duration: "+N.duration+" days",d=N.task.progress?"Progress: "+N.task.progress:null,s='\n\t\t\t
\n\t\t\t\t
'+o+"
\n\t\t\t\t

"+i+"

\n\t\t\t\t"+(d?"

"+d+"

":"")+"\n\t\t\t
\n\t\t";return s}function v(){return{x:N.$bar.getEndX()+2,y:N.$bar.getY()-10}}function m(){function t(t,n){M(t,n)}function n(){S()}function e(t,n){C(t,n)}function r(){B()}var a=y(),o=a.left,i=a.right;o.drag(e,A,r),i.drag(t,A,n)}function y(){return{left:N.handle_group.select(".handle.left"),right:N.handle_group.select(".handle.right")}}function w(){N.bar_group.drag(x,A,k)}function b(){function t(t,n){t>a.max_dx&&(t=a.max_dx),t=n},a);if(!c)return void(i=null);G(d,"x",a)}i&&i>=t.config.column_width&&G(d,"width",i),R(),z(),L(),I(),Q()}function E(){N.group.click(function(){N.action_completed||(N.group.hasClass("active")&&t.trigger_event("click",[N.task]),t.unselect_all(),N.group.toggleClass("active"))})}function T(){var n=j(),e=n.new_start_date,r=n.new_end_date;N.task._start=e,N.task._end=r,h(),t.trigger_event("date_change",[N.task,e,r])}function H(){var n=W();N.task.progress=n,h(),t.trigger_event("progress_change",[N.task,n])}function Y(){N.action_completed=!0,setTimeout(function(){return N.action_completed=!1},2e3)}function j(){var n=N.$bar,e=n.getX()/t.config.column_width,r=t.gantt_start.clone().add(e*t.config.step,"hours"),a=n.getWidth()/t.config.column_width,o=r.clone().add(a*t.config.step,"hours");return o.add("-1","seconds"),{new_start_date:r,new_end_date:o}}function W(){var t=N.$bar_progress.getWidth()/N.$bar.getWidth()*100;return parseInt(t,10)}function X(){var n=N.task._start.diff(t.gantt_start,"hours")/t.config.step*t.config.column_width;return t.view_is("Month")&&(n=N.task._start.diff(t.gantt_start,"days")*t.config.column_width/30),n}function U(){return t.config.header_height+t.config.padding+N.task._index*(N.height+t.config.padding)}function O(n){var e=n,r=void 0,a=void 0;return t.view_is("Week")?(r=n%(t.config.column_width/7),a=e-r+(rt.getWidth()?n.addClass("big").attr("x",t.getX()+t.getWidth()+5):n.removeClass("big").attr("x",t.getX()+t.getWidth()/2)}function z(){var t=N.$bar;N.handle_group.select(".handle.left").attr({x:t.getX()+1}),N.handle_group.select(".handle.right").attr({x:t.getEndX()-9});var n=N.group.select(".handle.progress");n&&n.attr("points",u())}function I(){var t=!0,n=!1,e=void 0;try{for(var r,a=N.arrows[Symbol.iterator]();!(t=(r=a.next()).done);t=!0){var o=r.value;o.update()}}catch(i){n=!0,e=i}finally{try{!t&&a["return"]&&a["return"]()}finally{if(n)throw e}}}function Q(){var t=v(),n=t.x,e=t.y;N.details_box&&N.details_box.transform("t"+n+","+e)}function F(t){var n={};return t&&"[object Function]"===n.toString.call(t)}var N={};return N.onstart=A,N.onmove=x,N.onstop=k,N.onmove_handle_left=C,N.onstop_handle_left=B,e(),N}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=e,t.exports=n["default"]},function(t,n){"use strict";function e(t,n,e){function r(){d.from_task=n,d.to_task=e,a(),o()}function a(){d.start_x=n.$bar.getX()+n.$bar.getWidth()/2;for(var r=function(){return e.$bar.getX()n.$bar.getX()+t.config.padding};r();)d.start_x-=10;d.start_y=t.config.header_height+t.config.bar.height+(t.config.padding+t.config.bar.height)*n.task._index+t.config.padding,d.end_x=e.$bar.getX()-t.config.padding/2,d.end_y=t.config.header_height+t.config.bar.height/2+(t.config.padding+t.config.bar.height)*e.task._index+t.config.padding;var a=n.task._index>e.task._index;d.curve=t.config.arrow.curve,d.clockwise=a?1:0,d.curve_y=a?-d.curve:d.curve,d.offset=a?d.end_y+t.config.arrow.curve:d.end_y-t.config.arrow.curve,d.path=Snap.format("M {start_x} {start_y} V {offset} a {curve} {curve} 0 0 {clockwise} {curve} {curve_y} L {end_x} {end_y} m -5 -5 l 5 5 l -5 5",{start_x:d.start_x,start_y:d.start_y,end_x:d.end_x,end_y:d.end_y,offset:d.offset,curve:d.curve,clockwise:d.clockwise,curve_y:d.curve_y}),e.$bar.getX() self.gantt_end) {\n\t\t\t\t\t\tself.gantt_end = task._end;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError3 = true;\n\t\t\t\t_iteratorError3 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t\t_iterator3.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tset_gantt_dates();\n\t\t\tsetup_dates();\n\t\t}\n\t\n\t\tfunction prepare_canvas() {\n\t\t\tif (self.canvas) return;\n\t\t\tself.canvas = Snap(self.element).addClass('gantt');\n\t\t}\n\t\n\t\tfunction render() {\n\t\t\tclear();\n\t\t\tsetup_groups();\n\t\t\tmake_grid();\n\t\t\tmake_dates();\n\t\t\tmake_bars();\n\t\t\tmake_arrows();\n\t\t\tmap_arrows_on_bars();\n\t\t\tset_width();\n\t\t\tset_scroll_position();\n\t\t\tbind_grid_click();\n\t\t}\n\t\n\t\tfunction clear() {\n\t\t\tself.canvas.clear();\n\t\t\tself._bars = [];\n\t\t\tself._arrows = [];\n\t\t}\n\t\n\t\tfunction set_gantt_dates() {\n\t\n\t\t\tif (view_is(['Quarter Day', 'Half Day'])) {\n\t\t\t\tself.gantt_start = self.gantt_start.clone().subtract(7, 'day');\n\t\t\t\tself.gantt_end = self.gantt_end.clone().add(7, 'day');\n\t\t\t} else if (view_is('Month')) {\n\t\t\t\tself.gantt_start = self.gantt_start.clone().startOf('year');\n\t\t\t\tself.gantt_end = self.gantt_end.clone().endOf('month').add(1, 'year');\n\t\t\t} else {\n\t\t\t\tself.gantt_start = self.gantt_start.clone().startOf('month').subtract(1, 'month');\n\t\t\t\tself.gantt_end = self.gantt_end.clone().endOf('month').add(1, 'month');\n\t\t\t}\n\t\t}\n\t\n\t\tfunction setup_dates() {\n\t\n\t\t\tself.dates = [];\n\t\t\tvar cur_date = null;\n\t\n\t\t\twhile (cur_date === null || cur_date < self.gantt_end) {\n\t\t\t\tif (!cur_date) {\n\t\t\t\t\tcur_date = self.gantt_start.clone();\n\t\t\t\t} else {\n\t\t\t\t\tcur_date = view_is('Month') ? cur_date.clone().add(1, 'month') : cur_date.clone().add(self.config.step, 'hours');\n\t\t\t\t}\n\t\t\t\tself.dates.push(cur_date);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction setup_groups() {\n\t\n\t\t\tvar groups = ['grid', 'date', 'arrow', 'progress', 'bar', 'details'];\n\t\t\t// make group layers\n\t\t\tvar _iteratorNormalCompletion4 = true;\n\t\t\tvar _didIteratorError4 = false;\n\t\t\tvar _iteratorError4 = undefined;\n\t\n\t\t\ttry {\n\t\t\t\tfor (var _iterator4 = groups[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n\t\t\t\t\tvar group = _step4.value;\n\t\n\t\t\t\t\tself.element_groups[group] = self.canvas.group().attr({ 'id': group });\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError4 = true;\n\t\t\t\t_iteratorError4 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion4 && _iterator4.return) {\n\t\t\t\t\t\t_iterator4.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError4) {\n\t\t\t\t\t\tthrow _iteratorError4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction set_scale(scale) {\n\t\t\tself.config.view_mode = scale;\n\t\n\t\t\tif (scale === 'Day') {\n\t\t\t\tself.config.step = 24;\n\t\t\t\tself.config.column_width = 38;\n\t\t\t} else if (scale === 'Half Day') {\n\t\t\t\tself.config.step = 24 / 2;\n\t\t\t\tself.config.column_width = 38;\n\t\t\t} else if (scale === 'Quarter Day') {\n\t\t\t\tself.config.step = 24 / 4;\n\t\t\t\tself.config.column_width = 38;\n\t\t\t} else if (scale === 'Week') {\n\t\t\t\tself.config.step = 24 * 7;\n\t\t\t\tself.config.column_width = 140;\n\t\t\t} else if (scale === 'Month') {\n\t\t\t\tself.config.step = 24 * 30;\n\t\t\t\tself.config.column_width = 120;\n\t\t\t}\n\t\t}\n\t\n\t\tfunction set_width() {\n\t\t\tvar cur_width = self.canvas.node.getBoundingClientRect().width;\n\t\t\tvar actual_width = self.canvas.select('#grid .grid-row').attr('width');\n\t\t\tif (cur_width < actual_width) {\n\t\t\t\tself.canvas.attr('width', actual_width);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction set_scroll_position() {\n\t\t\tvar parent_element = document.querySelector(self.element).parentElement;\n\t\t\tif (!parent_element) return;\n\t\n\t\t\tvar scroll_pos = get_min_date().diff(self.gantt_start, 'hours') / self.config.step * self.config.column_width - self.config.column_width;\n\t\t\tparent_element.scrollLeft = scroll_pos;\n\t\t}\n\t\n\t\tfunction get_min_date() {\n\t\t\tvar task = self.tasks.reduce(function (acc, curr) {\n\t\t\t\treturn curr._start.isSameOrBefore(acc._start) ? curr : acc;\n\t\t\t});\n\t\t\treturn task._start;\n\t\t}\n\t\n\t\tfunction make_grid() {\n\t\t\tmake_grid_background();\n\t\t\tmake_grid_rows();\n\t\t\tmake_grid_header();\n\t\t\tmake_grid_ticks();\n\t\t\tmake_grid_highlights();\n\t\t}\n\t\n\t\tfunction make_grid_background() {\n\t\n\t\t\tvar grid_width = self.dates.length * self.config.column_width,\n\t\t\t grid_height = self.config.header_height + self.config.padding + (self.config.bar.height + self.config.padding) * self.tasks.length;\n\t\n\t\t\tself.canvas.rect(0, 0, grid_width, grid_height).addClass('grid-background').appendTo(self.element_groups.grid);\n\t\n\t\t\tself.canvas.attr({\n\t\t\t\theight: grid_height + self.config.padding,\n\t\t\t\twidth: '100%'\n\t\t\t});\n\t\t}\n\t\n\t\tfunction make_grid_header() {\n\t\t\tvar header_width = self.dates.length * self.config.column_width,\n\t\t\t header_height = self.config.header_height + 10;\n\t\t\tself.canvas.rect(0, 0, header_width, header_height).addClass('grid-header').appendTo(self.element_groups.grid);\n\t\t}\n\t\n\t\tfunction make_grid_rows() {\n\t\n\t\t\tvar rows = self.canvas.group().appendTo(self.element_groups.grid),\n\t\t\t lines = self.canvas.group().appendTo(self.element_groups.grid),\n\t\t\t row_width = self.dates.length * self.config.column_width,\n\t\t\t row_height = self.config.bar.height + self.config.padding;\n\t\n\t\t\tvar row_y = self.config.header_height + self.config.padding / 2;\n\t\n\t\t\tvar _iteratorNormalCompletion5 = true;\n\t\t\tvar _didIteratorError5 = false;\n\t\t\tvar _iteratorError5 = undefined;\n\t\n\t\t\ttry {\n\t\t\t\tfor (var _iterator5 = self.tasks[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n\t\t\t\t\tvar task = _step5.value;\n\t\t\t\t\t// eslint-disable-line\n\t\t\t\t\tself.canvas.rect(0, row_y, row_width, row_height).addClass('grid-row').appendTo(rows);\n\t\n\t\t\t\t\tself.canvas.line(0, row_y + row_height, row_width, row_y + row_height).addClass('row-line').appendTo(lines);\n\t\n\t\t\t\t\trow_y += self.config.bar.height + self.config.padding;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError5 = true;\n\t\t\t\t_iteratorError5 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion5 && _iterator5.return) {\n\t\t\t\t\t\t_iterator5.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError5) {\n\t\t\t\t\t\tthrow _iteratorError5;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction make_grid_ticks() {\n\t\t\tvar tick_x = 0,\n\t\t\t tick_y = self.config.header_height + self.config.padding / 2,\n\t\t\t tick_height = (self.config.bar.height + self.config.padding) * self.tasks.length;\n\t\n\t\t\tvar _iteratorNormalCompletion6 = true;\n\t\t\tvar _didIteratorError6 = false;\n\t\t\tvar _iteratorError6 = undefined;\n\t\n\t\t\ttry {\n\t\t\t\tfor (var _iterator6 = self.dates[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n\t\t\t\t\tvar date = _step6.value;\n\t\n\t\t\t\t\tvar tick_class = 'tick';\n\t\t\t\t\t// thick tick for monday\n\t\t\t\t\tif (view_is('Day') && date.day() === 1) {\n\t\t\t\t\t\ttick_class += ' thick';\n\t\t\t\t\t}\n\t\t\t\t\t// thick tick for first week\n\t\t\t\t\tif (view_is('Week') && date.date() >= 1 && date.date() < 8) {\n\t\t\t\t\t\ttick_class += ' thick';\n\t\t\t\t\t}\n\t\t\t\t\t// thick ticks for quarters\n\t\t\t\t\tif (view_is('Month') && date.month() % 3 === 0) {\n\t\t\t\t\t\ttick_class += ' thick';\n\t\t\t\t\t}\n\t\n\t\t\t\t\tself.canvas.path(Snap.format('M {x} {y} v {height}', {\n\t\t\t\t\t\tx: tick_x,\n\t\t\t\t\t\ty: tick_y,\n\t\t\t\t\t\theight: tick_height\n\t\t\t\t\t})).addClass(tick_class).appendTo(self.element_groups.grid);\n\t\n\t\t\t\t\tif (view_is('Month')) {\n\t\t\t\t\t\ttick_x += date.daysInMonth() * self.config.column_width / 30;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttick_x += self.config.column_width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError6 = true;\n\t\t\t\t_iteratorError6 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion6 && _iterator6.return) {\n\t\t\t\t\t\t_iterator6.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError6) {\n\t\t\t\t\t\tthrow _iteratorError6;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction make_grid_highlights() {\n\t\n\t\t\t// highlight today's date\n\t\t\tif (view_is('Day')) {\n\t\t\t\tvar x = moment().startOf('day').diff(self.gantt_start, 'hours') / self.config.step * self.config.column_width;\n\t\t\t\tvar y = 0;\n\t\t\t\tvar width = self.config.column_width;\n\t\t\t\tvar height = (self.config.bar.height + self.config.padding) * self.tasks.length + self.config.header_height + self.config.padding / 2;\n\t\n\t\t\t\tself.canvas.rect(x, y, width, height).addClass('today-highlight').appendTo(self.element_groups.grid);\n\t\t\t}\n\t\t}\n\t\n\t\tfunction make_dates() {\n\t\t\tvar _iteratorNormalCompletion7 = true;\n\t\t\tvar _didIteratorError7 = false;\n\t\t\tvar _iteratorError7 = undefined;\n\t\n\t\t\ttry {\n\t\n\t\t\t\tfor (var _iterator7 = get_dates_to_draw()[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n\t\t\t\t\tvar date = _step7.value;\n\t\n\t\t\t\t\tself.canvas.text(date.lower_x, date.lower_y, date.lower_text).addClass('lower-text').appendTo(self.element_groups.date);\n\t\n\t\t\t\t\tif (date.upper_text) {\n\t\t\t\t\t\tvar $upper_text = self.canvas.text(date.upper_x, date.upper_y, date.upper_text).addClass('upper-text').appendTo(self.element_groups.date);\n\t\n\t\t\t\t\t\t// remove out-of-bound dates\n\t\t\t\t\t\tif ($upper_text.getBBox().x2 > self.element_groups.grid.getBBox().width) {\n\t\t\t\t\t\t\t$upper_text.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError7 = true;\n\t\t\t\t_iteratorError7 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion7 && _iterator7.return) {\n\t\t\t\t\t\t_iterator7.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError7) {\n\t\t\t\t\t\tthrow _iteratorError7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction get_dates_to_draw() {\n\t\t\tvar last_date = null;\n\t\t\tvar dates = self.dates.map(function (date, i) {\n\t\t\t\tvar d = get_date_info(date, last_date, i);\n\t\t\t\tlast_date = date;\n\t\t\t\treturn d;\n\t\t\t});\n\t\t\treturn dates;\n\t\t}\n\t\n\t\tfunction get_date_info(date, last_date, i) {\n\t\t\tif (!last_date) {\n\t\t\t\tlast_date = date.clone().add(1, 'year');\n\t\t\t}\n\t\t\tvar date_text = {\n\t\t\t\t'Quarter Day_lower': date.format('HH'),\n\t\t\t\t'Half Day_lower': date.format('HH'),\n\t\t\t\t'Day_lower': date.date() !== last_date.date() ? date.format('D') : '',\n\t\t\t\t'Week_lower': date.month() !== last_date.month() ? date.format('D MMM') : date.format('D'),\n\t\t\t\t'Month_lower': date.format('MMMM'),\n\t\t\t\t'Quarter Day_upper': date.date() !== last_date.date() ? date.format('D MMM') : '',\n\t\t\t\t'Half Day_upper': date.date() !== last_date.date() ? date.month() !== last_date.month() ? date.format('D MMM') : date.format('D') : '',\n\t\t\t\t'Day_upper': date.month() !== last_date.month() ? date.format('MMMM') : '',\n\t\t\t\t'Week_upper': date.month() !== last_date.month() ? date.format('MMMM') : '',\n\t\t\t\t'Month_upper': date.year() !== last_date.year() ? date.format('YYYY') : ''\n\t\t\t};\n\t\n\t\t\tvar base_pos = {\n\t\t\t\tx: i * self.config.column_width,\n\t\t\t\tlower_y: self.config.header_height,\n\t\t\t\tupper_y: self.config.header_height - 25\n\t\t\t};\n\t\n\t\t\tvar x_pos = {\n\t\t\t\t'Quarter Day_lower': self.config.column_width * 4 / 2,\n\t\t\t\t'Quarter Day_upper': 0,\n\t\t\t\t'Half Day_lower': self.config.column_width * 2 / 2,\n\t\t\t\t'Half Day_upper': 0,\n\t\t\t\t'Day_lower': self.config.column_width / 2,\n\t\t\t\t'Day_upper': self.config.column_width * 30 / 2,\n\t\t\t\t'Week_lower': 0,\n\t\t\t\t'Week_upper': self.config.column_width * 4 / 2,\n\t\t\t\t'Month_lower': self.config.column_width / 2,\n\t\t\t\t'Month_upper': self.config.column_width * 12 / 2\n\t\t\t};\n\t\n\t\t\treturn {\n\t\t\t\tupper_text: date_text[self.config.view_mode + '_upper'],\n\t\t\t\tlower_text: date_text[self.config.view_mode + '_lower'],\n\t\t\t\tupper_x: base_pos.x + x_pos[self.config.view_mode + '_upper'],\n\t\t\t\tupper_y: base_pos.upper_y,\n\t\t\t\tlower_x: base_pos.x + x_pos[self.config.view_mode + '_lower'],\n\t\t\t\tlower_y: base_pos.lower_y\n\t\t\t};\n\t\t}\n\t\n\t\tfunction make_arrows() {\n\t\t\tself._arrows = [];\n\t\t\tvar _iteratorNormalCompletion8 = true;\n\t\t\tvar _didIteratorError8 = false;\n\t\t\tvar _iteratorError8 = undefined;\n\t\n\t\t\ttry {\n\t\t\t\tvar _loop = function _loop() {\n\t\t\t\t\tvar task = _step8.value;\n\t\n\t\t\t\t\tvar arrows = [];\n\t\t\t\t\tarrows = task.dependencies.map(function (dep) {\n\t\t\t\t\t\tvar dependency = get_task(dep);\n\t\t\t\t\t\tif (!dependency) return;\n\t\n\t\t\t\t\t\tvar arrow = (0, _Arrow2.default)(self, // gt\n\t\t\t\t\t\tself._bars[dependency._index], // from_task\n\t\t\t\t\t\tself._bars[task._index] // to_task\n\t\t\t\t\t\t);\n\t\t\t\t\t\tself.element_groups.arrow.add(arrow.element);\n\t\t\t\t\t\treturn arrow; // eslint-disable-line\n\t\t\t\t\t}).filter(function (arr) {\n\t\t\t\t\t\treturn arr;\n\t\t\t\t\t}); // filter falsy values\n\t\t\t\t\tself._arrows = self._arrows.concat(arrows);\n\t\t\t\t};\n\t\n\t\t\t\tfor (var _iterator8 = self.tasks[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n\t\t\t\t\t_loop();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError8 = true;\n\t\t\t\t_iteratorError8 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion8 && _iterator8.return) {\n\t\t\t\t\t\t_iterator8.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError8) {\n\t\t\t\t\t\tthrow _iteratorError8;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction make_bars() {\n\t\n\t\t\tself._bars = self.tasks.map(function (task) {\n\t\t\t\tvar bar = (0, _Bar2.default)(self, task);\n\t\t\t\tself.element_groups.bar.add(bar.group);\n\t\t\t\treturn bar;\n\t\t\t});\n\t\t}\n\t\n\t\tfunction map_arrows_on_bars() {\n\t\t\tvar _iteratorNormalCompletion9 = true;\n\t\t\tvar _didIteratorError9 = false;\n\t\t\tvar _iteratorError9 = undefined;\n\t\n\t\t\ttry {\n\t\t\t\tvar _loop2 = function _loop2() {\n\t\t\t\t\tvar bar = _step9.value;\n\t\n\t\t\t\t\tbar.arrows = self._arrows.filter(function (arrow) {\n\t\t\t\t\t\treturn arrow.from_task.task.id === bar.task.id || arrow.to_task.task.id === bar.task.id;\n\t\t\t\t\t});\n\t\t\t\t};\n\t\n\t\t\t\tfor (var _iterator9 = self._bars[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n\t\t\t\t\t_loop2();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError9 = true;\n\t\t\t\t_iteratorError9 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion9 && _iterator9.return) {\n\t\t\t\t\t\t_iterator9.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError9) {\n\t\t\t\t\t\tthrow _iteratorError9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\tfunction bind_grid_click() {\n\t\t\tself.element_groups.grid.click(function () {\n\t\t\t\tunselect_all();\n\t\t\t\tself.element_groups.details.selectAll('.details-wrapper').forEach(function (el) {\n\t\t\t\t\treturn el.addClass('hide');\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\n\t\tfunction unselect_all() {\n\t\t\tself.canvas.selectAll('.bar-wrapper').forEach(function (el) {\n\t\t\t\tel.removeClass('active');\n\t\t\t});\n\t\t}\n\t\n\t\tfunction view_is(modes) {\n\t\t\tif (typeof modes === 'string') {\n\t\t\t\treturn self.config.view_mode === modes;\n\t\t\t} else if (Array.isArray(modes)) {\n\t\t\t\tvar _iteratorNormalCompletion10 = true;\n\t\t\t\tvar _didIteratorError10 = false;\n\t\t\t\tvar _iteratorError10 = undefined;\n\t\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator10 = modes[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n\t\t\t\t\t\tvar mode = _step10.value;\n\t\n\t\t\t\t\t\tif (self.config.view_mode === mode) return true;\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError10 = true;\n\t\t\t\t\t_iteratorError10 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion10 && _iterator10.return) {\n\t\t\t\t\t\t\t_iterator10.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError10) {\n\t\t\t\t\t\t\tthrow _iteratorError10;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\n\t\tfunction get_task(id) {\n\t\t\treturn self.tasks.find(function (task) {\n\t\t\t\treturn task.id === id;\n\t\t\t});\n\t\t}\n\t\n\t\tfunction get_bar(id) {\n\t\t\treturn self._bars.find(function (bar) {\n\t\t\t\treturn bar.task.id === id;\n\t\t\t});\n\t\t}\n\t\n\t\tfunction generate_id(task) {\n\t\t\treturn task.name + '_' + Math.random().toString(36).slice(2, 12);\n\t\t}\n\t\n\t\tfunction trigger_event(event, args) {\n\t\t\tif (self.config['on_' + event]) {\n\t\t\t\tself.config['on_' + event].apply(null, args);\n\t\t\t}\n\t\t}\n\t\n\t\tinit();\n\t\n\t\treturn self;\n\t} /* global moment, Snap */\n\t/**\n\t * Gantt:\n\t * \telement: querySelector string, required\n\t * \ttasks: array of tasks, required\n\t * task: { id, name, start, end, progress, dependencies, custom_class }\n\t * \tconfig: configuration options, optional\n\t */\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a