{"version":3,"sources":["webpack:///./node_modules/chart.js/src/plugins/plugin.legend.js","webpack:///./node_modules/chart.js/src/helpers/helpers.options.js","webpack:///./node_modules/chart.js/src/core/core.animation.js","webpack:///./node_modules/chart.js/src/core/core.defaults.js","webpack:///./node_modules/chart.js/src/controllers/controller.line.js","webpack:///./node_modules/chart.js/src/platforms/platform.basic.js","webpack:///./node_modules/chart.js/src/core/core.datasetController.js","webpack:///./node_modules/chart.js/src/core/core.element.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationStatistics.vue?71b4","webpack:///./node_modules/chart.js/src/charts/Chart.Bar.js","webpack:///./node_modules/chart.js/src/elements/element.point.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationSummary.vue?6a58","webpack:///./wwwroot/src/vue/components/bootstrap/BsCheckbox.vue?c558","webpack:///wwwroot/src/vue/components/bootstrap/BsCheckbox.vue","webpack:///./wwwroot/src/vue/components/bootstrap/BsCheckbox.vue?3c21","webpack:///./wwwroot/src/vue/components/bootstrap/BsCheckbox.vue","webpack:///./node_modules/chart.js/src/charts/Chart.Bubble.js","webpack:///./node_modules/chart.js/src/scales/scale.time.js","webpack:///./node_modules/chart.js/src/helpers/index.js","webpack:///./wwwroot/src/vue/components/bootstrap/BsCheckbox.vue?2c87","webpack:///./node_modules/chart.js/src/helpers/helpers.canvas.js","webpack:///./node_modules/chart.js/src/charts/Chart.Scatter.js","webpack:///./node_modules/chart.js/src/charts/Chart.Doughnut.js","webpack:///./node_modules/chart.js/src/helpers/helpers.core.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/chart.js/src/elements/element.line.js","webpack:///./node_modules/chart.js/src/core/core.plugins.js","webpack:///./node_modules/chart.js/src/chart.js","webpack:///./node_modules/chart.js/src/controllers/controller.doughnut.js","webpack:///./node_modules/chart.js/src/elements/element.arc.js","webpack:///./node_modules/chart.js/src/scales/scale.linear.js","webpack:///./node_modules/chart.js/src/scales/scale.logarithmic.js","webpack:///./node_modules/chart.js/src/controllers/controller.bar.js","webpack:///./node_modules/chart.js/src/controllers/controller.radar.js","webpack:///./node_modules/chart.js/src/controllers/controller.bubble.js","webpack:///./node_modules/chart.js/src/core/core.scale.js","webpack:///./node_modules/chart.js/src/core/core.animations.js","webpack:///./node_modules/chart.js/src/core/core.layouts.js","webpack:///./node_modules/chart.js/src/core/core.ticks.js","webpack:///./node_modules/chartjs-plugin-labels/src/chartjs-plugin-labels.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationSummary.vue?96ae","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationsStatistics.vue?832c","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationsStatistics.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationsStatistics.vue?d90b","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationsStatistics.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonuts.vue?689c","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonutChart.vue?b3c0","webpack:///./wwwroot/src/vue/components/charts/DonutChart.vue?0096","webpack:///wwwroot/src/vue/components/charts/DonutChart.vue","webpack:///./wwwroot/src/vue/components/charts/DonutChart.vue?26ac","webpack:///./wwwroot/src/vue/components/charts/DonutChart.vue","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonutChart.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonutChart.vue?0b40","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonutChart.vue","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonuts.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonuts.vue?fe3a","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonuts.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationTable.vue?8408","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationTable.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationTable.vue?2920","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationTable.vue","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationSummary.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationSummary.vue?70ec","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationSummary.vue","webpack:///./node_modules/chart.js/src/platforms/platform.js","webpack:///./node_modules/chart.js/src/charts/Chart.Radar.js","webpack:///./node_modules/chart.js/src/plugins/index.js","webpack:///./wwwroot/src/vue/components/table/SimpleTable.vue?4534","webpack:///./wwwroot/src/vue/components/table/SimpleTableSortingButton.vue?1702","webpack:///wwwroot/src/vue/components/table/SimpleTableSortingButton.vue","webpack:///./wwwroot/src/vue/components/table/SimpleTableSortingButton.vue?11b7","webpack:///./wwwroot/src/vue/components/table/SimpleTableSortingButton.vue","webpack:///wwwroot/src/vue/components/table/SimpleTable.vue","webpack:///./wwwroot/src/vue/components/table/SimpleTable.vue?af40","webpack:///./wwwroot/src/vue/components/table/SimpleTable.vue","webpack:///./node_modules/chartjs-color-string/color-string.js","webpack:///./node_modules/chart.js/src/plugins/plugin.title.js","webpack:///./node_modules/chart.js/src/core/core.interaction.js","webpack:///./node_modules/chart.js/src/core/core.helpers.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationStatistics.vue?7af3","webpack:///wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationStatistics.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationStatistics.vue?5455","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationStatistics.vue","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonuts.vue?6972","webpack:///./node_modules/chart.js/src/scales/scale.linearbase.js","webpack:///./node_modules/chart.js/src/charts/Chart.PolarArea.js","webpack:///./node_modules/chart.js/src/platforms/platform.dom.js","webpack:///./wwwroot/src/vue/areas/field-record-system/helpers/ui.js","webpack:///./wwwroot/src/vue/components/table/SimpleTableSortingButton.vue?f21b","webpack:///./node_modules/chart.js/src/core/core.scaleService.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationTable.vue?14c7","webpack:///./node_modules/color-convert/conversions.js","webpack:///./node_modules/color-convert/index.js","webpack:///./node_modules/chart.js/src/helpers/helpers.easing.js","webpack:///./wwwroot/src/vue/areas/field-record-system/components/cultivation-overview/summary/CultivationDonutChart.vue?6c8b","webpack:///./node_modules/chart.js/src/plugins/plugin.filler.js","webpack:///./node_modules/chart.js/src/elements/index.js","webpack:///./node_modules/chart.js/src/core/core.tooltip.js","webpack:///./wwwroot/src/vue/components/table/SimpleTable.vue?4702","webpack:///./node_modules/chart.js/src/core/core.js","webpack:///./node_modules/chart.js/src/elements/element.rectangle.js","webpack:///./node_modules/chart.js/src/controllers/controller.scatter.js","webpack:///./node_modules/chart.js/src/controllers/controller.polarArea.js","webpack:///./node_modules/chart.js/src/core/core.controller.js","webpack:///./node_modules/chartjs-color/index.js","webpack:///./node_modules/chart.js/src/charts/Chart.Line.js","webpack:///./wwwroot/src/vue/components/table/SimpleTableBoolean.vue?b4b1","webpack:///wwwroot/src/vue/components/table/SimpleTableBoolean.vue","webpack:///./wwwroot/src/vue/components/table/SimpleTableBoolean.vue?b26f","webpack:///./wwwroot/src/vue/components/table/SimpleTableBoolean.vue","webpack:///./wwwroot/src/vue/components/table/SimpleTableStringArray.js","webpack:///./wwwroot/src/vue/components/table/SimpleTableAutoCell.js","webpack:///./node_modules/chart.js/src/scales/scale.category.js","webpack:///./node_modules/chart.js/src/scales/scale.radialLinear.js","webpack:///./wwwroot/src/vue/components/charts/ChartMixin.js"],"names":["defaults","__webpack_require__","Element","helpers","layouts","noop","getBoxWidth","labelOpts","fontSize","usePointStyle","Math","SQRT2","boxWidth","_set","legend","display","position","fullWidth","reverse","weight","onClick","e","legendItem","index","datasetIndex","ci","this","chart","meta","getDatasetMeta","hidden","data","datasets","update","onHover","labels","padding","generateLabels","isArray","map","dataset","i","text","label","fillStyle","backgroundColor","isDatasetVisible","lineCap","borderCapStyle","lineDash","borderDash","lineDashOffset","borderDashOffset","lineJoin","borderJoinStyle","lineWidth","borderWidth","strokeStyle","borderColor","pointStyle","legendCallback","push","id","length","join","Legend","extend","initialize","config","legendHitBoxes","doughnutMode","beforeUpdate","maxWidth","maxHeight","margins","me","beforeSetDimensions","setDimensions","afterSetDimensions","beforeBuildLabels","buildLabels","afterBuildLabels","beforeFit","fit","afterFit","afterUpdate","minSize","isHorizontal","width","left","right","height","top","bottom","paddingLeft","paddingTop","paddingRight","paddingBottom","options","legendItems","callback","filter","item","opts","ctx","globalDefault","global","valueOrDefault","defaultFontSize","fontStyle","defaultFontStyle","fontFamily","defaultFontFamily","labelFont","fontString","hitboxes","font","lineWidths","totalHeight","textAlign","textBaseline","each","measureText","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","max","draw","lineDefault","elements","line","legendWidth","cursor","fontColor","defaultFontColor","drawLegendBox","x","y","isNaN","save","defaultColor","isLineWidthZero","setLineDash","radius","offSet","centerX","centerY","canvas","drawPoint","strokeRect","fillRect","restore","fillText","textWidth","halfFontSize","xLeft","yMiddle","beginPath","moveTo","lineTo","stroke","handleEvent","type","changed","lh","hitBox","call","native","createNewLegendAndAttach","legendOpts","configure","addBox","module","exports","_element","beforeInit","mergeIf","removeBox","afterEvent","toLineHeight","value","size","matches","match","toPadding","t","r","b","l","isObject","resolve","inputs","context","ilen","undefined","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","Object","defineProperty","prototype","get","set","scope","values","merge","showLines","spanGaps","hover","mode","scales","xAxes","yAxes","Chart","lineEnabled","showLine","controllers","DatasetController","datasetElementType","Line","dataElementType","Point","reset","custom","getMeta","points","lineElementOptions","scale","getScaleForId","yAxisID","getDataset","tension","lineTension","_scale","_datasetIndex","_children","_model","fill","steppedLine","stepped","cubicInterpolationMode","pivot","updateElement","updateBezierControlPoints","getPointBackgroundColor","point","pointBackgroundColor","valueAtIndexOrDefault","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","rotation","yScale","xScale","xAxisID","pointOptions","pointRadius","hitRadius","pointHitRadius","getPixelForValue","NaN","getBasePixel","calculatePointY","_xScale","_yScale","_index","skip","ds","dsMeta","sumPos","sumNeg","stacked","stackedRightValue","Number","getRightValue","rightValue","model","controlPoints","area","chartArea","capControlPoint","pt","min","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","next","controlPointNextY","capBezierPoints","halfBorderWidth","clipArea","unclipArea","setHoverStyle","element","$previousStyle","hoverBackgroundColor","pointHoverBackgroundColor","getHoverColor","hoverBorderColor","pointHoverBorderColor","hoverBorderWidth","pointHoverBorderWidth","hoverRadius","pointHoverRadius","acquireContext","getContext","arrayEvents","listenArrayEvents","array","listener","_chartjs","listeners","configurable","enumerable","forEach","key","method","charAt","toUpperCase","slice","base","args","Array","arguments","res","apply","object","unlistenArrayEvents","stub","indexOf","splice","linkScales","addElements","updateIndex","scaleID","destroy","_data","createMetaDataset","_chart","createMetaData","metaData","addElementAndReset","buildOrUpdateElements","resyncElements","transition","easingValue","removeHoverStyle","numMeta","numData","insertElements","start","count","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","color","interpolate","view","ease","actual","origin","target","c0","c1","keys","hasOwnProperty","valid","mix","rgbString","isFinite","configuration","_view","clone","_start","tooltipPosition","hasValue","isNumber","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationStatistics_vue_vue_type_style_index_0_id_dcccee2e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationStatistics_vue_vue_type_style_index_0_id_dcccee2e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","n","Bar","xRange","mouseX","vm","abs","yRange","mouseY","inRange","pow","inLabelRange","inXRange","inYRange","getCenterPoint","getArea","PI","errMargin","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationSummary_vue_vue_type_style_index_0_id_53a35db6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationSummary_vue_vue_type_style_index_0_id_53a35db6_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","_vm","_h","$createElement","_c","_self","attrs","description","combinedDescription","staticClass","class","inline","has-error","dirty","required","checked","has-success","directives","name","rawName","expression","ref","disabled","domProps","_i","on","change","$event","$$a","$$el","$$c","$$v","$$i","concat","_t","slot","$slots","_e","staticRenderFns","counter","BsCheckboxvue_type_script_lang_js_","components","LabelAndMessage","prop","event","props","state","Boolean","tristate","String","computed","_this","some","lodash","_this2","$forceUpdate","$emit","methods","$refs","checkbox","indeterminate","watch","mounted","bootstrap_BsCheckboxvue_type_script_lang_js_","component","componentNormalizer","__webpack_exports__","Bubble","moment","window","Scale","scaleService","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","a","arrayUnique","items","hash","out","buildLookupTable","timestamps","distribution","time","pos","prev","curr","table","round","lookup","mid","i0","i1","lo","hi","skey","sval","tkey","range","span","ratio","offset","momentify","parser","format","isValid","parse","input","isNullOrUndef","startOf","valueOf","determineStepSize","unit","capacity","factor","interval","milliseconds","ceil","determineUnitForAutoTicks","minUnit","determineUnitForFormatting","ticks","duration","diff","as","determineMajorUnit","generate","timeOpts","minor","major","stepSize","unitStepSize","weekday","isoWeekday","majorTicksEnabled","enabled","first","last","add","computeOffsets","upper","lower","ticksFromTimestamps","majorUnit","determineLabelFormat","momentDate","hasTime","defaultConfig","bounds","displayFormat","displayFormats","autoSkip","source","TimeScale","Error","mergeTicksOptions","console","warn","rawValue","determineDataLimits","j","jlen","timestamp","sort","endOf","_horizontal","_table","_timestamps","buildTicks","getLabelCapacity","_unit","_majorUnit","_offsets","_labelFormat","getLabelForIndex","tooltipFormat","tickFormatFunction","tick","formatOverride","formats","minorFormat","majorFormat","majorTime","majorTickOpts","tickOpts","formatter","userCallback","convertTicksToLabels","getPixelForOffset","getPixelForTick","getTicks","getValueForPixel","pixel","getLabelWidth","ticksOpts","tickLabelWidth","angle","toRadians","maxRotation","cosRotation","cos","sinRotation","sin","tickFontSize","exampleTime","exampleLabel","innerWidth","floor","registerScaleType","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BsCheckbox_vue_vue_type_style_index_0_id_ca14c080_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_BsCheckbox_vue_vue_type_style_index_0_id_ca14c080_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","clear","clearRect","roundedRect","epsilon","arcTo","closePath","rect","style","edgeLength","xOffset","yOffset","toString","drawImage","translate","rotate","arc","sqrt","leftX","topY","sideSize","clip","flip","bezierCurveTo","drawRoundedRectangle","Scatter","Doughnut","uid","defaultValue","fn","thisArg","loopable","len","arrayEquals","a0","a1","v0","v1","klen","k","_merger","tval","_mergerIf","sources","merger","setFn","extensions","ChartElement","constructor","Surrogate","__super__","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","globalDefaults","current","currentVM","globalOptionLineElements","lastDrawnIndex","_loop","plugins","_plugins","_cacheId","register","p","plugin","unregister","idx","getAll","notify","hook","descriptor","params","descriptors","cache","$plugins","_invalidate","Animation","animationService","Interaction","platform","Ticks","Tooltip","Title","title","pluginService","PluginBase","canvasHelpers","layoutService","animation","animateRotate","animateScale","arcOpts","bw","cutoutPercentage","circumference","tooltips","callbacks","tooltipItem","dataLabel","doughnut","pie","Arc","getRingIndex","ringIndex","availableWidth","availableHeight","startAngle","endAngle","end","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","calculateCircumference","elementOpts","arcs","hoverWidth","chartX","chartY","pointRelativePosition","getAngleFromPoint","distance","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","formatters","linear","LinearScale","LinearScaleBase","DEFAULT_MIN","DEFAULT_MAX","IDMatches","hasStacks","stack","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","maxTicks","maxTicksLimit","handleDirectionalChanges","innerDimension","ticksAsNumbers","generateTicks","generationOptions","dataRange","exp","significand","tickVal","log10","endExp","endSignificand","minNotZero","precision","lastTick","logarithmic","LogarithmicScale","tickValues","_getFirstTickValue","sign","firstTickValue","computeMinSampleSize","pixels","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","percent","gridLines","offsetGridLines","axis","rectangle","borderSkipped","yLabel","datasetLabel","xLabel","bar","Rectangle","rects","_ruler","getRuler","rectangleOptions","updateElementGeometry","vscale","getValueScale","horizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacks","getStackCount","getStackIndex","imeta","ivalue","controller","stackIndex","maxBarThickness","Infinity","horizontalBar","radar","pointElementOptions","pointPosition","getPointPositionForValue","xCenter","yCenter","dataPoint","bubble","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","dataIndex","labelsFromTicks","getLineValue","lineValue","computeTextSize","longestText","parseFontOptions","family","parseLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","beginAtZero","minRotation","mirror","autoSkipPadding","labelOffset","getPadding","_ticks","longestTextCache","beforeDataLimits","afterDataLimits","beforeBuildTicks","afterBuildTicks","beforeTickToLabelConversion","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","tickFont","labelRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","scaleLabelLineHeight","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","numberOfLabelLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","shouldSkip","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","result","optionMajorTicks","isRotated","tickFontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","x2","y2","labelX","labelY","zeroLineIndex","labelYOffset","xLineValue","aliasPixel","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","lineCount","scaleLabelX","scaleLabelY","halfLineHeight","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","findIndex","requestAnimFrame","startDigest","startTime","Date","now","framesToDrop","advance","endTime","filterByPosition","where","v","sortByWeight","_tmpIndex_","boxes","layoutItem","layoutOptions","layout","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaWidth","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","getMinimumBoxSize","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","box","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBoxSize","findNextWhere","minBox","scaleMargin","tickValue","delta","logDelta","tickString","maxTick","logTick","toExponential","numDecimal","toFixed","remain","assign","varArgs","TypeError","to","nextSource","nextKey","SUPPORTED_TYPES","Label","setup","barTotal","chartOptions","shadowOffsetX","shadowOffsetY","shadowColor","shadowBlur","images","outsidePadding","textMargin","overlap","labelBounds","renderToDataset","totalPercentage","arg","renderToElement","bind","shouldRenderToElement","percentage","getLabel","renderInfo","getRenderInfo","drawable","getFontColor","renderLabel","renderArcLabel","renderBaseLabel","textShadow","lines","split","widths","mertrics","char","showZero","getPercentage","loadImage","parseFloat","showActualPercentages","barTotalPercentage","getBarRenderInfo","getArcRenderInfo","getBaseRenderInfo","measureLabel","totalAngle","outsideInRange","bound","potins","obj","image","Image","src","beforeDatasetsUpdate","_labels","someOutside","maxPadding","afterDatasetUpdate","beforeDraw","afterDatasetsDraw","error","_v","showHints","selected","harvest-year","org-unit-id","orgUnitId","extern-show-hints","filtered-cultivations","selectedCultivationData","show-hints","scopedSlots","_u","proxy","typeShortcut","CultivationsStatisticsvue_type_template_id_3f842abc_scoped_true_render","_s","sum","average","CultivationsStatisticsvue_type_template_id_3f842abc_scoped_true_staticRenderFns","CultivationsStatisticsvue_type_script_lang_js_","HelpBox","_objectSpread","ui","vuex_esm","areaSumInSquareMeters","cultivation","$i18n","summary_CultivationsStatisticsvue_type_script_lang_js_","CultivationsStatistics","CultivationDonutsvue_type_template_id_73cb1682_scoped_true_render","cultivations","filteredCultivations","CultivationDonutsvue_type_template_id_73cb1682_scoped_true_staticRenderFns","CultivationDonutChartvue_type_template_id_3a49b512_scoped_true_render","chartData","additional-options","additionalOptions","multidata","click","onElementClicked","CultivationDonutChartvue_type_template_id_3a49b512_scoped_true_staticRenderFns","DonutChartvue_type_template_id_4c3757b7_scoped_true_lang_html_render","DonutChartvue_type_template_id_4c3757b7_scoped_true_lang_html_staticRenderFns","DonutChartvue_type_script_lang_js_","mixins","ChartMixin","charts_DonutChartvue_type_script_lang_js_","DonutChart_component","DonutChart","CultivationDonutChartvue_type_script_lang_js_","cultivationsByType","mainCultivationData","mainLookup","createChartElement","secondaryAndCatchCultivations","secondaryLookup","catchLookup","secondaryCultivations","catchCultivations","toConsumableArray","noData","val","mainLabel","additionalLabels","conversion","firstCultivation","CultivationDonutChartvue_type_script_lang_js_objectSpread","reduce","summary_CultivationDonutChartvue_type_script_lang_js_","CultivationDonutChart_component","CultivationDonutChart","CultivationDonutsvue_type_script_lang_js_","summary_CultivationDonutsvue_type_script_lang_js_","CultivationDonuts_component","CultivationDonuts","CultivationTablevue_type_template_id_e93d0530_scoped_true_render","columns","tableData","localize-headers","row","border","borderRadius","areaSum","CultivationTablevue_type_template_id_e93d0530_scoped_true_staticRenderFns","CultivationTablevue_type_script_lang_js_","SimpleTable","groupedData","firstValue","summary_CultivationTablevue_type_script_lang_js_","CultivationTable_component","CultivationTable","CultivationSummaryvue_type_script_lang_js_","BsCheckbox","CultivationStatistics","CultivationSummaryvue_type_script_lang_js_objectSpread","summary_CultivationSummaryvue_type_script_lang_js_","CultivationSummary_component","basic","dom","implementation","_enabled","releaseContext","addEventListener","removeEventListener","Radar","filler","fixed-header","fixedHeader","headerWidth","_l","column","localizeHeaders","localize","active","sortedBy","descending","sortBy","scroll","onScroll","highlight","rowIndex","columnIndex","format-string","formatString","colspan","headerData","SimpleTableSortingButtonvue_type_template_id_6c9a549e_scoped_true_lang_html_render","icon","fixed-width","SimpleTableSortingButtonvue_type_template_id_6c9a549e_scoped_true_lang_html_staticRenderFns","sortIcons","string","index_es","number","amount","SimpleTableSortingButtonvue_type_script_lang_js_","FaIcon","vue_fontawesome","icons","table_SimpleTableSortingButtonvue_type_script_lang_js_","SimpleTableSortingButton","defaultSortingFunctions","localeCompare","date","moment_default","datetime","defaultSortingIcons","SimpleTablevue_type_script_lang_js_","SimpleTableAutoCell","Function","disableInternalSort","default","settings","sortable","_settings$value","_settings$sortingFunc","sortingFunction","_settings$sortingIcon","sortingIcon","sortedData","_this$headerData$this","f","sortedEventArgs","updated","tableBody","clientWidth","table_SimpleTablevue_type_script_lang_js_","SimpleTable_component","colorNames","getRgba","abbr","hex","rgba","per","keyword","rgb","parseInt","getHsla","hsl","alpha","h","s","getHwb","hwb","w","getRgb","getHsl","hsla","getAlpha","vals","hexString","hexDouble","rgbaString","percentString","percentaString","g","hslString","hslaString","hwbString","reverseNames","num","str","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","getRelativePosition","parseVisibleItems","handler","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","modes","single","x-axis","nearest","sizeA","sizeB","ret","intersectsItem","parseMaxStyle","styleValue","node","parentProperty","valueInPixels","parentNode","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","document","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","configMerge","scaleMerge","getScaleDefaults","slen","collection","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","exponent","log","LOG10E","powerOf10","isPowerOf10","degrees","toDegrees","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","atan2","distanceBetweenPoints","pixelWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","niceFraction","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","parentDimension","parent","host","getMaximumWidth","cw","getMaximumHeight","clientHeight","ch","el","property","currentStyle","getPropertyValue","retinaScale","forceRatio","pixelRatio","devicePixelRatio","pixelSize","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","numberOfLines","CanvasGradient","colorValue","CanvasPattern","saturate","darken","loading","statistics","externShowHints","companyAreaSum","printArea","printPercentage","requests","CultivationStatisticsvue_type_script_lang_js_","FrsLoadingIndicator","harvestYear","internShowHints","created","data_loading","onResult","summary_CultivationStatisticsvue_type_script_lang_js_","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationDonuts_vue_vue_type_style_index_0_id_73cb1682_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationDonuts_vue_vue_type_style_index_0_id_73cb1682_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","spacing","niceRange","niceMin","niceMax","numSpaces","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","fixedStepSize","PolarArea","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","eventListenerOptions","passive","createEvent","nativeEvent","fromNativeEvent","throttled","ticking","createResizer","resizer","createElement","cls","maxSize","cssText","className","innerHTML","expand","childNodes","shrink","_reset","scrollLeft","scrollTop","watchForRender","expando","renderProxy","animationName","reflow","offsetParent","classList","unwatchForRender","remove","addResizeListener","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","css","_style","setAttribute","getElementsByTagName","appendChild","createTextNode","keyframes","getElementById","removeAttribute","proxies","addEvent","removeEvent","mapUiFlags","flags","flag","propertyName","splitPropertyPath","C_src_Solutions_WebApp_node_modules_babel_runtime_corejs2_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","$store","fieldRecordSystem","userSettings","dispatch","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SimpleTableSortingButton_vue_vue_type_style_index_0_id_6c9a549e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SimpleTableSortingButton_vue_vue_type_style_index_0_id_6c9a549e_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","constructors","scaleConstructor","scaleDefaults","getScaleConstructor","updateScaleDefaults","additions","addScalesToLayout","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationTable_vue_vue_type_style_index_0_id_e93d0530_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationTable_vue_vue_type_style_index_0_id_e93d0530_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","rgb2hsl","rgb2hsv","rgb2hwb","rgb2cmyk","c","m","rgb2keyword","reverseKeywords","JSON","stringify","rgb2xyz","z","rgb2lab","xyz","rgb2lch","lab2lch","hsl2rgb","t1","t2","t3","hsl2hsv","sv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv","q","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","wh","bl","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab","hr","lab2rgb","lch2lab","lch","lch2xyz","lch2rgb","keyword2rgb","cssKeywords","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","conversions","convert","Converter","func","pair","exec","from","convs","routeSpace","space","getValues","setValues","fspace","effects","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationDonutChart_vue_vue_type_style_index_0_id_3a49b512_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CultivationDonutChart_vue_vue_type_style_index_0_id_3a49b512_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","afterDatasetsUpdate","$filler","beforeDatasetDraw","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","eventPosition","nearestElement","d","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","createTooltipItem","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","bodyItem","before","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getBeforeAfterBodyLines","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","getElementsAtEventForMode","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SimpleTable_vue_vue_type_style_index_0_id_2728a880_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_index_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_SimpleTable_vue_vue_type_style_index_0_id_2728a880_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default","responsive","responsiveAnimationDuration","maintainAspectRatio","events","animationDuration","construct","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","borders","startCorner","cornerAt","corner","scatter","angleLines","circular","pointLabels","polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","positionIsHorizontal","types","instances","_bufferedRender","bindEvents","resize","initToolTip","stop","silent","newWidth","newHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","dtype","dposition","isDefault","scaleType","scaleClass","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","hoverOptions","Controller","Color","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","desaturate","whiten","blacken","greyscale","clearer","opaquer","mixinColor","color1","w1","w2","toJSON","spaces","maxes","capped","chans","sname","svalues","SimpleTableBooleanvue_type_template_id_376a24ea_lang_html_functional_true_render","SimpleTableBooleanvue_type_script_lang_js_","table_SimpleTableBooleanvue_type_script_lang_js_","SimpleTableBoolean","SimpleTableStringArray","functional","_context$props","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","measureLabelSize","determineLimits","fitWithPointLabels","plFont","largestPossibleRadius","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","drawingArea","setCenterPoint","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","LinearRadialScale","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","defaultColors","noArea","tooltipCallbacks","C_src_Solutions_WebApp_node_modules_babel_runtime_corejs2_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","colorFunction","labelPluginOptions","normalizedData","processedData","colors","defaultColorFunction","dataItem","legendLables","_ref","beforeDestroy","_this3","defaultOptions","activeElements","percentOptions","mergeWith"],"mappings":"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uD,EAAAj+C,IAGA,SAAAs+C,EAAAt+C,GACA,OAAA26C,EAAAsD,EAAAj+C,IAGA,SAAAu+C,EAAAv+C,GACA,OAAAo7C,EAAA6C,EAAAj+C,IAGA,SAAAw+C,EAAAx+C,GACA,OAAAk7C,EAAA+C,EAAAj+C,IA1hBAhK,EAAAC,QAAA,CACAukD,UACAC,UACAC,UACAC,WACAG,cACAI,UACAE,UACAE,UAEAE,UACAI,UACAE,UACAC,WACAC,cAEAC,UACAG,UACAE,UACAC,WACAC,cAEAC,UACAG,UACAC,UACAC,WACAC,cAEAC,WACAE,WACAC,WACAC,WACAC,eAEAY,cACAE,cACAC,cACAC,cACAC,eACAC,cACAC,cAEAlB,UACAC,UACAC,UAEAC,UACAG,UACArC,UAEAsC,UACAE,UACAC,WAyeA,IAAAE,EAAA,CACAznC,UAAA,cACAC,aAAA,cACAC,KAAA,YACAC,WAAA,cACAC,MAAA,cACAC,MAAA,cACAC,OAAA,cACAC,MAAA,QACAC,eAAA,cACAC,KAAA,UACAC,WAAA,aACAC,MAAA,YACAC,UAAA,cACAC,UAAA,aACAC,WAAA,YACAC,UAAA,aACAC,MAAA,aACAC,eAAA,cACAC,SAAA,cACAC,QAAA,YACAC,KAAA,YACAC,SAAA,UACAC,SAAA,YACAC,cAAA,aACAC,SAAA,cACAC,UAAA,UACAC,SAAA,cACAC,UAAA,cACAC,YAAA,YACAC,eAAA,YACAC,WAAA,YACAC,WAAA,aACAC,QAAA,UACAC,WAAA,cACAC,aAAA,cACAC,cAAA,YACAC,cAAA,WACAC,cAAA,WACAC,cAAA,YACAC,WAAA,YACAC,SAAA,aACAC,YAAA,YACAC,QAAA,cACAC,QAAA,cACAC,WAAA,aACAC,UAAA,YACAC,YAAA,cACAC,YAAA,YACAC,QAAA,YACAC,UAAA,cACAC,WAAA,cACAC,KAAA,YACAC,UAAA,aACAC,KAAA,cACAC,MAAA,UACAC,YAAA,aACAC,KAAA,cACAC,SAAA,cACAC,QAAA,cACAC,UAAA,YACAC,OAAA,WACAC,MAAA,cACAC,MAAA,cACAC,SAAA,cACAC,cAAA,cACAC,UAAA,YACAC,aA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","file":"js/chunk-897022e6.ff3fee81.js","sourcesContent":["'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\nvar Element = require('./core.element');\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n","'use strict';\n\nvar color = require('chartjs-color');\nvar helpers = require('../helpers/index');\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n","import mod from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationStatistics.vue?vue&type=style&index=0&id=dcccee2e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationStatistics.vue?vue&type=style&index=0&id=dcccee2e&lang=scss&scoped=true&\"","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n","import mod from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationSummary.vue?vue&type=style&index=0&id=53a35db6&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationSummary.vue?vue&type=style&index=0&id=53a35db6&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('LabelAndMessage',{attrs:{\"id\":_vm.id,\"label\":_vm.label,\"description\":_vm.combinedDescription}},[_c('span',{staticClass:\"bs-checkbox\",class:{inline: _vm.inline, 'has-error': _vm.dirty && _vm.required && !_vm.checked, 'has-success': _vm.dirty && _vm.required && _vm.checked}},[(!_vm.inline)?_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checked),expression:\"checked\"}],ref:\"checkbox\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"checked\":Array.isArray(_vm.checked)?_vm._i(_vm.checked,null)>-1:(_vm.checked)},on:{\"change\":function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}}}}),_vm._t(\"default\")],2)]):_c('label',{staticClass:\"checkbox-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checked),expression:\"checked\"}],ref:\"checkbox\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"checked\":Array.isArray(_vm.checked)?_vm._i(_vm.checked,null)>-1:(_vm.checked)},on:{\"change\":function($event){var $$a=_vm.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checked=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checked=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checked=$$c}}}}),_vm._t(\"default\")],2)]),_vm._t(\"label\",null,{\"slot\":\"label\"}),(_vm.$slots.description)?_vm._t(\"description\",null,{\"slot\":\"description\"}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BsCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BsCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BsCheckbox.vue?vue&type=template&id=ca14c080&scoped=true&lang=html&\"\nimport script from \"./BsCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./BsCheckbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BsCheckbox.vue?vue&type=style&index=0&id=ca14c080&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ca14c080\",\n null\n \n)\n\nexport default component.exports","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/* global window: false */\n'use strict';\n\nvar moment = require('moment');\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n","'use strict';\n\nmodule.exports = require('./helpers.core');\nmodule.exports.easing = require('./helpers.easing');\nmodule.exports.canvas = require('./helpers.canvas');\nmodule.exports.options = require('./helpers.options');\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BsCheckbox.vue?vue&type=style&index=0&id=ca14c080&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BsCheckbox.vue?vue&type=style&index=0&id=ca14c080&lang=scss&scoped=true&\"","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n","/**\n * @namespace Chart\n */\nvar Chart = require('./core/core')();\n\nChart.helpers = require('./helpers/index');\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire('./core/core.helpers')(Chart);\n\nChart.Animation = require('./core/core.animation');\nChart.animationService = require('./core/core.animations');\nChart.defaults = require('./core/core.defaults');\nChart.Element = require('./core/core.element');\nChart.elements = require('./elements/index');\nChart.Interaction = require('./core/core.interaction');\nChart.layouts = require('./core/core.layouts');\nChart.platform = require('./platforms/platform');\nChart.plugins = require('./core/core.plugins');\nChart.Scale = require('./core/core.scale');\nChart.scaleService = require('./core/core.scaleService');\nChart.Ticks = require('./core/core.ticks');\nChart.Tooltip = require('./core/core.tooltip');\n\nrequire('./core/core.controller')(Chart);\nrequire('./core/core.datasetController')(Chart);\n\nrequire('./scales/scale.linearbase')(Chart);\nrequire('./scales/scale.category')(Chart);\nrequire('./scales/scale.linear')(Chart);\nrequire('./scales/scale.logarithmic')(Chart);\nrequire('./scales/scale.radialLinear')(Chart);\nrequire('./scales/scale.time')(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire('./controllers/controller.bar')(Chart);\nrequire('./controllers/controller.bubble')(Chart);\nrequire('./controllers/controller.doughnut')(Chart);\nrequire('./controllers/controller.line')(Chart);\nrequire('./controllers/controller.polarArea')(Chart);\nrequire('./controllers/controller.radar')(Chart);\nrequire('./controllers/controller.scatter')(Chart);\n\nrequire('./charts/Chart.Bar')(Chart);\nrequire('./charts/Chart.Bubble')(Chart);\nrequire('./charts/Chart.Doughnut')(Chart);\nrequire('./charts/Chart.Line')(Chart);\nrequire('./charts/Chart.PolarArea')(Chart);\nrequire('./charts/Chart.Radar')(Chart);\nrequire('./charts/Chart.Scatter')(Chart);\n\n// Loading built-in plugins\nvar plugins = require('./plugins');\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\nvar Ticks = require('./core.ticks');\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n","/* global window: false */\n'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n","/**\n * [chartjs-plugin-labels]{@link https://github.com/emn178/chartjs-plugin-labels}\n *\n * @version 1.1.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2017-2018\n * @license MIT\n */\n(function () {\n 'use strict';\n\n if (typeof Chart === 'undefined') {\n console.error('Can not find Chart object.');\n return;\n }\n\n if (typeof Object.assign != 'function') {\n Object.assign = function (target, varArgs) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var to = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n if (nextSource != null) {\n for (var nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n\n var SUPPORTED_TYPES = {};\n ['pie', 'doughnut', 'polarArea', 'bar'].forEach(function (t) {\n SUPPORTED_TYPES[t] = true;\n });\n\n function Label() {\n this.renderToDataset = this.renderToDataset.bind(this);\n }\n\n Label.prototype.setup = function (chart, options) {\n this.chart = chart;\n this.ctx = chart.ctx;\n this.args = {};\n this.barTotal = {};\n var chartOptions = chart.config.options;\n this.options = Object.assign({\n position: 'default',\n precision: 0,\n fontSize: chartOptions.defaultFontSize,\n fontColor: chartOptions.defaultFontColor,\n fontStyle: chartOptions.defaultFontStyle,\n fontFamily: chartOptions.defaultFontFamily,\n shadowOffsetX: 3,\n shadowOffsetY: 3,\n shadowColor: 'rgba(0,0,0,0.3)',\n shadowBlur: 6,\n images: [],\n outsidePadding: 2,\n textMargin: 2,\n overlap: true\n }, options);\n if (chart.config.type === 'bar') {\n this.options.position = 'default';\n this.options.arc = false;\n this.options.overlap = true;\n }\n };\n\n Label.prototype.render = function () {\n this.labelBounds = [];\n this.chart.data.datasets.forEach(this.renderToDataset);\n };\n\n Label.prototype.renderToDataset = function (dataset, index) {\n this.totalPercentage = 0;\n this.total = null;\n var arg = this.args[index];\n arg.meta.data.forEach(function (element, index) {\n this.renderToElement(dataset, arg, element, index);\n }.bind(this));\n };\n\n Label.prototype.renderToElement = function (dataset, arg, element, index) {\n if (!this.shouldRenderToElement(arg.meta, element)) {\n return;\n }\n this.percentage = null;\n var label = this.getLabel(dataset, element, index);\n if (!label) {\n return;\n }\n var ctx = this.ctx;\n ctx.save();\n ctx.font = Chart.helpers.fontString(this.options.fontSize, this.options.fontStyle, this.options.fontFamily);\n var renderInfo = this.getRenderInfo(element, label);\n if (!this.drawable(element, label, renderInfo)) {\n ctx.restore();\n return;\n }\n ctx.beginPath();\n ctx.fillStyle = this.getFontColor(dataset, element, index);\n this.renderLabel(label, renderInfo);\n ctx.restore();\n };\n\n Label.prototype.renderLabel = function (label, renderInfo) {\n return this.options.arc ? this.renderArcLabel(label, renderInfo) : this.renderBaseLabel(label, renderInfo);\n };\n\n Label.prototype.renderBaseLabel = function (label, position) {\n var ctx = this.ctx;\n if (typeof label === 'object') {\n ctx.drawImage(label, position.x - label.width / 2, position.y - label.height / 2, label.width, label.height);\n } else {\n ctx.save();\n ctx.textBaseline = 'top';\n ctx.textAlign = 'center';\n\n if (this.options.textShadow) {\n ctx.shadowOffsetX = this.options.shadowOffsetX;\n ctx.shadowOffsetY = this.options.shadowOffsetY;\n ctx.shadowColor = this.options.shadowColor;\n ctx.shadowBlur = this.options.shadowBlur;\n }\n\n var lines = label.split('\\n');\n for (var i = 0; i < lines.length; i++) {\n var y = position.y - this.options.fontSize / 2 * lines.length + this.options.fontSize * i;\n ctx.fillText(lines[i], position.x, y);\n }\n ctx.restore();\n }\n };\n\n Label.prototype.renderArcLabel = function (label, renderInfo) {\n var ctx = this.ctx, radius = renderInfo.radius, view = renderInfo.view;\n ctx.save();\n ctx.translate(view.x, view.y);\n if (typeof label === 'string') {\n ctx.rotate(renderInfo.startAngle);\n ctx.textBaseline = 'middle';\n ctx.textAlign = 'left';\n var lines = label.split('\\n'), max = 0, widths = [], offset = 0;\n if (this.options.position === 'border') {\n offset = (lines.length - 1) * this.options.fontSize / 2;\n }\n for (var j = 0; j < lines.length; ++j) {\n var mertrics = ctx.measureText(lines[j]);\n if (mertrics.width > max) {\n max = mertrics.width;\n }\n widths.push(mertrics.width);\n }\n for (var j = 0; j < lines.length; ++j) {\n var line = lines[j];\n var y = (lines.length - 1 - j) * -this.options.fontSize + offset;\n ctx.save();\n var padding = (max - widths[j]) / 2;\n ctx.rotate(padding / radius);\n for (var i = 0; i < line.length; i++) {\n var char = line.charAt(i);\n mertrics = ctx.measureText(char);\n ctx.save();\n ctx.translate(0, -1 * radius);\n ctx.fillText(char, 0, y);\n ctx.restore();\n ctx.rotate(mertrics.width / radius);\n }\n ctx.restore();\n }\n } else {\n ctx.rotate((view.startAngle + Math.PI / 2 + renderInfo.endAngle) / 2);\n ctx.translate(0, -1 * radius);\n this.renderLabel(label, { x: 0, y: 0 });\n }\n ctx.restore();\n };\n\n Label.prototype.shouldRenderToElement = function (meta, element) {\n return !meta.hidden && !element.hidden && (\n this.options.showZero ||\n this.chart.config.type === 'polarArea' ? element._view.outerRadius !== 0 : element._view.circumference !== 0\n );\n };\n\n Label.prototype.getLabel = function (dataset, element, index) {\n var label;\n if (typeof this.options.render === 'function') {\n label = this.options.render({\n label: this.chart.config.data.labels[index],\n value: dataset.data[index],\n percentage: this.getPercentage(dataset, element, index),\n dataset: dataset,\n index: index\n });\n } else {\n switch (this.options.render) {\n case 'value':\n label = dataset.data[index];\n break;\n case 'label':\n label = this.chart.config.data.labels[index];\n break;\n case 'image':\n label = this.options.images[index] ? this.loadImage(this.options.images[index]) : '';\n break;\n case 'percentage':\n default:\n label = this.getPercentage(dataset, element, index) + '%';\n break;\n }\n }\n if (typeof label === 'object') {\n label = this.loadImage(label);\n } else if (label !== null && label !== undefined) {\n label = label.toString();\n }\n return label;\n };\n\n Label.prototype.getFontColor = function (dataset, element, index) {\n var fontColor = this.options.fontColor;\n if (typeof fontColor === 'function') {\n fontColor = fontColor({\n label: this.chart.config.data.labels[index],\n value: dataset.data[index],\n percentage: this.getPercentage(dataset, element, index),\n backgroundColor: dataset.backgroundColor[index],\n dataset: dataset,\n index: index\n });\n } else if (typeof fontColor !== 'string') {\n fontColor = fontColor[index] || this.chart.config.options.defaultFontColor;\n }\n return fontColor;\n };\n\n Label.prototype.getPercentage = function (dataset, element, index) {\n if (this.percentage !== null) {\n return this.percentage;\n }\n var percentage;\n if (this.chart.config.type === 'polarArea') {\n if (this.total === null) {\n this.total = 0;\n for (var i = 0;i < dataset.data.length; ++i) {\n this.total += dataset.data[i];\n }\n }\n percentage = dataset.data[index] / this.total * 100;\n } else if (this.chart.config.type === 'bar') {\n if (this.barTotal[index] === undefined) {\n this.barTotal[index] = 0;\n for (var i = 0;i < this.chart.data.datasets.length; ++i) {\n this.barTotal[index] += this.chart.data.datasets[i].data[index];\n }\n }\n percentage = dataset.data[index] / this.barTotal[index] * 100;\n } else {\n percentage = element._view.circumference / this.chart.config.options.circumference * 100;\n }\n percentage = parseFloat(percentage.toFixed(this.options.precision));\n if (!this.options.showActualPercentages) {\n if (this.chart.config.type === 'bar') {\n this.totalPercentage = this.barTotalPercentage[index] || 0;\n }\n this.totalPercentage += percentage;\n if (this.totalPercentage > 100) {\n percentage -= this.totalPercentage - 100;\n percentage = parseFloat(percentage.toFixed(this.options.precision));\n }\n if (this.chart.config.type === 'bar') {\n this.barTotalPercentage[index] = this.totalPercentage\n }\n }\n this.percentage = percentage;\n return percentage;\n };\n\n Label.prototype.getRenderInfo = function (element, label) {\n if (this.chart.config.type === 'bar') {\n return this.getBarRenderInfo(element, label);\n } else {\n return this.options.arc ? this.getArcRenderInfo(element, label) : this.getBaseRenderInfo(element, label);\n }\n };\n\n Label.prototype.getBaseRenderInfo = function (element, label) {\n if (this.options.position === 'outside' || this.options.position === 'border') {\n var renderInfo, rangeFromCentre,\n view = element._view,\n centreAngle = view.startAngle + (view.endAngle - view.startAngle) / 2,\n innerRadius = view.outerRadius / 2;\n if (this.options.position === 'border') {\n rangeFromCentre = (view.outerRadius - innerRadius) / 2 + innerRadius;\n } else if (this.options.position === 'outside') {\n rangeFromCentre = (view.outerRadius - innerRadius) + innerRadius + this.options.textMargin;\n }\n renderInfo = {\n x: view.x + (Math.cos(centreAngle) * rangeFromCentre),\n y: view.y + (Math.sin(centreAngle) * rangeFromCentre)\n };\n if (this.options.position === 'outside') {\n var offset = this.options.textMargin + this.measureLabel(label).width / 2;\n renderInfo.x += renderInfo.x < view.x ? -offset : offset;\n }\n return renderInfo;\n } else {\n return element.tooltipPosition();\n }\n };\n\n Label.prototype.getArcRenderInfo = function (element, label) {\n var radius, view = element._view;\n if (this.options.position === 'outside') {\n radius = view.outerRadius + this.options.fontSize + this.options.textMargin;\n } else if (this.options.position === 'border') {\n radius = (view.outerRadius / 2 + view.outerRadius) / 2;\n } else {\n radius = (view.innerRadius + view.outerRadius) / 2;\n }\n var startAngle = view.startAngle, endAngle = view.endAngle;\n var totalAngle = endAngle - startAngle;\n startAngle += Math.PI / 2;\n endAngle += Math.PI / 2;\n var mertrics = this.measureLabel(label);\n startAngle += (endAngle - (mertrics.width / radius + startAngle)) / 2;\n return {\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n totalAngle: totalAngle,\n view: view\n }\n };\n\n Label.prototype.getBarRenderInfo = function (element, label) {\n var renderInfo = element.tooltipPosition();\n renderInfo.y -= this.measureLabel(label).height / 2 + this.options.textMargin;\n return renderInfo;\n };\n\n Label.prototype.drawable = function (element, label, renderInfo) {\n if (this.options.overlap) {\n return true;\n } else if (this.options.arc) {\n return renderInfo.endAngle - renderInfo.startAngle <= renderInfo.totalAngle;\n } else {\n var mertrics = this.measureLabel(label),\n left = renderInfo.x - mertrics.width / 2,\n right = renderInfo.x + mertrics.width / 2,\n top = renderInfo.y - mertrics.height / 2,\n bottom = renderInfo.y + mertrics.height / 2;\n if (this.options.renderInfo === 'outside') {\n return this.outsideInRange(left, right, top, bottom);\n } else {\n return element.inRange(left, top) && element.inRange(left, bottom) &&\n element.inRange(right, top) && element.inRange(right, bottom);\n }\n }\n };\n\n Label.prototype.outsideInRange = function (left, right, top, bottom) {\n var labelBounds = this.labelBounds;\n for (var i = 0;i < labelBounds.length;++i) {\n var bound = labelBounds[i];\n var potins = [\n [left, top],\n [left, bottom],\n [right, top],\n [right, bottom]\n ];\n for (var j = 0;j < potins.length;++j) {\n var x = potins[j][0];\n var y = potins[j][1];\n if (x >= bound.left && x <= bound.right && y >= bound.top && y <= bound.bottom) {\n return false;\n }\n }\n potins = [\n [bound.left, bound.top],\n [bound.left, bound.bottom],\n [bound.right, bound.top],\n [bound.right, bound.bottom]\n ];\n for (var j = 0;j < potins.length;++j) {\n var x = potins[j][0];\n var y = potins[j][1];\n if (x >= left && x <= right && y >= top && y <= bottom) {\n return false;\n }\n }\n }\n labelBounds.push({\n left: left,\n right: right,\n top: top,\n bottom: bottom\n });\n return true;\n };\n\n Label.prototype.measureLabel = function (label) {\n if (typeof label === 'object') {\n return { width: label.width, height: label.height };\n } else {\n var width = 0;\n var lines = label.split('\\n');\n for (var i = 0; i < lines.length; ++i) {\n var result = this.ctx.measureText(lines[i]);\n if (result.width > width) {\n width = result.width;\n }\n }\n return { width: width, height: this.options.fontSize * lines.length };\n }\n };\n\n Label.prototype.loadImage = function (obj) {\n var image = new Image();\n image.src = obj.src;\n image.width = obj.width;\n image.height = obj.height;\n return image;\n };\n\n Chart.plugins.register({\n id: 'labels',\n beforeDatasetsUpdate: function (chart, options) {\n if (!SUPPORTED_TYPES[chart.config.type]) {\n return;\n }\n if (!Array.isArray(options)) {\n options = [options];\n }\n var count = options.length;\n if (!chart._labels || count !== chart._labels.length) {\n chart._labels = options.map(function () {\n return new Label();\n });\n }\n var someOutside = false, maxPadding = 0;\n for (var i = 0; i < count; ++i) {\n var label = chart._labels[i];\n label.setup(chart, options[i]);\n if (label.options.position === 'outside') {\n someOutside = true;\n var padding = label.options.fontSize * 1.5 + label.options.outsidePadding;\n if (padding > maxPadding) {\n maxPadding = padding;\n }\n }\n }\n if (someOutside) {\n chart.chartArea.top += maxPadding;\n chart.chartArea.bottom -= maxPadding;\n }\n },\n afterDatasetUpdate: function (chart, args, options) {\n if (!SUPPORTED_TYPES[chart.config.type]) {\n return;\n }\n chart._labels.forEach(function (label) {\n label.args[args.index] = args;\n });\n },\n beforeDraw: function (chart) {\n if (!SUPPORTED_TYPES[chart.config.type]) {\n return;\n }\n chart._labels.forEach(function (label) {\n label.barTotalPercentage = {};\n });\n },\n afterDatasetsDraw: function (chart) {\n if (!SUPPORTED_TYPES[chart.config.type]) {\n return;\n }\n chart._labels.forEach(function (label) {\n label.render();\n });\n }\n });\n})();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cultivation-summary\"},[_c('div',{staticClass:\"summary-header\"},[_c('h3',[_c('IxRes',[_vm._v(\"cultivation.titles.overviewCultivations\")])],1),_c('BsCheckbox',{attrs:{\"inline\":\"\"},model:{value:(_vm.showHints),callback:function ($$v) {_vm.showHints=$$v},expression:\"showHints\"}},[_c('IxRes',[_vm._v(\"cultivation.hints.showChartHint\")])],1)],1),(_vm.selected.length === 0)?_c('CultivationStatistics',{attrs:{\"harvest-year\":_vm.year,\"org-unit-id\":_vm.orgUnitId,\"extern-show-hints\":_vm.showHints}}):_c('CultivationsStatistics'),_c('CultivationDonuts',{attrs:{\"filtered-cultivations\":_vm.selectedCultivationData,\"show-hints\":_vm.showHints},scopedSlots:_vm._u([{key:\"second-chart-title\",fn:function(){return [(_vm.selected.length === 0)?_c('IxRes',[_vm._v(\"cultivation.labels.TotalCultivatedArea_Chart\")]):_c('IxRes',[_vm._v(\"cultivation.labels.SelectedCultivatedArea_Chart\")])]},proxy:true},{key:\"second-chart-hint\",fn:function(){return [_c('IxRes',[_vm._v(\"cultivation.hints.SelectedCultivatedArea_Chart\")])]},proxy:true}])}),_c('CultivationTable',{attrs:{\"data\":_vm.selectedCultivationData.filter(function (data) { return data.typeShortcut === 'HF'; })},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('IxRes',[_vm._v(\"Areas.FieldRecordSystem.SR_FieldRecordSystem.CultivationType_main\")])]},proxy:true}])}),_c('CultivationTable',{attrs:{\"data\":_vm.selectedCultivationData.filter(function (data) { return data.typeShortcut === 'ZF' || data.typeShortcut === 'ZW'; })},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('IxRes',[_vm._v(\"Areas.FieldRecordSystem.SR_FieldRecordSystem.CultivationType_secondary_catch\")])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('LabelAndMessage',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('IxRes',[_vm._v(\"cultivation.labels.totalAreaOfSelectedCultivations\")]),_vm._v(\":\\n \")]},proxy:true}])},[_c('span',[_vm._v(\" \")]),_c('span',[_vm._v(_vm._s(_vm.sum))])]),(_vm.showHints)?_c('HelpBox',[_c('IxRes',[_vm._v(\"cultivation.hints.totalAreaOfSelectedCultivations\")])],1):_vm._e(),_c('LabelAndMessage',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('IxRes',[_vm._v(\"cultivation.labels.averageCultivationArea\")]),_vm._v(\":\\n \")]},proxy:true}])},[_c('span',[_vm._v(\" \")]),_c('span',[_vm._v(_vm._s(_vm.average))])]),(_vm.showHints)?_c('HelpBox',[_c('IxRes',[_vm._v(\"cultivation.hints.averageCultivationArea\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationsStatistics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationsStatistics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationsStatistics.vue?vue&type=template&id=3f842abc&scoped=true&\"\nimport script from \"./CultivationsStatistics.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationsStatistics.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f842abc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chart-container\"},[_c('div',[_c('CultivationDonutChart',{attrs:{\"cultivations\":_vm.filteredCultivations},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._t(\"second-chart-title\")]},proxy:true}],null,true)}),(_vm.showHints)?_c('HelpBox',[_vm._t(\"second-chart-hint\")],2):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cultivation-statistics\"},[(_vm.$slots.title)?_c('h3',[_vm._t(\"title\")],2):_vm._e(),_c('div',{staticClass:\"overlay-container\"},[(_vm.noData)?_c('div',{staticClass:\"overlay\"},[_c('div',[_c('IxRes',[_vm._v(\"cultivation.tooltips.noMainOrCatchCropSelected\")])],1)]):_vm._e(),_c('DonutChart',{attrs:{\"data\":_vm.chartData,\"additional-options\":_vm.additionalOptions,\"multidata\":\"\"},on:{\"click\":_vm.onElementClicked}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('canvas',{ref:\"canvas\",attrs:{\"width\":_vm.width,\"height\":_vm.height}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DonutChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DonutChart.vue?vue&type=template&id=4c3757b7&scoped=true&lang=html&\"\nimport script from \"./DonutChart.vue?vue&type=script&lang=js&\"\nexport * from \"./DonutChart.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c3757b7\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonutChart.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonutChart.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationDonutChart.vue?vue&type=template&id=3a49b512&scoped=true&\"\nimport script from \"./CultivationDonutChart.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationDonutChart.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CultivationDonutChart.vue?vue&type=style&index=0&id=3a49b512&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a49b512\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonuts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonuts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationDonuts.vue?vue&type=template&id=73cb1682&scoped=true&\"\nimport script from \"./CultivationDonuts.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationDonuts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CultivationDonuts.vue?vue&type=style&index=0&id=73cb1682&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73cb1682\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('LabelAndMessage',{scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._t(\"label\")]},proxy:true}],null,true)},[_c('SimpleTable',{staticClass:\"simple-table\",attrs:{\"columns\":_vm.columns,\"data\":_vm.tableData,\"localize-headers\":\"\"},scopedSlots:_vm._u([{key:\"color\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',{style:({backgroundColor: row.color, width: '12px', height: '16px', border: '1px solid black', borderRadius: '3px'})})]}},{key:\"type\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',[_vm._v(_vm._s(row.type))])]}},{key:\"label\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',[_vm._v(_vm._s(row.label))])]}},{key:\"area\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',[_vm._v(_vm._s(_vm.$i18n.format(row.area, 'hectare')))])]}},{key:\"percent\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('span',[_vm._v(_vm._s(_vm.$i18n.format(row.area / _vm.areaSum, 'percent')))])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationTable.vue?vue&type=template&id=e93d0530&scoped=true&\"\nimport script from \"./CultivationTable.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CultivationTable.vue?vue&type=style&index=0&id=e93d0530&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e93d0530\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationSummary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationSummary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationSummary.vue?vue&type=template&id=53a35db6&scoped=true&\"\nimport script from \"./CultivationSummary.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationSummary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CultivationSummary.vue?vue&type=style&index=0&id=53a35db6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53a35db6\",\n null\n \n)\n\nexport default component.exports","'use strict';\n\nvar helpers = require('../helpers/index');\nvar basic = require('./platform.basic');\nvar dom = require('./platform.dom');\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require('./plugin.filler');\nmodule.exports.legend = require('./plugin.legend');\nmodule.exports.title = require('./plugin.title');\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:\"frs-simple-table table table-striped table-condensed table-bordered table-hover table-responsive\",class:{'fixed-header': _vm.fixedHeader}},[_c('thead',[_c('tr',{style:({width: _vm.headerWidth + 'px'})},_vm._l((_vm.headerData),function(column,i){return _c('th',{key:i,style:({width: column.width})},[_vm._t((\"header-\" + (column.id)),[((_vm.localizeHeaders || column.localize) && column.title)?_c('IxRes',[_vm._v(_vm._s(column.title))]):[_vm._v(\"\\n \"+_vm._s(column.title)+\"\\n \")]],{\"title\":column.title}),(column.sortable)?_c('SimpleTableSortingButton',{attrs:{\"active\":i === _vm.sortedBy,\"descending\":_vm.descending,\"type\":column.type},on:{\"click\":function($event){return _vm.sortBy(i)}}}):_vm._e()],2)}),0)]),_c('tbody',{ref:\"tableBody\",on:{\"scroll\":_vm.onScroll}},[(_vm.data.length)?[_vm._l((_vm.sortedData),function(row,i){return _vm._t(\"default\",[_c('tr',{key:i,class:_vm.highlight ? _vm.highlight(row, i) : []},_vm._l((_vm.headerData),function(column,j){return _c('td',{key:j,style:({width: column.width}),on:{\"click\":function($event){_vm.$emit('click', {\n row: row,\n column: column,\n rowIndex: i,\n columnIndex: j,\n value: column.value(row, i),\n event: $event\n })}}},[_vm._t((\"\" + (column.id)),[_c('SimpleTableAutoCell',{attrs:{\"value\":column.value(row, i),\"type\":column.type,\"format-string\":column.formatString}})],{\"row\":row,\"column\":column,\"rowIndex\":i,\"columnIndex\":j,\"value\":column.value(row, i)})],2)}),0)],{\"row\":row,\"index\":i})})]:_c('tr',[_c('td',{staticClass:\"no-data\",attrs:{\"colspan\":_vm.headerData.length}},[_c('IxRes',[_vm._v(\"Common.SR_Common.SimpleTable.NoData\")])],1)])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"sort-button\",class:{active: _vm.active},on:{\"click\":function($event){return _vm.$emit('click')}}},[_c('FaIcon',{attrs:{\"icon\":_vm.icon,\"fixed-width\":\"\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableSortingButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableSortingButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SimpleTableSortingButton.vue?vue&type=template&id=6c9a549e&scoped=true&lang=html&\"\nimport script from \"./SimpleTableSortingButton.vue?vue&type=script&lang=js&\"\nexport * from \"./SimpleTableSortingButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SimpleTableSortingButton.vue?vue&type=style&index=0&id=6c9a549e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c9a549e\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SimpleTable.vue?vue&type=template&id=2728a880&scoped=true&lang=html&\"\nimport script from \"./SimpleTable.vue?vue&type=script&lang=js&\"\nexport * from \"./SimpleTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SimpleTable.vue?vue&type=style&index=0&id=2728a880&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2728a880\",\n null\n \n)\n\nexport default component.exports","/* MIT license */\nvar colorNames = require('color-name');\n\nmodule.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n}\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/i,\n hex = /^#([a-fA-F0-9]{6})$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n","/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require('chartjs-color');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['cultivation-statistics', {loading: !_vm.statistics}]},[(_vm.statistics)?_c('div',[(_vm.externShowHints === null)?_c('BsCheckbox',{staticClass:\"checkbox\",attrs:{\"inline\":\"\"},model:{value:(_vm.showHints),callback:function ($$v) {_vm.showHints=$$v},expression:\"showHints\"}},[_c('IxRes',[_vm._v(\"frs.orgUnit.statistics.field.hints.showHints\")])],1):_vm._e(),_c('table',[_c('tr',[_c('th',{attrs:{\"scope\":\"row\"}},[_c('IxRes',[_vm._v(\"cultivation.statistics.labels.totalFieldArea\")])],1),_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.$i18n.format(_vm.statistics.companyAreaSum, 'hectare'))+\"\\n \")]),_c('td')]),(_vm.showHints)?_c('tr',[_c('td',{staticClass:\"help\",attrs:{\"colspan\":\"3\"}},[_c('HelpBox',[_c('IxRes',[_vm._v(\"cultivation.statistics.hint.totalFieldArea\")])],1)],1)]):_vm._e(),_vm._l((['main', 'secondaryAndCatch', 'eco']),function(value,index){return _c('tr',{key:index},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('IxRes',[_vm._v(\"cultivation.statistics.labels.cultivationType_\"+_vm._s(value))])],1),_c('td',[_vm._v(_vm._s(_vm.printArea((value + \"CultivationsAreaSum\"))))]),_c('td',[_vm._v(_vm._s(_vm.printPercentage((value + \"CultivationsAreaSum\"))))])])})],2),(_vm.showHints)?_c('HelpBox',[_c('IxRes',[_vm._v(\"cultivation.statistics.hint.cultivationFieldPercentage\")])],1):_vm._e()],1):_vm._e(),_c('FrsLoadingIndicator',{attrs:{\"requests\":['orgUnit.cultivationsV2.statistics']}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationStatistics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationStatistics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CultivationStatistics.vue?vue&type=template&id=dcccee2e&scoped=true&\"\nimport script from \"./CultivationStatistics.vue?vue&type=script&lang=js&\"\nexport * from \"./CultivationStatistics.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CultivationStatistics.vue?vue&type=style&index=0&id=dcccee2e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dcccee2e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonuts.vue?vue&type=style&index=0&id=73cb1682&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonuts.vue?vue&type=style&index=0&id=73cb1682&lang=scss&scoped=true&\"","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require('../helpers/index');\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
' +\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n","import {splitPropertyPath} from '@helpers/vuex/common'\r\n\r\nexport function mapUiFlags (flags) {\r\n const computed = {}\r\n\r\n if (Array.isArray(flags)) {\r\n flags = flags.reduce((lookup, flag) => {\r\n const propertyName = splitPropertyPath(flag)[1]\r\n\r\n return Object.assign(lookup, {[propertyName]: flag})\r\n }, {})\r\n }\r\n\r\n for (const propertyName in flags) {\r\n const flag = flags[propertyName]\r\n\r\n computed[propertyName] = {\r\n get () {\r\n return (this.$store.state.fieldRecordSystem !== undefined &&\r\n this.$store.state.fieldRecordSystem.userSettings.ui[flag]) ||\r\n false\r\n },\r\n set (value) {\r\n this.$store.dispatch('fieldRecordSystem/setUiFlag', {flag, value})\r\n }\r\n }\r\n }\r\n\r\n return computed\r\n}\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableSortingButton.vue?vue&type=style&index=0&id=6c9a549e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableSortingButton.vue?vue&type=style&index=0&id=6c9a549e&lang=scss&scoped=true&\"","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar layouts = require('./core.layouts');\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n","import mod from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationTable.vue?vue&type=style&index=0&id=e93d0530&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationTable.vue?vue&type=style&index=0&id=e93d0530&lang=scss&scoped=true&\"","/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) { \n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n \n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args); \n }\n\n return this.setValues(space, values);\n};\n \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n","import mod from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonutChart.vue?vue&type=style&index=0&id=3a49b512&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CultivationDonutChart.vue?vue&type=style&index=0&id=3a49b512&lang=scss&scoped=true&\"","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require('./element.arc');\nmodule.exports.Line = require('./element.line');\nmodule.exports.Point = require('./element.point');\nmodule.exports.Rectangle = require('./element.rectangle');\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTable.vue?vue&type=style&index=0&id=2728a880&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTable.vue?vue&type=style&index=0&id=2728a880&lang=scss&scoped=true&\"","'use strict';\n\nvar defaults = require('./core.defaults');\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n","'use strict';\n\nvar Animation = require('./core.animation');\nvar animations = require('./core.animations');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar Interaction = require('./core.interaction');\nvar layouts = require('./core.layouts');\nvar platform = require('../platforms/platform');\nvar plugins = require('./core.plugins');\nvar scaleService = require('../core/core.scaleService');\nvar Tooltip = require('./core.tooltip');\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n","/* MIT license */\nvar convert = require('color-convert');\nvar string = require('chartjs-color-string');\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","var render = function (_h,_vm) {var _c=_vm._c;return _c('i',{staticClass:\"fa\",class:[_vm.props.value === null ? 'fa-question' : _vm.props.value ? 'fa-check' : 'fa-close']})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableBoolean.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SimpleTableBoolean.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SimpleTableBoolean.vue?vue&type=template&id=376a24ea&lang=html&functional=true&\"\nimport script from \"./SimpleTableBoolean.vue?vue&type=script&lang=js&\"\nexport * from \"./SimpleTableBoolean.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default {\r\n props: {\r\n value: {},\r\n type: String\r\n },\r\n functional: true,\r\n render (h, context) {\r\n return h('span', context.props.value.map(value => value.name || value).join(', '))\r\n }\r\n}\r\n","import SimpleTableBoolean from './SimpleTableBoolean'\r\nimport SimpleTableStringArray from './SimpleTableStringArray'\r\nimport {format} from 'src/js/i18n/conversion'\r\n\r\nexport default {\r\n props: {\r\n value: {},\r\n type: String,\r\n formatString: String\r\n },\r\n functional: true,\r\n render (h, context) {\r\n const {value, type, formatString} = context.props\r\n\r\n if (Array.isArray(value)) {\r\n return h(SimpleTableStringArray, {props: {value, type}})\r\n } else if (typeof value === 'boolean' || type === 'boolean') {\r\n return h(SimpleTableBoolean, {props: {value}})\r\n } else if (value !== null && (typeof value === 'number' || type === 'number')) {\r\n return h('span', format(value, formatString))\r\n } else if (value !== null && (type === 'date' || type === 'datetime')) {\r\n return h('span', format(value, type))\r\n } else if (value && value.name) {\r\n return h('span', value.name)\r\n } else {\r\n return h('span', (value !== null && value !== undefined) ? value.toString() : '')\r\n }\r\n }\r\n}\r\n","'use strict';\n\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n","import Chart from 'chart.js'\r\nimport 'chartjs-plugin-labels'\r\nimport {mergeWith} from 'lodash'\r\nimport {format} from 'src/js/i18n/conversion'\r\n\r\nconst defaultColors = [\r\n '#FF6384',\r\n '#36A2EB',\r\n '#FFCE56'\r\n]\r\n\r\nexport default {\r\n props: {\r\n width: Number,\r\n height: Number,\r\n data: Array, // {label, value}\r\n percent: Boolean,\r\n legend: Boolean,\r\n noArea: {\r\n type: Boolean,\r\n default: false\r\n },\r\n tooltipCallbacks: {\r\n type: Object, // NOTE deprecated, move to additionalOptions\r\n default: () => {\r\n return {\r\n label: (tooltipItem, data) => {\r\n const value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]\r\n const label = data.labels[tooltipItem.index]\r\n let sum = 0\r\n data.datasets[tooltipItem.datasetIndex].data.forEach(val => {\r\n sum += val\r\n })\r\n\r\n const mainLabel = Array.isArray(label) ? label[0] : label\r\n const additionalLabels = Array.isArray(label) ? label.slice(1) : []\r\n return [mainLabel, data.noArea ? '' : `${format(value)} ha`, `${format(value / sum * 100)} %`, ...additionalLabels].filter(x => x !== '')\r\n }\r\n }\r\n }\r\n },\r\n colorFunction: Function, // ({dataItem, dataIndex, datasetIndex}) => \r\n additionalOptions: Object,\r\n plugins: {\r\n type: Array,\r\n default: () => []\r\n },\r\n labelPluginOptions: [Object, Array], // help: https://github.com/emn178/chartjs-plugin-labels // NOTE deprecated, move to additionalOptions\r\n multidata: Boolean\r\n },\r\n computed: {\r\n normalizedData () {\r\n return this.data[0] && Array.isArray(this.data[0])\r\n ? this.data\r\n : [this.data]\r\n },\r\n processedData () {\r\n return this.normalizedData.map(dataset => dataset.map(x => x.value))\r\n },\r\n datasets () {\r\n return this.processedData.map((data, datasetIndex) => ({\r\n data,\r\n backgroundColor: this.colors[datasetIndex]\r\n }))\r\n },\r\n colors () {\r\n const colorFunction = this.colorFunction || this.defaultColorFunction\r\n\r\n return this.normalizedData.map((data, datasetIndex) => {\r\n return data.map((dataItem, dataIndex) => colorFunction({dataIndex, dataItem, datasetIndex}))\r\n })\r\n },\r\n labels () {\r\n return this.multidata\r\n ? this.normalizedData.map(dataset => dataset.map(dataItem => dataItem.label))\r\n : this.normalizedData[0].map(dataItem => dataItem.label)\r\n },\r\n legendLables () {\r\n return {\r\n generateLabels: function (chart) {\r\n return chart.data.labels.map((label, i) => {\r\n return {\r\n text: label,\r\n fillStyle: chart.data.datasets[0].backgroundColor[i]\r\n }\r\n })\r\n }\r\n }\r\n }\r\n },\r\n methods: {\r\n defaultColorFunction ({dataIndex, dataItem}) {\r\n return dataItem.color || defaultColors[dataIndex % (defaultColors.length)]\r\n }\r\n },\r\n watch: {\r\n data () {\r\n if (this.datasets.length === this.chart.data.datasets.length) {\r\n this.datasets.forEach((dataset, i) => Object.assign(this.chart.data.datasets[i], dataset))\r\n } else {\r\n this.chart.data.datasets = this.datasets\r\n }\r\n this.chart.data.labels = [...this.labels]\r\n this.chart.options.legend.labels = this.legendLables\r\n this.chart.data.noArea = this.noArea\r\n this.chart.update()\r\n },\r\n height (value) {\r\n this.chart.canvas.height = value\r\n this.chart.canvas.style.height = value + 'px'\r\n this.chart.render()\r\n }\r\n },\r\n beforeUpdate () {\r\n this.chart.unbindEvents()\r\n },\r\n updated () {\r\n this.chart.bindEvents()\r\n },\r\n beforeDestroy () {\r\n this.chart.destroy()\r\n },\r\n mounted () {\r\n const defaultOptions = {\r\n data: {\r\n labels: [...this.labels],\r\n datasets: this.datasets,\r\n noArea: this.noArea\r\n },\r\n options: {\r\n legend: {\r\n display: this.legend,\r\n position: 'right',\r\n labels: this.legendLables\r\n },\r\n tooltips: {\r\n callbacks: this.tooltipCallbacks || {}\r\n },\r\n onClick: (event, activeElements) => {\r\n this.$emit('click', activeElements.map(element => this.data[element._datasetIndex][element._index]))\r\n },\r\n plugins: {\r\n labels: false\r\n }\r\n },\r\n plugins: [\r\n ...this.plugins\r\n ]\r\n }\r\n\r\n if (this.labelPluginOptions) {\r\n defaultOptions.options.plugins.labels = this.labelPluginOptions\r\n }\r\n\r\n const percentOptions = this.percent\r\n ? {\r\n options: {\r\n scales: {\r\n yAxes: [{\r\n ticks: {\r\n callback: value => `${this.$i18n.format(value, 'percent')}`\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]\r\n return `${this.$i18n.format(value, 'percent')}`\r\n }\r\n }\r\n }\r\n }\r\n }\r\n : {}\r\n\r\n const options = mergeWith(defaultOptions, percentOptions, this.options, {options: this.additionalOptions})\r\n\r\n this.chart = new Chart(this.$refs.canvas, options)\r\n }\r\n}\r\n"],"sourceRoot":""}