{"version":3,"sources":["webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/SerialChart.js","webpack:///./src/components/charts/Behavior/ForwardTanker/DirectedTreeMonthlyOccurrence.vue?eaf9","webpack:///src/components/charts/Behavior/ForwardTanker/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/ForwardTanker/DirectedTreeMonthlyOccurrence.vue?97a1","webpack:///./src/components/charts/Behavior/ForwardTanker/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Vessel/DirectedTreeMonthlyOccurrence.vue?93b5","webpack:///./src/components/charts/Behavior/ForwardTanker/DirectedTreeMonthlyOccurrence.vue?86e7","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/RoundedRectangle.js","webpack:///./src/components/charts/Behavior/Refinery/DirectedTreeMonthlyOccurrence.vue?510e","webpack:///src/components/charts/Behavior/Refinery/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Refinery/DirectedTreeMonthlyOccurrence.vue?7312","webpack:///./src/components/charts/Behavior/Refinery/DirectedTreeMonthlyOccurrence.vue","webpack:///./node_modules/@amcharts/amcharts4/.internal/themes/animated.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Button.js","webpack:///./src/components/charts/Behavior/Refinery/ColumnChart.vue?9c58","webpack:///./src/views/behavior/MonthlyOccurrence.vue?9c97","webpack:///./src/views/behavior/Refinery.vue?e187","webpack:///./src/components/charts/Behavior/Refinery/ColumnChart.vue?87c0","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChartDefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Grid.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYCursor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisTick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Axis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/XYSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/BaseColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/ColumnSeries.js","webpack:///src/components/charts/Behavior/Refinery/ColumnChart.vue","webpack:///./src/components/charts/Behavior/Refinery/ColumnChart.vue?f613","webpack:///./src/components/charts/Behavior/Refinery/ColumnChart.vue","webpack:///src/views/behavior/Refinery.vue","webpack:///./src/views/behavior/Refinery.vue?13f5","webpack:///./src/views/behavior/Refinery.vue","webpack:///./src/views/behavior/Tanker.vue?938c","webpack:///src/views/behavior/Tanker.vue","webpack:///./src/views/behavior/Tanker.vue?998a","webpack:///./src/views/behavior/Tanker.vue","webpack:///./src/views/behavior/ForwardTanker.vue?80e8","webpack:///src/views/behavior/ForwardTanker.vue","webpack:///./src/views/behavior/ForwardTanker.vue?bc00","webpack:///./src/views/behavior/ForwardTanker.vue","webpack:///./src/views/behavior/Vessel.vue?6970","webpack:///src/views/behavior/Vessel.vue","webpack:///./src/views/behavior/Vessel.vue?75a4","webpack:///./src/views/behavior/Vessel.vue","webpack:///src/views/behavior/MonthlyOccurrence.vue","webpack:///./src/views/behavior/MonthlyOccurrence.vue?13ae","webpack:///./src/views/behavior/MonthlyOccurrence.vue","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Image.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyarc.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Morpher.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polygon.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Preloader.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/CloseButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/SwitchButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Slider.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/PlayButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradientModifier.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinePattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/CirclePattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RectPattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/ColorizeFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/BlurFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/FocusFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/PatternSet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Plugin.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/AmChartsLogo.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Instance.js","webpack:///./src/components/charts/Behavior/Tanker/DirectedTreeMonthlyOccurrence.vue?2d23","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Draw.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Line.js","webpack:///./src/components/charts/Behavior/Vessel/DirectedTreeMonthlyOccurrence.vue?9587","webpack:///src/components/charts/Behavior/Vessel/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Vessel/DirectedTreeMonthlyOccurrence.vue?b488","webpack:///./src/components/charts/Behavior/Vessel/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Refinery/HighlightingChart.vue?0742","webpack:///src/components/charts/Behavior/Refinery/HighlightingChart.vue","webpack:///./src/components/charts/Behavior/Refinery/HighlightingChart.vue?3542","webpack:///./src/components/charts/Behavior/Refinery/HighlightingChart.vue","webpack:///./src/components/charts/Behavior/Tanker/DirectedTreeMonthlyOccurrence.vue?390b","webpack:///src/components/charts/Behavior/Tanker/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Tanker/DirectedTreeMonthlyOccurrence.vue?7b6f","webpack:///./src/components/charts/Behavior/Tanker/DirectedTreeMonthlyOccurrence.vue","webpack:///./src/components/charts/Behavior/Refinery/HighlightingChart.vue?bcff","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Legend.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Chart.js","webpack:///./src/components/charts/Behavior/Refinery/DirectedTreeMonthlyOccurrence.vue?4581","webpack:///./node_modules/@amcharts/amcharts4/lang/th_TH.js"],"names":["SerialChart","super","arguments","Object","defineProperty","this","enumerable","configurable","writable","value","new","_root","width","height","isMeasured","_afterNew","_disposers","push","series","children","seriesContainer","events","onAll","change","type","oldValues","_removeSeries","colors","get","reset","patterns","moveValue","newValue","_processSeries","setIndex","index","insertIndex","oldValue","Error","newIndex","chart","_placeBulletsContainer","isDisposed","removeValue","_removeBulletsContainer","classNames","concat","className","render","_vm","_h","$createElement","_c","_self","style","attrs","staticRenderFns","name","props","config","forwardTanker","transferDataForDirectTree","Array","isActive","Boolean","Number","data","dataForDirecTree","isActiveChart","transferData","root","selectedNode","mounted","_mounted","_asyncToGenerator","regeneratorRuntime","mark","_callee","wrap","_context","prev","next","console","log","setDataForRender","stop","apply","computed","_objectSpread","mapState","watch","_transferDataForDirectTree","_callee2","newVal","oldVal","_context2","_","isEqual","_x","_x2","station","_station","_callee3","_context3","_x3","_x4","methods","disposeRoot","divId","am5","each","rootElements","dom","id","dispose","init","_init","_callee4","_this","_context4","setThemes","am5themes_Animated","container","layout","verticalLayout","am5hierarchy","singleBranchOnly","downDepth","initialDepth","valueField","categoryField","childDataField","centerStrength","minRadius","maxRadius","nodes","template","set","setup","target","on","ev","dataItem","dataContext","setAll","dataItems","appear","_x5","_setDataForRender","_callee5","receive","countReceives","filterReceives","prorate","countProrate","filterProrate","_context5","length","filter","o","countBy","uniqBy","station_id","tanker","tanker_id","component","RoundedRectangle","_beforeChanged","isDirty","_clear","w","h","wSign","Math","abs","hSign","minSide","min","crtl","crtr","crbr","crbl","maxcr","display","_display","moveTo","lineTo","arcTo","closePath","count","filterData","vessel","vessel_id","theme","object","transitionDuration","rangeChangeDuration","interpolationDuration","sequencedInterpolation","defaultState","hiddenState","animationDuration","properties","opacity","showOnInit","Button","_settings","themeTags","background","setPrivate","_prepareChildren","previous","_prevSettings","icon","_disposeProperty","label","_m","staticStyle","staticClass","$event","filterType","_v","model","callback","$$v","selectedRefinery","expression","_l","item","key","$i18n","locale","Date","scopedSlots","_u","fn","ref","inputEvents","_g","selectedDate","start","setDateFormatTh","end","getOilTransfers","oilDistributions","_e","print","descriptionItems","tr","indextr","_s","departed_at_formatted_be","tankerInfo","trip_number","volume","slot","isActiveTankerInfo","name_th","mmsi","imo_number","Theme","setupDefaultRules","ic","interfaceColors","language","r","rule","bind","ColorSet","paddingLeft","paddingRight","paddingTop","paddingBottom","panX","panY","wheelStep","arrangeTooltips","pinchZoomX","pinchZoomY","legendLabelText","fill","Color","fromHex","fillOpacity","saturation","cornerRadiusTR","cornerRadiusTL","cornerRadiusBR","cornerRadiusBL","focusable","states","create","strokeOpacity","inside","minGridDistance","centerY","minPosition","maxPosition","fontSize","text","populateText","centerX","visible","behavior","layer","exportable","snapToSeriesBy","moveThreshold","forceInactive","strokeDasharray","role","ariaLabel","translate","minZoomCount","maxZoomCount","Infinity","maxZoomFactor","maxDeviation","snapTooltip","tooltipLocation","zoomX","zoomY","fixAxisSize","location","multiLocation","crisp","opposite","inversed","cellStartLocation","cellEndLocation","cursorOverStyle","position","startLocation","endLocation","fillRule","axisFill","gridIntervals","timeUnit","dateFormats","periodChangeDateFormats","tooltipDateFormats","markUnitChange","strictMinMax","groupData","groupCount","groupIntervals","axis","endValue","intervalDuration","baseInterval","getPrivate","gridInterval","firstDayOfWeek","utc","undefined","timezone","getTime","val","round","baseValue","logarithmic","autoZoom","step","baseUnit","maskBullets","stackToNegative","locationX","locationY","openValueXGrouped","openValueYGrouped","valueXGrouped","valueYGrouped","seriesTooltipTarget","adjustBulletPosition","clustered","strokeWidth","connect","autoGapCount","draw","sprite","parent","tension","lowValueXGrouped","lowValueYGrouped","highValueXGrouped","highValueYGrouped","interactive","draggable","rotation","List","chartContainer","Container","horizontalLayout","yAxesAndPlotContainer","maskContent","plotsContainer","plotContainer","topPlotContainer","Graphics","x","y","_defaultThemes","xAxes","yAxes","zoomOutButton","zoomOut","hide","lookup","_processAxis","bottomAxesContainer","leftAxesContainer","topGridContainer","bulletsContainer","Rectangle","event","_handlePlotDown","_handlePlotUp","_handlePlotMove","_maskGrid","_setUpTouch","cancelTouch","gridContainer","_unstack","_posXDp","_posYDp","xAxis","markDirtyExtremes","yAxis","cursor","snapToSeries","wheelX","wheelY","wheelEvent","originalEvent","preventDefault","plotPoint","toLocal","point","shiftY","deltaY","shiftX","deltaX","wheelZoomPositionX","wheelZoomPositionY","fixPosition","newStart","max","newEnd","_handleWheelAnimation","zoom","delta","_getWheelSign","se","_fixWheel","_wheelDp","handleWheel","sign","diff","button","local","pointerId","_downPoints","getIndex","_downStartX","_downEndX","_downStartY","_downEndY","_downPoint","clientX","clientY","_panStart","_panEnd","eventType","isEnabled","dispatch","animation","_dispatchWheelAnimation","downPoint","_isPanning","touchEvent","_movePoints","_handlePinch","documentPointToRoot","scrollbarX","disableType","panStart","panEnd","difference","enableType","scrollbarY","i","downPoints","movePoints","k","movePoint","downPoint0","downPoint1","movePoint0","movePoint1","downStartX","downEndX","downPos0","downPos1","movePos0","movePos1","initialDistance","currentDistance","d","s","e","sa","ea","downStartY","downEndY","cursorPoint","isHidden","isHiding","startIndex","endIndex","tooltipDataItem","closestItem","minDistance","distance","hypot","tooltip","_setDataItem","showDataItemTooltip","setRaw","handleMove","toGlobal","updateCursor","_colorize","_handleSetWheel","_setChart","_addCursor","_pushPropertyDisposer","_handleCursorSelectEnd","topAxesContainer","_handleScrollbar","grip","_handleAxisSelection","getTooltipText","rightAxesContainer","_handleZoomOut","addDisposer","_fixPosition","isType","_markDirtyKey","_markDirtyAxes","_seriesAdded","colorSet","color","_setSoft","patternSet","pattern","downPositionX","downPositionY","positionX","positionY","position0","toAxisPosition","position1","axes","priority","axisStart","axisEnd","zoomAnimation","updateScrollbar","setPrivateRaw","_removeAxis","processChart","axisParent","gridParent","topGridParent","left","right","_updateCursor","force","indexOf","updateGrips","show","otherCharts","_otherCharts","global","chartPlotContainer","documentPoint","rootPointToDocument","chartRoot","hh","plotT","plotB","tooltips","closest","closestPoint","sum","_movePoint","maxTooltipDistance","maxTooltipDistanceBy","tooltipSeries","hidden","inPlot","_tooltipToLocal","tooltipContainer","average","sort","a","b","prevY","Percent","top","bottom","_fy","reverse","prevBottom","bounds","_dispose","isPrivateDirty","_drawLines","setTimeout","lineX","_handleXLine","lineY","_handleYLine","_handleLineFocus","_handleLineBlur","document","_handleLineMove","ctrlKey","dir","focused","m","nextPosition","_alwaysShow","alwaysShow","isFocus","_tooltipX","_updateXLine","_tooltipY","_updateYLine","syncWith","_updateChildren","_handleSyncWith","_getPoint","_toX","animate","to","duration","easing","_toY","_handleMove","_handleCursorDown","_handleCursorUp","native","_lastPoint2","selection","rootPoint","_inPlot","_getPosition","charAt","lastPoint","_lastPoint","skipEvent","xyPos","userPositionX","userPositionY","xy","_handleCursorPosition","handleCursorShow","_updateLines","_updateSelection","handleCursorHide","_onHide","_onShow","Tick","Label","Template","_new","ticks","grid","axisFills","labels","tick","make","labelsContainer","axisLength","thumb","_handleThumbDown","_handleThumbUp","_handleThumbMove","once","markDirtySize","_changed","pan","_thumbDownPoint","_downStart","_downEnd","_event","downStart","downEnd","extra","_getPan","_point1","_point2","_inversed","_end","_axisLength","_start","_tooltip","markDirty","updatedStart","updatedEnd","gridTemplate","graphics","ghostLabel","axisChildren","addTag","removeTag","_applyThemes","_markDirtyRedraw","point1","point2","_ls","_lc","innerWidth","axisHeader","processAxis","positionToCoordinate","endPosition","toggleVisibility","bullet","bulletPosition","roundAxisPosition","previousBullet","_bullets","previousSprite","x0","x1","fillDrawMethod","_positionTooltip","num","pointerOrientation","oldBounds","Component","axisRanges","disposeDataItem","_processAxisRange","renderer","makeLabel","adapters","disable","tooltipText","tooltipHTML","_updateFinals","sAnimation","_sAnimation","eAnimation","_eAnimation","maxZoomFactorReal","minZoomFactor","playing","_series","_createAssets","_rangesDirty","_prepareDataItem","above","_dataItem","_index","axisRange","_seriesAxisRanges","_updateLC","rendererTags","toLowerCase","updateTooltipBounds","_updateBounds","_updateTooltipBounds","axisHeadersContainer","onPrivate","_toggleFHDataItem","hideDataItem","showDataItem","forceHidden","fh","v","tags","minor","_a","_b","remove","makeGrid","makeTick","makeAxisFill","_processBullet","axisBullet","_afterChanged","_updateChartLayout","_updatePositions","getCellWidthPosition","localBounds","gWidth","ceil","_getText","updateLabel","_cursorPosition","_snapToSeries","updateTooltip","getSeriesItem","updateLegendMarker","updateLegendValue","_updateTooltipText","positionTooltip","_location","_fields","_clearDirty","_sizeDirty","coordinate","toGlobalPosition","_nextItem","_autoGapCount","_fieldName","axisDataItem","_dirtyExtremes","_dirtySelectionExtremes","previousValue","syncWithAxis","_syncDp","someDirty","_valuesDirty","_getMinMax","_handleSizeDirty","getMM","letter","_getSelectionMinMax","_groupData","_handleRangeChange","_prepareAxisItems","_updateAxisRanges","_baseValue","_dseHandled","numberFormat","formatter","getNumberFormatter","format","selectionMin","selectionMax","differencePower","minLog","_minLogAdjusted","_minRealLog","pow","LOG10E","minorLabelsEnabled","minorGridEnabled","stepPower","floor","stepAdjusted","minorGridCount","minorStep","_dataItems","processDataItem","_toggleDataItem","_formatText","nextValue","minorValue","minorMinMaxStep","_adjustMinMax","minorDataItem","minorDataItems","minorLabel","decCount","j","inited","_updateGhost","valueToPosition","fillEndPosition","labelEndPosition","labelEndValue","updateGrid","hasTag","updateTick","updateFill","updateBullet","positionToValue","gridCount","minMaxStep","stepDecimalPlaces","E","treatZeroAs","field","_cellLocation","axisLocation","getDataItemPositionX","stackToItem","getStackedXValueWorking","getDataItemPositionY","getStackedYValueWorking","fixSmallStep","vc","fieldWorking","total","minDefined","maxDefined","extraMin","extraMax","selectionStrictMinMax","seriesMin","seriesMax","outOfSelection","minX","maxX","minY","maxY","isShowing","range","_minReal","_maxReal","smin","_deltaMinMax","minMaxStep2","selectionMinReal","selectionMaxReal","_syncAxes","len","LN10","valueToFinalPosition","minDiff","initialMin","initialMax","minAdapted","fold","maxAdapted","_fixMin","_fixMax","_getDelta","strictMinMaxSelection","strict","_fixZoomFactor","_saveMinMax","animatePrivate","exponent","power","_min","_max","strictMode","stepDivisor","maxPrecision","ceiledStep","MAX_VALUE","maxCount","minCount","_adjustPosition","extraDecimals","decimals","oldDiff","fieldName","syncMin","syncMax","syncStep","currentCount","synced","c","omin","omax","ostep","_checkSync","fields","_itemMap","startCategory","endCategory","baseAxis","openKey","otherAxis","startDataItem","endDataItem","hasValue","__valueXShowFields","__valueYShowFields","frequency","_frequency","f","fillIndex","categoryLocation","endCategoryLocation","categoryToIndex","indexToPosition","fillEndIndex","NaN","cellLocation","_axisLocation","category","axisPositionToIndex","markDirtyText","seriesDataItem","zoomToIndexes","innerHeight","y0","y1","Series","valueFields","_setRawDefault","_removeAxisRange","_makeFieldNames","_updateFields","_valueXFields","_valueYFields","_valueXShowFields","_valueYShowFields","valueXFields","split","valueYFields","minBulletDistance","_xField","_yField","xName","xCapName","yName","yCapName","xLetter","yLetter","open","low","high","_xOpenField","_xLowField","_xHighField","_yOpenField","_yLowField","_yHighField","_handleMaskBullets","tooltipPositionX","tooltipFieldX","_tooltipFieldX","tooltipPositionY","tooltipFieldY","_tooltipFieldY","_fixVC","stacked","_dataProcessed","_stack","getStackedXValue","getStackedYValue","processSeriesDataItem","_seriesValuesDirty","_markStakedDirtyStack","_dataGrouped","_groupSeriesData","_stackDirty","_showBullets","_psi","_pei","_selectionProcessed","vcx","vcy","_calculateTotals","markDirtySelectionExtremes","processYSelectionDataItem","processXSelectionDataItem","selectionMinY","selectionMaxY","selectionMinX","selectionMaxX","mainContainerMask","_mainContainerMask","mainContainer","mask","_y","_makeRangeMask","seriesIndex","_couldStackTo","_stackDataItems","_reallyStackedTo","_key","_stackedSeries","uid","stackToItemKey","stackToSeries","stackValue","stackedToSeries","_axesDirty","_afterDataChange","_aggregatesCalculated","getPoint","_shouldShowBullet","realField","positionToPoint","previousBounds","yo","xo","_positionX","_positionY","_dataSets","_handleDataSetChange","_markDataSetDirty","_dataSetId","dataSet","_mainDataItems","mainDataItems","bullets","_super","promises","call","then","_isShowing","_sequencedShowHide","Promise","all","_isHiding","_valueFields","waitForStop","stackedSeries","_markDirtyStack","_skipped","itemLocationX","itemLocationY","xPos","_aLocationX0","_aLocationX1","yPos","_aLocationY0","_aLocationY1","_getTooltipTarget","hideTooltip","legendDataItem","txt","_emptyDataItem","valueLabel","_position","resetExtremes","baseDuration","minSelection","dl","listTemplate","makeColumn","categoryAxis","valueAxis","_createGraphics","_ph","_pw","columnsTemplate","columns","clusterCount","xRenderer","yRenderer","cellLocationX0","cellLocationX1","cellLocationY0","cellLocationY1","_toggleColumn","_updateGraphics","_makeGraphics","markerRectangle","ds","setting","graphicsArray","rangeGraphics","createAxisRange","previousDataItem","xField","yField","valueX","valueY","xOpenField","yOpenField","openLocationX","openLocationY","xStart","xEnd","yStart","yEnd","l","t","fitW","fitH","offset","stackToItemY","basePosition","stackToItemX","_updateSeriesGraphics","_applyGraphicsStates","maxWidth","maxHeight","ptl","pbr","tooltipPoint","dropFromOpen","riseFromOpen","dropFromPrevious","riseFromPrevious","close","previousClose","list","lastDataItem","column","dataColumn","default","ColumnChart","mapGetters","getStationData","_ColumnChart","am5xy","unshift","valueYField","categoryXField","labelText","add","stroke","components","DirectTree","HighlightingChart","formatNumber","optionsRefinery","REFINERY_ID","IRPC","REFINERY_NAME","SPRC","TOP","PTTGC","ESSO","BCP","dataTable","vesselsUniqByMMSI","state","petrol","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","entries","Symbol","iterator","done","_step$value","_slicedToArray","oilDistribution","err","return","_getOilTransfers","startDate","setDateFormat","endDate","stationId","domestic","destinationType","$store","Swal","fire","title","showConfirmButton","timer","date","moment","newDate","setDateFormatRecordTime","newTime","vesselId","localStorage","setItem","JSON","stringify","window","beforeDestroy","_beforeDestroy","selectedTanker","selectedForwardTanker","transfers","start_at","capacity","getVolume","vesselInfo","isActiveNotification","latitude","longitude","checkCapacityAndVolume","name_en","imo","member_code","owner","personType","certificateOperateName","certificatePhoneNumber","phoneNumber","isActiveVesselInfo","register_number","portName","optionsTanker","oilTransfer","oilTransfers","vesselByRegisterNumber","vessels","vesselInPetrol","mpVesselOption","mpTankerData","_transfers","transfer","formatVolume","t0","finish","getTankers","getRefinaries","_getRefinaries","stations","mpStations","map","_getTankers","tankers","mpTankerAll","$vs","loading","selectedVessel","_isActiveNotification","_callee6","_context6","to_s","_tankerInfo","_callee7","_context7","registerNumber","registration","createdBy","_vesselInfo","_callee8","_context8","_callee9","_context9","optionsVessel","$","keydown","_ref","_this2","getVessels","_getVessels","getVessel","_getVessel","_callee10","_context10","_x6","_callee11","_context11","_x7","_callee12","_context12","Refinery","Tanker","ForwardTanker","Vessel","notifications","rts","guardZoneNotifications","vesselById","getVesselByMMSI","_getVesselByMMSI","abrupt","$export","P","Image","element","paper","applyTheme","prototype","href","widthRatio","heightRatio","attr","attrNS","getPropertyValue","setPropertyValue","pixelWidth","pixelHeight","Sprite","registeredClasses","Polyarc","controlPointDistance","controlPointPosition","makePath","_distance","segments","path","_realSegments","points","realPoints","p","pointA","pointB","distanceAB","cpDistance","angle","cpx","cpy","controlPoint1","cpx2","cpy2","controlPoint2","stepCount","prevPoint","i_1","Polyline","Morpher","morphable","_bboxes","morphDuration","morphEasing","morphToSingle","scaleRatio","morphToPolygon","toPoints","currentPoints","sortPoints","_morphFromPointsReal","_morphToPointsReal","normalizePoints","Animation","property","from","pointsA","pointsB","surfaceA","holeA","bboxA","middleX","middleY","addPoints","splitAt","newDistance","partA","slice","partB","bbox1","bbox2","bboxes","surface","morphToCircle","radius","commonBBox","hole","fromPoints","bbox","realRadius","startAngle","realAngle","pointOnCircle","hlen","mustHaveCount","addToSegmentCount","newPoints","point0","percent","extraPoint","morphToRectangle","realWidth","realHeight","i_2","i_3","_morphProgress","currentArea","surfaceFrom","holeFrom","surfaceTo","holeTo","currentSurface","i_4","slen","currentPoint","currentHole","i_5","morphBack","_animations","Base","Polygon","shapeRendering","_currentPoints","valueStr","segment","areaHole","areaArr","holeArr","pointsArr","area","areaAndHole","coords","pointsArr_1","setPath","_bbox","group","getBBox","measureElement","_morpher","Preloader","InterfaceColorSet","sliceContainer","createChild","shouldClone","backgroundSlice","Slice","arc","getFor","innerRadius","progressSlice","horizontalCenter","verticalCenter","align","valign","textAlign","contentAlign","contentValign","delay","__disabled","validateLayout","_started","isFinished","interactionsEnabled","CloseButton","padding","showSystemTooltip","Mouse","pointer","cornerRadius","bgc","downColor","bhs","getKey","bds","validate","invalidateLayout","applyInternalDefaults","readerTitle","SwitchButton","tooltipY","setStateOnChildren","leftLabel","llas","circle","Circle","p100","marginLeft","marginRight","togglable","dx","hs","as","switchButton","rightLabel","rlas","_leftLabel","removeDispose","_rightLabel","_switchButton","copyFrom","source","Slider","endGrip","startGrip","_isBusy","__start","Scrollbar","PlayButton","playIcon","Triangle","direction","stopIcon","activeState","RadialGradientModifier","gradient","RadialGradient","clone","GradientModifier","LinePattern","_line","addElement","gap","Pattern","CirclePattern","_circle","RectPattern","rectHeight","rectWidth","_rect","ColorizeFilter","feColorMatrix","filterPrimitives","intensity","applyFilter","g","ii","rgb","Filter","BlurFilter","feGaussianBlur","blur","scale","FocusFilter","feFlood","feMorphology","feComposite","feBlend","setSprite","_sprite","removeStyle","addStyle","PatternSet","_list","_currentStep","_startIndex","_currentPass","baseColor","getLinePattern","getRectPattern","getCirclePattern","sqrt","size","thickness","strokeDashArray","outline","currentStep","generatePatterns","processConfig","Plugin","_disposed","disposer","shift","AmChartsLogo","url","urlTarget","aColor","alternative","hex","aGradient","LinearGradient","addColor","aStroke","Polyspline","tensionX","tensionY","desaturateFilter","DesaturateFilter","filters","desaturateFilterHover","hoverState","htmlElement","classType","htmlContainer","tmpContainer","createElement","visibility","body","appendChild","innerHTML","svgDiv_1","SVGContainer","Paper","container_1","svgContainer","append","moveHtmlContainer","relativeWidth","relativeHeight","sprite_1","topParent","invalidSprites","invalidDatas","invalidPositions","invalidLayouts","baseId","isBaseSprite","focusFilter","baseSprites","baseSpritesByUid","maskRectangle","previousWidth","previousHeight","deepInvalidate","loopTimer_1","loop_1","autoDispose","Disposer","clearTimeout","tooltipContainer_1","Tooltip","setBounds","preloader_1","preloader","hasLicense","logo_1","logo","numberFormatter","isStandaloneInstance","onlyShowOnViewport","viewportTarget","queue","addToQueue","disposers","viewPortHandler","targets","vpDisposer","queueHandler","requestFrame","removeFromQueue","splice","nextSprite","invalidateLabels","invalidateData","reinit","classError","raiseCriticalError","useTheme","themes","segmentedLine","groups","firstGroup","firstPoint","line","dataLine","highlightingChart","_highlightingChart","dateAxis","createSeries","am4core","am4themes_animated","$refs","chartdiv","am4charts","am4lang_th_TH","dateFormatter","disabled","dataFields","dateX","getFillFromObject","volumes","sumVolume","reduce","vol","newData","orderBy","chain","groupBy","departed_at","setData","legend","hoveredSeries","toFront","setState","forward_tanker_id","Legend","itemContainers","themeTagsSelf","markers","valueLabels","markerRectangles","itemContainer","marker","makeItemContainer","nameField","fillField","strokeField","clickTarget","makeMarker","useDefaultMarker","makeMarkerRectangle","createLegendMarker","_t","markDirtyAccessibility","makeValueLabel","clickContainer","_addClickEvents","values","targetA","targetB","indexA","indexB","hoverDataItem","unhoverDataItem","readerAlert","di","Chart","interactiveChildren","day","res"],"mappings":"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","file":"js/chunk-032e32c6.8334c74f.js","sourcesContent":["import { Chart } from \"./Chart\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { ListAutoDispose } from \"../../core/util/List\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport * as $array from \"../../core/util/Array\";\r\n/**\r\n * A base class for all series-based charts.\r\n */\r\nexport class SerialChart extends Chart {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[Container]] where chart will store all series.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"seriesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, isMeasured: false })\r\n });\r\n /**\r\n * A list of chart's series.\r\n */\r\n Object.defineProperty(this, \"series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._disposers.push(this.series);\r\n const children = this.seriesContainer.children;\r\n this._disposers.push(this.series.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (series) => {\r\n this._removeSeries(series);\r\n });\r\n const colors = this.get(\"colors\");\r\n if (colors) {\r\n colors.reset();\r\n }\r\n const patterns = this.get(\"patterns\");\r\n if (patterns) {\r\n patterns.reset();\r\n }\r\n }\r\n else if (change.type === \"push\") {\r\n children.moveValue(change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n children.setIndex(change.index, change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n children.insertIndex(change.index, change.newValue);\r\n this._processSeries(change.newValue);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeSeries(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n children.moveValue(change.value, change.newIndex);\r\n this._processSeries(change.value);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n }));\r\n }\r\n _processSeries(series) {\r\n series.chart = this;\r\n series._placeBulletsContainer(this);\r\n }\r\n _removeSeries(series) {\r\n if (!series.isDisposed()) {\r\n this.seriesContainer.children.removeValue(series);\r\n series._removeBulletsContainer();\r\n }\r\n }\r\n}\r\nObject.defineProperty(SerialChart, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"SerialChart\"\r\n});\r\nObject.defineProperty(SerialChart, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Chart.classNames.concat([SerialChart.className])\r\n});\r\n//# sourceMappingURL=SerialChart.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:((\"height: \" + _vm.height + \"px\")),attrs:{\"id\":\"chartdiv\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.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/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=template&id=02573361\"\nimport script from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nexport * from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nimport style0 from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=02573361&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=da4b5562&prod&lang=css\"","export * from \"-!../../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=02573361&prod&lang=css\"","import * as $type from \"../util/Type\";\r\nimport * as $math from \"../util/Math\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport { Rectangle } from \"./Rectangle\";\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class RoundedRectangle extends Rectangle {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"cornerRadiusTL\") || this.isDirty(\"cornerRadiusTR\") || this.isDirty(\"cornerRadiusBR\") || this.isDirty(\"cornerRadiusBL\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _draw() {\r\n let width = this.width();\r\n let height = this.height();\r\n let w = width;\r\n let h = height;\r\n let wSign = w / Math.abs(width);\r\n let hSign = h / Math.abs(height);\r\n if ($type.isNumber(w) && $type.isNumber(h)) {\r\n let minSide = Math.min(w, h) / 2;\r\n let crtl = $utils.relativeToValue(this.get(\"cornerRadiusTL\", 8), minSide);\r\n let crtr = $utils.relativeToValue(this.get(\"cornerRadiusTR\", 8), minSide);\r\n let crbr = $utils.relativeToValue(this.get(\"cornerRadiusBR\", 8), minSide);\r\n let crbl = $utils.relativeToValue(this.get(\"cornerRadiusBL\", 8), minSide);\r\n let maxcr = Math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n crtl = $math.fitToRange(crtl, 0, maxcr);\r\n crtr = $math.fitToRange(crtr, 0, maxcr);\r\n crbr = $math.fitToRange(crbr, 0, maxcr);\r\n crbl = $math.fitToRange(crbl, 0, maxcr);\r\n const display = this._display;\r\n display.moveTo(crtl * wSign, 0);\r\n display.lineTo(w - crtr * wSign, 0);\r\n if (crtr > 0) {\r\n display.arcTo(w, 0, w, crtr * hSign, crtr);\r\n }\r\n display.lineTo(w, h - crbr * hSign);\r\n if (crbr > 0) {\r\n display.arcTo(w, h, w - crbr * wSign, h, crbr);\r\n }\r\n display.lineTo(crbl * wSign, h);\r\n if (crbl > 0) {\r\n display.arcTo(0, h, 0, h - crbl * hSign, crbl);\r\n }\r\n display.lineTo(0, crtl * hSign);\r\n if (crtl > 0) {\r\n display.arcTo(0, 0, crtl * wSign, 0, crtl);\r\n }\r\n display.closePath();\r\n }\r\n }\r\n}\r\nObject.defineProperty(RoundedRectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"RoundedRectangle\"\r\n});\r\nObject.defineProperty(RoundedRectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.classNames.concat([RoundedRectangle.className])\r\n});\r\n//# sourceMappingURL=RoundedRectangle.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:((\"height: \" + _vm.height + \"px\")),attrs:{\"id\":\"chartdiv\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.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/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=template&id=0e750bdf\"\nimport script from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nexport * from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nimport style0 from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=0e750bdf&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","import { is } from \"../core/Registry\";\r\nvar theme = function (object) {\r\n if (is(object, \"SpriteState\")) {\r\n object.transitionDuration = 400;\r\n }\r\n if (is(object, \"Component\")) {\r\n object.rangeChangeDuration = 500;\r\n object.interpolationDuration = 500;\r\n object.sequencedInterpolation = false;\r\n if (is(object, \"SankeyDiagram\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n if (is(object, \"FunnelSeries\")) {\r\n object.sequencedInterpolation = true;\r\n }\r\n }\r\n if (is(object, \"Chart\")) {\r\n object.defaultState.transitionDuration = 2000;\r\n object.hiddenState.transitionDuration = 1000;\r\n }\r\n if (is(object, \"Tooltip\")) {\r\n object.animationDuration = 400;\r\n object.defaultState.transitionDuration = 400;\r\n object.hiddenState.transitionDuration = 400;\r\n }\r\n if (is(object, \"Scrollbar\")) {\r\n object.animationDuration = 500;\r\n }\r\n if (is(object, \"Series\")) {\r\n object.defaultState.transitionDuration = 1000;\r\n object.hiddenState.transitionDuration = 700;\r\n object.hiddenState.properties.opacity = 1;\r\n object.showOnInit = true;\r\n }\r\n if (is(object, \"MapSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"PercentSeries\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n if (is(object, \"FunnelSlice\")) {\r\n object.defaultState.transitionDuration = 800;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Slice\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Preloader\")) {\r\n object.hiddenState.transitionDuration = 2000;\r\n }\r\n if (is(object, \"Column\")) {\r\n object.defaultState.transitionDuration = 700;\r\n object.hiddenState.transitionDuration = 1000;\r\n object.hiddenState.properties.opacity = 1;\r\n }\r\n if (is(object, \"Column3D\")) {\r\n object.hiddenState.properties.opacity = 0;\r\n }\r\n};\r\nexport default theme;\r\n//# sourceMappingURL=animated.js.map","import { RoundedRectangle } from \"../render/RoundedRectangle\";\r\nimport { Container } from \"./Container\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * Draws an interactive button.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/} for more info\r\n * @important\r\n */\r\nexport class Button extends Container {\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"button\"]);\r\n super._afterNew();\r\n if (!this._settings.background) {\r\n this.set(\"background\", RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this._settings.themeTags, [\"background\"])\r\n }));\r\n }\r\n this.setPrivate(\"trustBounds\", true);\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"icon\")) {\r\n const previous = this._prevSettings.icon;\r\n const icon = this.get(\"icon\");\r\n if (icon !== previous) {\r\n this._disposeProperty(\"icon\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (icon) {\r\n this.children.push(icon);\r\n }\r\n this._prevSettings.icon = icon;\r\n }\r\n }\r\n if (this.isDirty(\"label\")) {\r\n const previous = this._prevSettings.label;\r\n const label = this.get(\"label\");\r\n if (label !== previous) {\r\n this._disposeProperty(\"label\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (label) {\r\n this.children.push(label);\r\n }\r\n this._prevSettings.label = label;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Button, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Button\"\r\n});\r\nObject.defineProperty(Button, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Button.className])\r\n});\r\n//# sourceMappingURL=Button.js.map","export * from \"-!../../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColumnChart.vue?vue&type=style&index=0&id=fc8a287a&prod&scoped=true&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('vs-row',[_c('vs-col',{attrs:{\"vs-lg\":\"12\",\"vs-sm\":\"12\",\"vs-xs\":\"12\"}},[_c('vx-card',{staticStyle:{\"min-height\":\"500px\"}},[_c('vs-tabs',{staticClass:\"z-0\"},[_c('vs-tab',{attrs:{\"label\":\"โรงกลั่น\"},on:{\"click\":function($event){_vm.filterType = 'refinery'}}},[_c('Refinery')],1),_c('vs-tab',{attrs:{\"label\":\"เรือขนย้ายน้ำมัน\"},on:{\"click\":function($event){_vm.filterType = 'forwardFanker'}}},[_c('ForwardTanker')],1),_c('vs-tab',{attrs:{\"label\":\"เรือสถานีบริการน้ำมัน\"},on:{\"click\":function($event){_vm.filterType = 'tanker'}}},[_c('Tanker')],1),_c('vs-tab',{attrs:{\"label\":\"เรือประมง\"},on:{\"click\":function($event){_vm.filterType = 'fishing'}}},[_c('Vessel')],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vx-row mx-2\"},[_c('div',{staticClass:\"router-header flex flex-wrap items-center mb-6\"},[_c('div',{staticClass:\"content-area__heading pr-4 border-0 md:border-r border-solid border-grey-light\"},[_c('h2',{staticClass:\"mb-1\"},[_vm._v(\"ความถี่ของการเข้ารับน้ำมัน\")])])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"vx-row my-5 z-50\"},[_c('div',{staticClass:\"vx-col md:w-1/4 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"label\":\"โรงกลั่น\",\"autocomplete\":\"\",\"placeholder\":\"กรุณาเลือกโรงกลั่น\"},model:{value:(_vm.selectedRefinery),callback:function ($$v) {_vm.selectedRefinery=$$v},expression:\"selectedRefinery\"}},_vm._l((_vm.optionsRefinery),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})}),1)],1)]),_c('div',{staticClass:\"vx-col md:w-1/4 w-full\",staticStyle:{\"z-index\":\"50000\"}},[_c('v-date-picker',{attrs:{\"mode\":\"date\",\"is-range\":\"\",\"is24hr\":\"\",\"locale\":_vm.$i18n.locale,\"buddhist\":true,\"max-date\":new Date()},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar inputEvents = ref.inputEvents;\nreturn [_c('vs-input',_vm._g({staticClass:\"w-full\",attrs:{\"label\":\"วันที่ออกเดินทาง\",\"value\":_vm.selectedDate.start &&\n ((_vm.selectedDate.start ? _vm.setDateFormatTh(_vm.selectedDate.start) : '') + \" - \" + (_vm.selectedDate.end ? _vm.setDateFormatTh(_vm.selectedDate.end) : '')),\"placeholder\":\"วัน/เดือน/ปี - วัน/เดือน/ปี\"}},inputEvents.start))]}}]),model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})],1),_c('div',{staticClass:\"vx-col md:w-1/4 w-full mt-6 text-center flex\"},[_c('div',[_c('vs-button',{attrs:{\"color\":\"primary\",\"type\":\"filled\",\"icon-pack\":\"feather\",\"icon\":\"icon-search\"},on:{\"click\":function($event){return _vm.getOilTransfers()}}},[_vm._v(\"ค้นหา\")])],1)])]),_c('vs-divider',{staticClass:\"mt-12\"}),(_vm.selectedRefinery && _vm.oilDistributions.length != 0)?_c('div',{staticClass:\"vx-row mt-10 z-50\"},[_c('div',{staticClass:\"vx-col w-full\"},[_c('vx-card',{staticStyle:{\"height\":\"320px\"}},[_c('DirectTree',{attrs:{\"station\":_vm.selectedRefinery,\"transferDataForDirectTree\":_vm.oilDistributions,\"config\":_vm.config,\"height\":300}})],1)],1)]):_vm._e(),_c('div',{staticClass:\"mt-12 z-0\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('h5',{staticClass:\"my-3\"},[_vm._v(\"ผลการค้นหา\")]),(_vm.oilDistributions.length != 0)?_c('vs-button',{attrs:{\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print()}}},[_vm._v(\"\\n พิมพ์\\n \")]):_vm._e()],1),_c('vs-table',{staticClass:\"static text-center mt-3\",attrs:{\"maxHeight\":\"700px\",\"minHeight\":\"500px\",\"max-items\":_vm.descriptionItems[0],\"description\":\"\",\"description-items\":_vm.descriptionItems,\"description-title\":\"ลำดับ\",\"description-connector\":\"จาก\",\"description-body\":\"จำนวนต่อหน้า\",\"pagination\":\"\",\"data\":_vm.oilDistributions},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var data = ref.data;\nreturn [_c('tbody',_vm._l((data),function(tr,indextr){return _c('vs-tr',{key:indextr,attrs:{\"data\":tr}},[_c('vs-td',[_vm._v(\"\\n \"+_vm._s(tr.index + 1)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].departed_at_formatted_be}},[_vm._v(\"\\n \"+_vm._s(data[indextr].departed_at_formatted_be)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].station.name}},[_vm._v(\"\\n \"+_vm._s(data[indextr].station && data[indextr].station.name)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].vessel.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].vessel)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].vessel && data[indextr].vessel.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].trip_number}},[_vm._v(\"\\n \"+_vm._s(data[indextr].trip_number)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_vm._v(\"\\n \"+_vm._s(data[indextr].volume)+\"\\n \")]),_c('vs-td',[_c('div',{staticClass:\"align-middle flex justify-center\"},[_c('vs-button',{attrs:{\"radius\":\"\",\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print(data[indextr].vessel_id)}}})],1)])],1)}),1)]}}])},[_c('template',{slot:\"header\"}),_c('template',{slot:\"thead\"},[_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ลำดับ\")])]),_c('vs-th',{attrs:{\"sort-key\":\"departed_at_formatted_be\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"วันที่ออกเดินทาง\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"สถานีต้นทาง\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ชื่อเรือ\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เที่ยวที่\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"\\n ปริมาตรน้ำมัน (ตามใบกำกับสินค้า)\\n \")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"พิมพ์\")])])],1)],2),(_vm.tanker)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveTankerInfo,\"buttons-hidden\":true,\"title\":((_vm.tanker.name) + \" : \" + (_vm.tanker.mmsi) + \" \")},on:{\"update:active\":function($event){_vm.isActiveTankerInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.tanker.name_th))]),_c('p',[_vm._v(\"ชื่อภาษาอังกฤษ : \"+_vm._s(_vm.tanker.name))]),_c('p',[_vm._v(\"MMSI : \"+_vm._s(_vm.tanker.mmsi))]),_c('p',[_vm._v(\"IMO : \"+_vm._s(_vm.tanker.imo_number))]),_c('p',[_vm._v(\"ประเภทเรือ : \"+_vm._s(_vm.tanker.type == 'tanker' ? 'สถานีบริการน้ำมัน' : 'เรือบรรทุกน้ำมัน'))])])]):_vm._e()],1)],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',{attrs:{\"id\":\"ColumnChart\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Theme } from \"../../core/Theme\";\r\nimport { percent, p50, p100 } from \"../../core/util/Percent\";\r\nimport { Color } from \"../../core/util/Color\";\r\nimport { ColorSet } from \"../../core/util/ColorSet\";\r\nimport { setColor } from \"../../themes/DefaultTheme\";\r\nimport * as $time from \"../../core/util/Time\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $array from \"../../core/util/Array\";\r\n/**\r\n * @ignore\r\n */\r\nexport class XYChartDefaultTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n const ic = this._root.interfaceColors;\r\n const language = this._root.language;\r\n const r = this.rule.bind(this);\r\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n */\r\n r(\"XYChart\").setAll({\r\n colors: ColorSet.new(this._root, {}),\r\n paddingLeft: 20,\r\n paddingRight: 20,\r\n paddingTop: 16,\r\n paddingBottom: 16,\r\n panX: false,\r\n panY: false,\r\n wheelStep: 0.25,\r\n arrangeTooltips: true,\r\n pinchZoomX: false,\r\n pinchZoomY: false\r\n });\r\n r(\"XYSeries\").setAll({\r\n legendLabelText: \"{name}\"\r\n });\r\n r(\"Rectangle\", [\"plotbackground\", \"xy\", \"background\"]).setAll({\r\n fill: Color.fromHex(0x000000),\r\n fillOpacity: 0\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: XYChartScrollbar\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYChart\", [\"scrollbar\", \"chart\"]).setAll({\r\n paddingBottom: 0,\r\n paddingLeft: 0,\r\n paddingTop: 0,\r\n paddingRight: 0,\r\n colors: ColorSet.new(this._root, {\r\n saturation: 0\r\n })\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"scrollbar\", \"overlay\"]);\r\n rule.setAll({\r\n fillOpacity: 0.5\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n }\r\n // Class: RoundedRectangle\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).setAll({\r\n cornerRadiusTR: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusBL: 0,\r\n fillOpacity: 0,\r\n focusable: true\r\n });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).states.create(\"hover\", { fillOpacity: 0.4 });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\"]).setAll({\r\n cornerRadiusTL: 0,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTR: 0,\r\n cornerRadiusBR: 0\r\n });\r\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\", \"resize\", \"button\"]).setAll({\r\n cornerRadiusBL: 40,\r\n cornerRadiusBR: 40,\r\n cornerRadiusTL: 40,\r\n cornerRadiusTR: 40\r\n });\r\n r(\"AxisRendererX\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\r\n strokeOpacity: 0,\r\n inside: true\r\n });\r\n r(\"AxisRendererY\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\r\n strokeOpacity: 0,\r\n inside: true,\r\n minGridDistance: 5\r\n });\r\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\r\n opacity: 0.5,\r\n centerY: p100,\r\n minPosition: 0.01,\r\n maxPosition: 0.99,\r\n fontSize: \"0.8em\"\r\n });\r\n r(\"AxisLabel\", [\"category\"]).setAll({\r\n text: \"{category}\",\r\n populateText: true\r\n });\r\n r(\"AxisLabel\", [\"x\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"AxisLabel\", [\"x\", \"inside\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"AxisLabel\", [\"x\", \"inside\", \"opposite\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"AxisLabel\", [\"x\", \"opposite\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"AxisLabel\", [\"y\"]).setAll({\r\n centerX: p100\r\n });\r\n r(\"AxisLabel\", [\"y\", \"inside\"]).setAll({\r\n centerX: 0\r\n });\r\n r(\"AxisLabel\", [\"y\", \"inside\", \"opposite\"]).setAll({\r\n centerX: p100\r\n });\r\n r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\r\n centerX: 0\r\n });\r\n r(\"AxisLabel\", [\"minor\"]).setAll({\r\n fontSize: \"0.6em\"\r\n });\r\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\r\n visible: false\r\n });\r\n // Class: Grid\r\n r(\"Grid\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\r\n visible: false\r\n });\r\n // Class: Grid\r\n r(\"Grid\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\r\n opacity: 0.5\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Cursor\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYCursor\").setAll({\r\n behavior: \"none\",\r\n layer: 30,\r\n exportable: false,\r\n snapToSeriesBy: \"xy\",\r\n moveThreshold: 1\r\n });\r\n {\r\n const rule = r(\"Grid\", [\"cursor\", \"x\"]);\r\n rule.setAll({\r\n forceInactive: true,\r\n strokeOpacity: 0.8,\r\n strokeDasharray: [2, 2],\r\n role: \"slider\",\r\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"Grid\", [\"cursor\", \"y\"]);\r\n rule.setAll({\r\n forceInactive: true,\r\n strokeOpacity: 0.8,\r\n strokeDasharray: [2, 2],\r\n role: \"slider\",\r\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\r\n });\r\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"cursor\", \"selection\"]);\r\n rule.setAll({\r\n fillOpacity: 0.15,\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Axes\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Axis\").setAll({\r\n start: 0,\r\n end: 1,\r\n minZoomCount: 1,\r\n maxZoomCount: Infinity,\r\n maxZoomFactor: 1000,\r\n maxDeviation: 0.1,\r\n snapTooltip: true,\r\n tooltipLocation: 0.5,\r\n panX: true,\r\n panY: true,\r\n zoomX: true,\r\n zoomY: true,\r\n fixAxisSize: true\r\n });\r\n r(\"AxisLabel\").setAll({\r\n location: 0.5,\r\n multiLocation: 0,\r\n centerX: p50,\r\n centerY: p50,\r\n paddingTop: 3,\r\n paddingBottom: 3,\r\n paddingLeft: 5,\r\n paddingRight: 5\r\n });\r\n // The following is deprecated following text measuring updates in 5.0.5\r\n // r(\"AxisLabel\", [\"y\"]).setAll({\r\n // \ttextAlign: \"right\"\r\n // });\r\n // r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\r\n // \ttextAlign: \"left\"\r\n // });\r\n r(\"Container\", [\"axis\", \"header\"]).setAll({\r\n layer: 30\r\n });\r\n r(\"Rectangle\", [\"axis\", \"header\", \"background\"]).setAll({\r\n crisp: true\r\n });\r\n {\r\n const rule = r(\"AxisRenderer\");\r\n rule.setAll({\r\n crisp: true,\r\n strokeOpacity: 0\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"AxisRendererX\").setAll({\r\n minGridDistance: 120,\r\n opposite: false,\r\n inversed: false,\r\n cellStartLocation: 0,\r\n cellEndLocation: 1,\r\n width: p100\r\n });\r\n r(\"AxisRendererY\").setAll({\r\n minGridDistance: 40,\r\n opposite: false,\r\n inversed: false,\r\n cellStartLocation: 0,\r\n cellEndLocation: 1,\r\n height: p100\r\n });\r\n {\r\n const rule = r(\"Rectangle\", [\"axis\", \"thumb\"]);\r\n rule.setAll({\r\n fillOpacity: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n rule.states.create(\"hover\", { fillOpacity: 0.1 });\r\n }\r\n r(\"Rectangle\", [\"axis\", \"thumb\", \"x\"]).setAll({\r\n cursorOverStyle: \"ew-resize\"\r\n });\r\n r(\"Rectangle\", [\"axis\", \"thumb\", \"y\"]).setAll({\r\n cursorOverStyle: \"ns-resize\"\r\n });\r\n {\r\n const rule = r(\"Grid\");\r\n rule.setAll({\r\n location: 0,\r\n strokeOpacity: 0.15,\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n {\r\n const rule = r(\"Grid\", [\"minor\"]);\r\n rule.setAll({\r\n location: 0,\r\n strokeOpacity: 0.07,\r\n crisp: true\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"Grid\", [\"base\"]).setAll({\r\n strokeOpacity: 0.3\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"axis\", \"fill\"]);\r\n rule.setAll({\r\n visible: false,\r\n isMeasured: false,\r\n position: \"absolute\",\r\n fillOpacity: 0.05,\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\r\n }\r\n r(\"Graphics\", [\"axis\", \"fill\", \"range\"]).setAll({\r\n isMeasured: true\r\n });\r\n // hides all elements of series axis range\r\n r(\"Graphics\", [\"series\", \"fill\", \"range\"]).setAll({\r\n visible: false,\r\n isMeasured: true\r\n });\r\n r(\"Grid\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n r(\"AxisTick\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n r(\"AxisLabel\", [\"series\", \"range\"]).setAll({\r\n visible: false\r\n });\r\n {\r\n const rule = r(\"AxisTick\");\r\n rule.setAll({\r\n location: 0.5,\r\n multiLocation: 0,\r\n strokeOpacity: 1,\r\n isMeasured: false,\r\n position: \"absolute\",\r\n visible: false\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"CategoryAxis\").setAll({\r\n startLocation: 0,\r\n endLocation: 1,\r\n fillRule: (dataItem, index) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n if (!$type.isNumber(index) || index % 2 == 0) {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n });\r\n const gridIntervals = [\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 5 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 50 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"millisecond\", count: 500 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 5 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"second\", count: 30 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 5 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"minute\", count: 15 },\r\n { timeUnit: \"minute\", count: 30 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"hour\", count: 3 },\r\n { timeUnit: \"hour\", count: 6 },\r\n { timeUnit: \"hour\", count: 12 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"day\", count: 2 },\r\n { timeUnit: \"day\", count: 3 },\r\n { timeUnit: \"day\", count: 4 },\r\n { timeUnit: \"day\", count: 5 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"month\", count: 2 },\r\n { timeUnit: \"month\", count: 3 },\r\n { timeUnit: \"month\", count: 6 },\r\n { timeUnit: \"year\", count: 1 },\r\n { timeUnit: \"year\", count: 2 },\r\n { timeUnit: \"year\", count: 5 },\r\n { timeUnit: \"year\", count: 10 },\r\n { timeUnit: \"year\", count: 50 },\r\n { timeUnit: \"year\", count: 100 },\r\n { timeUnit: \"year\", count: 200 },\r\n { timeUnit: \"year\", count: 500 },\r\n { timeUnit: \"year\", count: 1000 },\r\n { timeUnit: \"year\", count: 2000 },\r\n { timeUnit: \"year\", count: 5000 },\r\n { timeUnit: \"year\", count: 10000 },\r\n { timeUnit: \"year\", count: 100000 }\r\n ];\r\n const dateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond\"),\r\n \"second\": language.translate(\"_date_second\"),\r\n \"minute\": language.translate(\"_date_minute\"),\r\n \"hour\": language.translate(\"_date_hour\"),\r\n \"day\": language.translate(\"_date_day\"),\r\n \"week\": language.translate(\"_date_day\"),\r\n \"month\": language.translate(\"_date_month\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n const periodChangeDateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond\"),\r\n \"second\": language.translate(\"_date_second\"),\r\n \"minute\": language.translate(\"_date_minute\"),\r\n \"hour\": language.translate(\"_date_day\"),\r\n \"day\": language.translate(\"_date_day\"),\r\n \"week\": language.translate(\"_date_day\"),\r\n \"month\": language.translate(\"_date_month\") + \" \" + language.translate(\"_date_year\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n const tooltipDateFormats = {\r\n \"millisecond\": language.translate(\"_date_millisecond_full\"),\r\n \"second\": language.translate(\"_date_second_full\"),\r\n \"minute\": language.translate(\"_date_minute_full\"),\r\n \"hour\": language.translate(\"_date_hour_full\"),\r\n \"day\": language.translate(\"_date_day_full\"),\r\n \"week\": language.translate(\"_date_week_full\"),\r\n \"month\": language.translate(\"_date_month_full\"),\r\n \"year\": language.translate(\"_date_year\")\r\n };\r\n r(\"CategoryDateAxis\").setAll({\r\n markUnitChange: true,\r\n gridIntervals: $array.copy(gridIntervals),\r\n dateFormats: $object.copy(dateFormats),\r\n periodChangeDateFormats: $object.copy(periodChangeDateFormats)\r\n });\r\n r(\"DateAxis\").setAll({\r\n maxZoomFactor: null,\r\n strictMinMax: true,\r\n startLocation: 0,\r\n endLocation: 1,\r\n markUnitChange: true,\r\n groupData: false,\r\n groupCount: 500,\r\n gridIntervals: $array.copy(gridIntervals),\r\n dateFormats: $object.copy(dateFormats),\r\n periodChangeDateFormats: $object.copy(periodChangeDateFormats),\r\n tooltipDateFormats: tooltipDateFormats,\r\n groupIntervals: [\r\n { timeUnit: \"millisecond\", count: 1 },\r\n { timeUnit: \"millisecond\", count: 10 },\r\n { timeUnit: \"millisecond\", count: 100 },\r\n { timeUnit: \"second\", count: 1 },\r\n { timeUnit: \"second\", count: 10 },\r\n { timeUnit: \"minute\", count: 1 },\r\n { timeUnit: \"minute\", count: 10 },\r\n { timeUnit: \"hour\", count: 1 },\r\n { timeUnit: \"day\", count: 1 },\r\n { timeUnit: \"week\", count: 1 },\r\n { timeUnit: \"month\", count: 1 },\r\n { timeUnit: \"year\", count: 1 }\r\n ],\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const axis = dataItem.component;\r\n const value = dataItem.get(\"value\");\r\n const endValue = dataItem.get(\"endValue\");\r\n const intervalDuration = axis.intervalDuration();\r\n const baseInterval = axis.getPrivate(\"baseInterval\");\r\n const gridInterval = axis.getPrivate(\"gridInterval\", baseInterval);\r\n let min = axis.getPrivate(\"min\", 0);\r\n min = $time.round(new Date(min), gridInterval.timeUnit, gridInterval.count, this._root.locale.firstDayOfWeek, this._root.utc, undefined, this._root.timezone).getTime();\r\n if (value != null && endValue != null) {\r\n const val = Math.round(Math.round((value - min) / intervalDuration)) / 2;\r\n if (val == Math.round(val)) {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n r(\"GaplessDateAxis\").setAll({\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const index = dataItem.get(\"index\");\r\n let visible = false;\r\n if (!$type.isNumber(index) || index % 2 == 0) {\r\n visible = true;\r\n }\r\n axisFill.setPrivate(\"visible\", visible);\r\n }\r\n }\r\n });\r\n r(\"ValueAxis\").setAll({\r\n baseValue: 0,\r\n logarithmic: false,\r\n strictMinMax: false,\r\n autoZoom: true,\r\n fillRule: (dataItem) => {\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n const axis = dataItem.component;\r\n const value = dataItem.get(\"value\");\r\n const step = axis.getPrivate(\"step\");\r\n if ($type.isNumber(value) && $type.isNumber(step)) {\r\n if ($math.round(value / step / 2, 5) == Math.round(value / step / 2)) {\r\n axisFill.setPrivate(\"visible\", false);\r\n }\r\n else {\r\n axisFill.setPrivate(\"visible\", true);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n r(\"DurationAxis\").setAll({\r\n baseUnit: \"second\"\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Series\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"XYSeries\").setAll({\r\n maskBullets: true,\r\n stackToNegative: true,\r\n locationX: 0.5,\r\n locationY: 0.5,\r\n snapTooltip: false,\r\n openValueXGrouped: \"open\",\r\n openValueYGrouped: \"open\",\r\n valueXGrouped: \"close\",\r\n valueYGrouped: \"close\",\r\n seriesTooltipTarget: \"series\"\r\n });\r\n r(\"BaseColumnSeries\").setAll({\r\n adjustBulletPosition: true\r\n });\r\n r(\"ColumnSeries\").setAll({\r\n clustered: true\r\n });\r\n r(\"RoundedRectangle\", [\"series\", \"column\"]).setAll({\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: percent(70),\r\n height: percent(70),\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n fillOpacity: 1,\r\n role: \"figure\"\r\n });\r\n r(\"LineSeries\").setAll({\r\n connect: true,\r\n autoGapCount: 1.1,\r\n stackToNegative: false\r\n });\r\n r(\"Graphics\", [\"series\", \"stroke\"]).setAll({\r\n position: \"absolute\",\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n isMeasured: false\r\n });\r\n r(\"Graphics\", [\"series\", \"fill\"]).setAll({\r\n visible: false,\r\n fillOpacity: 0,\r\n position: \"absolute\",\r\n strokeWidth: 0,\r\n strokeOpacity: 0,\r\n isMeasured: false\r\n });\r\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).setAll({\r\n draw: (display, sprite) => {\r\n const parent = sprite.parent;\r\n if (parent) {\r\n const h = parent.height();\r\n const w = parent.width();\r\n display.moveTo(0, h / 2);\r\n display.lineTo(w, h / 2);\r\n }\r\n }\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).setAll({\r\n draw: (display, sprite) => {\r\n const parent = sprite.parent;\r\n if (parent) {\r\n const h = parent.height();\r\n const w = parent.width();\r\n display.moveTo(0, 0);\r\n display.lineTo(w, 0);\r\n display.lineTo(w, h);\r\n display.lineTo(0, h);\r\n display.lineTo(0, 0);\r\n }\r\n }\r\n });\r\n {\r\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).states.create(\"disabled\", {});\r\n setColor(rule, \"stroke\", ic, \"disabled\");\r\n }\r\n r(\"SmoothedXYLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"SmoothedXLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"SmoothedYLineSeries\").setAll({\r\n tension: 0.5\r\n });\r\n r(\"Candlestick\").setAll({\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: percent(50),\r\n height: percent(50),\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n fillOpacity: 1,\r\n role: \"figure\"\r\n });\r\n r(\"OHLC\").setAll({\r\n width: percent(80),\r\n height: percent(80)\r\n });\r\n r(\"CandlestickSeries\").setAll({\r\n lowValueXGrouped: \"low\",\r\n lowValueYGrouped: \"low\",\r\n highValueXGrouped: \"high\",\r\n highValueYGrouped: \"high\",\r\n openValueXGrouped: \"open\",\r\n openValueYGrouped: \"open\",\r\n valueXGrouped: \"close\",\r\n valueYGrouped: \"close\"\r\n });\r\n // These rules can be used for regular columns, too\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"riseFromOpen\", {});\r\n setColor(rule, \"fill\", ic, \"positive\");\r\n setColor(rule, \"stroke\", ic, \"positive\");\r\n }\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"dropFromOpen\", {});\r\n setColor(rule, \"fill\", ic, \"negative\");\r\n setColor(rule, \"stroke\", ic, \"negative\");\r\n }\r\n // Hollow\r\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromOpen\", { fillOpacity: 0 });\r\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromOpen\", { fillOpacity: 1 });\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromPrevious\", {});\r\n setColor(rule, \"fill\", ic, \"positive\");\r\n setColor(rule, \"stroke\", ic, \"positive\");\r\n }\r\n {\r\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromPrevious\", {});\r\n setColor(rule, \"fill\", ic, \"negative\");\r\n setColor(rule, \"stroke\", ic, \"negative\");\r\n }\r\n // AXIS RANGE GRIP\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"rangegrip\"]);\r\n rule.setAll({\r\n strokeOpacity: 0,\r\n fillOpacity: 0,\r\n strokeWidth: 1,\r\n width: 12,\r\n height: 12\r\n });\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"rangegrip\", \"button\", \"icon\"]);\r\n rule.setAll({\r\n interactive: false,\r\n crisp: true,\r\n strokeOpacity: 0.5,\r\n draw: (display) => {\r\n display.moveTo(0, 0.5);\r\n display.lineTo(0, 12.5);\r\n display.moveTo(2, 0.5);\r\n display.lineTo(2, 12.5);\r\n display.moveTo(4, 0.5);\r\n display.lineTo(4, 12.5);\r\n }\r\n });\r\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\r\n }\r\n r(\"Button\", [\"rangegrip\"]).setAll({\r\n draggable: true,\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\"]).setAll({\r\n rotation: 90,\r\n cursorOverStyle: \"ns-resize\",\r\n centerX: p50\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\"]).setAll({\r\n cursorOverStyle: \"ew-resize\",\r\n centerX: p50\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\", \"left\"]).setAll({\r\n centerY: p100\r\n });\r\n r(\"Button\", [\"rangegrip\", \"vertical\", \"right\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"top\"]).setAll({\r\n centerY: 0\r\n });\r\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"bottom\"]).setAll({\r\n centerY: p100\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=XYChartDefaultTheme.js.map",";\r\nimport { XYChartDefaultTheme } from \"./XYChartDefaultTheme\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Rectangle } from \"../../core/render/Rectangle\";\r\nimport { SerialChart } from \"../../core/render/SerialChart\";\r\nimport { ListAutoDispose } from \"../../core/util/List\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Button } from \"../../core/render/Button\";\r\nimport { Graphics } from \"../../core/render/Graphics\";\r\nimport { Percent } from \"../../core/util/Percent\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $order from \"../../core/util/Order\";\r\nimport * as $object from \"../../core/util/Object\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\n/**\r\n * Creates an XY chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/} for more info\r\n * @important\r\n */\r\nexport class XYChart extends SerialChart {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A list of horizontal axes.\r\n */\r\n Object.defineProperty(this, \"xAxes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n /**\r\n * A list of vertical axes.\r\n */\r\n Object.defineProperty(this, \"yAxes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListAutoDispose()\r\n });\r\n /**\r\n * A [[Container]] located on top of the chart, used to store top horizontal\r\n * axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, layout: this._root.verticalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle the chart, used to store vertical axes\r\n * and plot area container.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"yAxesAndPlotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located on bottom of the chart, used to store bottom\r\n * horizontal axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"bottomAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.chartContainer.children.push(Container.new(this._root, { width: p100, layout: this._root.verticalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located on left of the chart, used to store left-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"leftAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle of the chart, used to store plotContainer and topPlotContainer\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"plotsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { width: p100, height: p100, maskContent: false }))\r\n });\r\n /**\r\n * A [[Container]] located in the middle of the chart, used to store actual\r\n * plots (series).\r\n *\r\n * NOTE: `plotContainer` will automatically have its `background` preset. If\r\n * you need to modify background or outline for chart's plot area, you can\r\n * use `plotContainer.get(\"background\")` for that.*\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"plotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotsContainer.children.push(Container.new(this._root, { width: p100, height: p100 }))\r\n });\r\n /**\r\n * A [[Container]] used for any elements that need to be displayed over\r\n * regular `plotContainer`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topPlotContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotsContainer.children.push(Container.new(this._root, { width: p100, height: p100 }))\r\n });\r\n /**\r\n * A [[Container]] axis grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"gridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotContainer.children.push(Container.new(this._root, { width: p100, height: p100, isMeasured: false }))\r\n });\r\n /**\r\n * A [[Container]] axis background grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topGridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100, isMeasured: false })\r\n });\r\n /**\r\n * A [[Container]] located on right of the chart, used to store right-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"rightAxesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, { height: p100, layout: this._root.horizontalLayout }))\r\n });\r\n /**\r\n * A [[Container]] axis headers are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"axisHeadersContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.plotContainer.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A button that is shown when chart is not fully zoomed out.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/zoom-and-pan/#Zoom_out_button} for more info\r\n * @default Button.new()\r\n */\r\n Object.defineProperty(this, \"zoomOutButton\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.topPlotContainer.children.push(Button.new(this._root, {\r\n themeTags: [\"zoom\"],\r\n icon: Graphics.new(this._root, {\r\n themeTags: [\"button\", \"icon\"]\r\n })\r\n }))\r\n });\r\n Object.defineProperty(this, \"_movePoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_wheelDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_otherCharts\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_movePoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_downStartX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEndX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downStartY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEndY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this._defaultThemes.push(XYChartDefaultTheme.new(this._root));\r\n super._afterNew();\r\n this._disposers.push(this.xAxes);\r\n this._disposers.push(this.yAxes);\r\n const root = this._root;\r\n let verticalLayout = this._root.verticalLayout;\r\n const zoomOutButton = this.zoomOutButton;\r\n zoomOutButton.events.on(\"click\", () => {\r\n this.zoomOut();\r\n });\r\n zoomOutButton.hide(0);\r\n zoomOutButton.states.lookup(\"default\").set(\"opacity\", 1);\r\n this.chartContainer.set(\"layout\", verticalLayout);\r\n const plotContainer = this.plotContainer;\r\n plotContainer.children.push(this.seriesContainer);\r\n this._disposers.push(this._processAxis(this.xAxes, this.bottomAxesContainer));\r\n this._disposers.push(this._processAxis(this.yAxes, this.leftAxesContainer));\r\n plotContainer.children.push(this.topGridContainer);\r\n plotContainer.children.push(this.bulletsContainer);\r\n // Setting trasnparent background so that full body of the plot container\r\n // is interactive\r\n plotContainer.set(\"interactive\", true);\r\n plotContainer.set(\"interactiveChildren\", false);\r\n plotContainer.set(\"background\", Rectangle.new(root, {\r\n themeTags: [\"plotbackground\", \"xy\", \"background\"]\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"pointerdown\", (event) => {\r\n this._handlePlotDown(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", (event) => {\r\n this._handlePlotUp(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", (event) => {\r\n this._handlePlotMove(event);\r\n }));\r\n this._maskGrid();\r\n this._setUpTouch();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"pinchZoomX\") || this.isDirty(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\")) {\r\n this._setUpTouch();\r\n }\r\n }\r\n _setUpTouch() {\r\n if (!this.plotContainer._display.cancelTouch) {\r\n this.plotContainer._display.cancelTouch = (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\")) ? true : false;\r\n }\r\n }\r\n _maskGrid() {\r\n this.gridContainer.set(\"maskContent\", true);\r\n this.topGridContainer.set(\"maskContent\", true);\r\n }\r\n _removeSeries(series) {\r\n series._unstack();\r\n if (series._posXDp) {\r\n series._posXDp.dispose();\r\n }\r\n if (series._posYDp) {\r\n series._posYDp.dispose();\r\n }\r\n series.set(\"baseAxis\", undefined);\r\n const xAxis = series.get(\"xAxis\");\r\n if (xAxis) {\r\n $array.remove(xAxis.series, series);\r\n xAxis.markDirtyExtremes();\r\n }\r\n const yAxis = series.get(\"yAxis\");\r\n if (yAxis) {\r\n $array.remove(yAxis.series, series);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n const snapToSeries = cursor.get(\"snapToSeries\");\r\n if (snapToSeries) {\r\n $array.remove(snapToSeries, series);\r\n }\r\n }\r\n super._removeSeries(series);\r\n }\r\n /**\r\n * This method is invoked when mouse wheel is used over chart's plot\r\n * container, and handles zooming/pan.\r\n *\r\n * You can invoke this method manually, if you need to mimic chart's wheel\r\n * behavior over other elements of the chart.\r\n */\r\n handleWheel(event) {\r\n const wheelX = this.get(\"wheelX\");\r\n const wheelY = this.get(\"wheelY\");\r\n const plotContainer = this.plotContainer;\r\n const wheelEvent = event.originalEvent;\r\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\r\n // some page element is over the chart.\r\n if ($utils.isLocalEvent(wheelEvent, this)) {\r\n wheelEvent.preventDefault();\r\n }\r\n else {\r\n return;\r\n }\r\n const plotPoint = plotContainer.toLocal(event.point);\r\n const wheelStep = this.get(\"wheelStep\", 0.2);\r\n const shiftY = wheelEvent.deltaY / 100;\r\n const shiftX = wheelEvent.deltaX / 100;\r\n const wheelZoomPositionX = this.get(\"wheelZoomPositionX\");\r\n const wheelZoomPositionY = this.get(\"wheelZoomPositionY\");\r\n if ((wheelX === \"zoomX\" || wheelX === \"zoomXY\") && shiftX != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\r\n if (wheelZoomPositionX != null) {\r\n position = wheelZoomPositionX;\r\n }\r\n let maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let newStart = Math.min(1 + maxDeviation, Math.max(-maxDeviation, start - wheelStep * (end - start) * shiftX * position));\r\n let newEnd = Math.max(-maxDeviation, Math.min(1 + maxDeviation, end + wheelStep * (end - start) * shiftX * (1 - position)));\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelY === \"zoomX\" || wheelY === \"zoomXY\") && shiftY != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\r\n if (wheelZoomPositionX != null) {\r\n position = wheelZoomPositionX;\r\n }\r\n let maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let newStart = Math.min(1 + maxDeviation, Math.max(-maxDeviation, start - wheelStep * (end - start) * shiftY * position));\r\n let newEnd = Math.max(-maxDeviation, Math.min(1 + maxDeviation, end + wheelStep * (end - start) * shiftY * (1 - position)));\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelX === \"zoomY\" || wheelX === \"zoomXY\") && shiftX != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\r\n if (wheelZoomPositionY != null) {\r\n position = wheelZoomPositionY;\r\n }\r\n let maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let newStart = Math.min(1 + maxDeviation, Math.max(-maxDeviation, start - wheelStep * (end - start) * shiftX * position));\r\n let newEnd = Math.max(-maxDeviation, Math.min(1 + maxDeviation, end + wheelStep * (end - start) * shiftX * (1 - position)));\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelY === \"zoomY\" || wheelY === \"zoomXY\") && shiftY != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\r\n if (wheelZoomPositionY != null) {\r\n position = wheelZoomPositionY;\r\n }\r\n let maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let newStart = Math.min(1 + maxDeviation, Math.max(-maxDeviation, start - wheelStep * (end - start) * shiftY * position));\r\n let newEnd = Math.max(-maxDeviation, Math.min(1 + maxDeviation, end + wheelStep * (end - start) * shiftY * (1 - position)));\r\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n }\r\n });\r\n }\r\n if ((wheelX === \"panX\" || wheelX === \"panXY\") && shiftX != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelY === \"panX\" || wheelY === \"panXY\") && shiftY != 0) {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelX === \"panY\" || wheelX === \"panXY\") && shiftX != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\r\n let newStart = start + delta;\r\n let newEnd = end + delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n if ((wheelY === \"panY\" || wheelY === \"panXY\") && shiftY != 0) {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n let start = axis.get(\"start\");\r\n let end = axis.get(\"end\");\r\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\r\n let newStart = start - delta;\r\n let newEnd = end - delta;\r\n let se = this._fixWheel(newStart, newEnd);\r\n newStart = se[0];\r\n newEnd = se[1];\r\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\r\n }\r\n });\r\n }\r\n }\r\n _handleSetWheel() {\r\n const wheelX = this.get(\"wheelX\");\r\n const wheelY = this.get(\"wheelY\");\r\n const plotContainer = this.plotContainer;\r\n if (wheelX !== \"none\" || wheelY !== \"none\") {\r\n this._wheelDp = plotContainer.events.on(\"wheel\", (event) => {\r\n const wheelEvent = event.originalEvent;\r\n if ((wheelX !== \"none\" && Math.abs(wheelEvent.deltaX) != 0) || (wheelY !== \"none\" && Math.abs(wheelEvent.deltaY) != 0)) {\r\n this.handleWheel(event);\r\n }\r\n });\r\n this._disposers.push(this._wheelDp);\r\n }\r\n else {\r\n if (this._wheelDp) {\r\n this._wheelDp.dispose();\r\n }\r\n }\r\n }\r\n _getWheelSign(axis) {\r\n let sign = 1;\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n sign = -1;\r\n }\r\n return sign;\r\n }\r\n _fixWheel(start, end) {\r\n const diff = end - start;\r\n if (start < 0) {\r\n start = 0;\r\n end = start + diff;\r\n }\r\n if (end > 1) {\r\n end = 1;\r\n start = end - diff;\r\n }\r\n return [start, end];\r\n }\r\n _handlePlotDown(event) {\r\n const originalEvent = event.originalEvent;\r\n if (originalEvent.button == 2) {\r\n return;\r\n }\r\n const plotContainer = this.plotContainer;\r\n let local = plotContainer.toLocal(event.point);\r\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\r\n const pointerId = originalEvent.pointerId;\r\n if (pointerId) {\r\n if ($object.keys(plotContainer._downPoints).length > 0) {\r\n const xAxis = this.xAxes.getIndex(0);\r\n const yAxis = this.yAxes.getIndex(0);\r\n if (xAxis) {\r\n this._downStartX = xAxis.get(\"start\", 0);\r\n this._downEndX = xAxis.get(\"end\", 1);\r\n }\r\n if (yAxis) {\r\n this._downStartY = yAxis.get(\"start\", 0);\r\n this._downEndY = yAxis.get(\"end\", 1);\r\n }\r\n }\r\n }\r\n }\r\n if (this.get(\"panX\") || this.get(\"panY\")) {\r\n if (local.x >= 0 && local.y >= 0 && local.x <= plotContainer.width() && local.y <= this.height()) {\r\n //this._downPoint = local;\r\n this._downPoint = { x: originalEvent.clientX, y: originalEvent.clientY };\r\n const panX = this.get(\"panX\");\r\n const panY = this.get(\"panY\");\r\n if (panX) {\r\n this.xAxes.each((axis) => {\r\n axis._panStart = axis.get(\"start\");\r\n axis._panEnd = axis.get(\"end\");\r\n });\r\n }\r\n if (panY) {\r\n this.yAxes.each((axis) => {\r\n axis._panStart = axis.get(\"start\");\r\n axis._panEnd = axis.get(\"end\");\r\n });\r\n }\r\n const eventType = \"panstarted\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n }\r\n _handleWheelAnimation(animation) {\r\n if (animation) {\r\n animation.events.on(\"stopped\", () => {\r\n this._dispatchWheelAnimation();\r\n });\r\n }\r\n else {\r\n this._dispatchWheelAnimation();\r\n }\r\n }\r\n _dispatchWheelAnimation() {\r\n const eventType = \"wheelended\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n _handlePlotUp(event) {\r\n const downPoint = this._downPoint;\r\n if (downPoint) {\r\n if (this.get(\"panX\") || this.get(\"panY\")) {\r\n if (event.originalEvent.clientX == downPoint.x && event.originalEvent.clientY == downPoint.y) {\r\n const eventType = \"pancancelled\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n const eventType = \"panended\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n // TODO: handle multitouch\r\n this._downPoint = undefined;\r\n this.xAxes.each((xAxis) => {\r\n xAxis._isPanning = false;\r\n });\r\n this.yAxes.each((yAxis) => {\r\n yAxis._isPanning = false;\r\n });\r\n }\r\n _handlePlotMove(event) {\r\n const plotContainer = this.plotContainer;\r\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\r\n const touchEvent = event.originalEvent;\r\n const pointerId = touchEvent.pointerId;\r\n if (pointerId) {\r\n this._movePoints[pointerId] = event.point;\r\n if ($object.keys(plotContainer._downPoints).length > 1) {\r\n this._handlePinch();\r\n return;\r\n }\r\n }\r\n }\r\n let downPoint = this._downPoint;\r\n if (downPoint) {\r\n downPoint = plotContainer.toLocal(this._root.documentPointToRoot(downPoint));\r\n let local = plotContainer.toLocal(event.point);\r\n const panX = this.get(\"panX\");\r\n const panY = this.get(\"panY\");\r\n if (panX) {\r\n let scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX) {\r\n scrollbarX.events.disableType(\"rangechanged\");\r\n }\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"panX\")) {\r\n axis._isPanning = true;\r\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let panStart = axis._panStart;\r\n let panEnd = axis._panEnd;\r\n let difference = (panEnd - panStart);\r\n let deltaX = difference * (downPoint.x - local.x) / plotContainer.width();\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n deltaX *= -1;\r\n }\r\n let start = panStart + deltaX;\r\n let end = panEnd + deltaX;\r\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\r\n axis.set(\"start\", start);\r\n axis.set(\"end\", end);\r\n }\r\n }\r\n });\r\n if (scrollbarX) {\r\n scrollbarX.events.enableType(\"rangechanged\");\r\n }\r\n }\r\n if (panY) {\r\n let scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY) {\r\n scrollbarY.events.disableType(\"rangechanged\");\r\n }\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"panY\")) {\r\n axis._isPanning = true;\r\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\r\n let panStart = axis._panStart;\r\n let panEnd = axis._panEnd;\r\n let difference = (panEnd - panStart);\r\n let deltaY = difference * (downPoint.y - local.y) / plotContainer.height();\r\n if (axis.get(\"renderer\").get(\"inversed\")) {\r\n deltaY *= -1;\r\n }\r\n let start = panStart - deltaY;\r\n let end = panEnd - deltaY;\r\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\r\n axis.set(\"start\", start);\r\n axis.set(\"end\", end);\r\n }\r\n }\r\n });\r\n if (scrollbarY) {\r\n scrollbarY.events.enableType(\"rangechanged\");\r\n }\r\n }\r\n }\r\n }\r\n _handlePinch() {\r\n const plotContainer = this.plotContainer;\r\n let i = 0;\r\n let downPoints = [];\r\n let movePoints = [];\r\n $object.each(plotContainer._downPoints, (k, point) => {\r\n downPoints[i] = point;\r\n let movePoint = this._movePoints[k];\r\n if (movePoint) {\r\n movePoints[i] = movePoint;\r\n }\r\n i++;\r\n });\r\n if (downPoints.length > 1 && movePoints.length > 1) {\r\n const w = plotContainer.width();\r\n const h = plotContainer.height();\r\n let downPoint0 = downPoints[0];\r\n let downPoint1 = downPoints[1];\r\n let movePoint0 = movePoints[0];\r\n let movePoint1 = movePoints[1];\r\n if (downPoint0 && downPoint1 && movePoint0 && movePoint1) {\r\n movePoint0 = plotContainer.toLocal(movePoint0);\r\n movePoint1 = plotContainer.toLocal(movePoint1);\r\n downPoint0 = plotContainer.toLocal(downPoint0);\r\n downPoint1 = plotContainer.toLocal(downPoint1);\r\n if (this.get(\"pinchZoomX\")) {\r\n const downStartX = this._downStartX;\r\n const downEndX = this._downEndX;\r\n if (downStartX != null && downEndX != null) {\r\n if (downPoint0.x > downPoint1.x) {\r\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\r\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\r\n }\r\n let downPos0 = downStartX + (downPoint0.x / w) * (downEndX - downStartX);\r\n let downPos1 = downStartX + (downPoint1.x / w) * (downEndX - downStartX);\r\n let movePos0 = downStartX + (movePoint0.x / w) * (downEndX - downStartX);\r\n let movePos1 = downStartX + (movePoint1.x / w) * (downEndX - downStartX);\r\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\r\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\r\n let d = initialDistance / currentDistance;\r\n let s = downStartX * d + downPos0 - movePos0 * d;\r\n let e = downEndX * d + downPos1 - movePos1 * d;\r\n this.xAxes.each((xAxis) => {\r\n let sa = xAxis.fixPosition(s);\r\n let ea = xAxis.fixPosition(e);\r\n xAxis.zoom(sa, ea, 0);\r\n });\r\n }\r\n }\r\n if (this.get(\"pinchZoomY\")) {\r\n const downStartY = this._downStartY;\r\n const downEndY = this._downEndY;\r\n if (downStartY != null && downEndY != null) {\r\n if (downPoint0.y < downPoint1.y) {\r\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\r\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\r\n }\r\n let downPos0 = downStartY + (1 - downPoint0.y / h) * (downEndY - downStartY);\r\n let downPos1 = downStartY + (1 - downPoint1.y / h) * (downEndY - downStartY);\r\n let movePos0 = downStartY + (1 - movePoint0.y / h) * (downEndY - downStartY);\r\n let movePos1 = downStartY + (1 - movePoint1.y / h) * (downEndY - downStartY);\r\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\r\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\r\n let d = initialDistance / currentDistance;\r\n let s = downStartY * d + downPos0 - movePos0 * d;\r\n let e = downEndY * d + downPos1 - movePos1 * d;\r\n this.yAxes.each((yAxis) => {\r\n let sa = yAxis.fixPosition(s);\r\n let ea = yAxis.fixPosition(e);\r\n yAxis.zoom(sa, ea, 0);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _handleCursorPosition() {\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n const cursorPoint = cursor.getPrivate(\"point\");\r\n let snapToSeries = cursor.get(\"snapToSeries\");\r\n if (cursor._downPoint) {\r\n snapToSeries = undefined;\r\n }\r\n if (snapToSeries && cursorPoint) {\r\n const snapToSeriesBy = cursor.get(\"snapToSeriesBy\");\r\n const dataItems = [];\r\n $array.each(snapToSeries, (series) => {\r\n if (!series.isHidden() && !series.isHiding()) {\r\n if (snapToSeriesBy != \"x!\" && snapToSeriesBy != \"y!\") {\r\n const startIndex = series.startIndex();\r\n const endIndex = series.endIndex();\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const dataItem = series.dataItems[i];\r\n if (dataItem && !dataItem.isHidden()) {\r\n dataItems.push(dataItem);\r\n }\r\n }\r\n }\r\n else {\r\n const tooltipDataItem = series.get(\"tooltipDataItem\");\r\n if (tooltipDataItem) {\r\n dataItems.push(tooltipDataItem);\r\n }\r\n }\r\n }\r\n });\r\n let minDistance = Infinity;\r\n let closestItem;\r\n $array.each(dataItems, (dataItem) => {\r\n const point = dataItem.get(\"point\");\r\n if (point) {\r\n let distance = 0;\r\n if (snapToSeriesBy == \"x\" || snapToSeriesBy == \"x!\") {\r\n distance = Math.abs(cursorPoint.x - point.x);\r\n }\r\n else if (snapToSeriesBy == \"y\" || snapToSeriesBy == \"y!\") {\r\n distance = Math.abs(cursorPoint.y - point.y);\r\n }\r\n else {\r\n distance = Math.hypot(cursorPoint.x - point.x, cursorPoint.y - point.y);\r\n }\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closestItem = dataItem;\r\n }\r\n }\r\n });\r\n $array.each(snapToSeries, (series) => {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip._setDataItem(undefined);\r\n }\r\n });\r\n if (closestItem) {\r\n let series = closestItem.component;\r\n series.showDataItemTooltip(closestItem);\r\n series.setRaw(\"tooltipDataItem\", closestItem);\r\n const point = closestItem.get(\"point\");\r\n if (point) {\r\n // removing x and y to solve #72225\r\n cursor.handleMove(series.toGlobal({ x: point.x - series.x(), y: point.y - series.y() }), true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _updateCursor() {\r\n let cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n cursor.updateCursor();\r\n }\r\n }\r\n _addCursor(cursor) {\r\n this.plotContainer.children.push(cursor);\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n this.series.each((series) => {\r\n this._colorize(series);\r\n });\r\n if (this.isDirty(\"wheelX\") || this.isDirty(\"wheelY\")) {\r\n this._handleSetWheel();\r\n }\r\n if (this.isDirty(\"cursor\")) {\r\n const previous = this._prevSettings.cursor;\r\n const cursor = this.get(\"cursor\");\r\n if (cursor !== previous) {\r\n this._disposeProperty(\"cursor\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (cursor) {\r\n cursor._setChart(this);\r\n this._addCursor(cursor);\r\n this._pushPropertyDisposer(\"cursor\", cursor.events.on(\"selectended\", () => {\r\n this._handleCursorSelectEnd();\r\n }));\r\n }\r\n //this.setRaw(\"cursor\", cursor) // to reset previous value\r\n this._prevSettings.cursor = cursor;\r\n }\r\n }\r\n if (this.isDirty(\"scrollbarX\")) {\r\n const previous = this._prevSettings.scrollbarX;\r\n const scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX !== previous) {\r\n this._disposeProperty(\"scrollbarX\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (scrollbarX) {\r\n if (!scrollbarX.parent) {\r\n this.topAxesContainer.children.push(scrollbarX);\r\n }\r\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"rangechanged\", (e) => {\r\n this._handleScrollbar(this.xAxes, e.start, e.end, e.grip);\r\n }));\r\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"released\", () => {\r\n this.xAxes.each((axis) => {\r\n if (axis.get(\"zoomable\")) {\r\n this._handleAxisSelection(axis);\r\n }\r\n });\r\n }));\r\n // Used to populate `ariaLabel` with meaningful values\r\n scrollbarX.setPrivate(\"positionTextFunction\", (position) => {\r\n const axis = this.xAxes.getIndex(0);\r\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\r\n });\r\n }\r\n this._prevSettings.scrollbarX = scrollbarX;\r\n }\r\n }\r\n if (this.isDirty(\"scrollbarY\")) {\r\n const previous = this._prevSettings.scrollbarY;\r\n const scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY !== previous) {\r\n this._disposeProperty(\"scrollbarY\");\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n if (scrollbarY) {\r\n if (!scrollbarY.parent) {\r\n this.rightAxesContainer.children.push(scrollbarY);\r\n }\r\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"rangechanged\", (e) => {\r\n this._handleScrollbar(this.yAxes, e.start, e.end, e.grip);\r\n }));\r\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"released\", () => {\r\n this.yAxes.each((axis) => {\r\n if (axis.get(\"zoomable\")) {\r\n this._handleAxisSelection(axis);\r\n }\r\n });\r\n }));\r\n // Used to populate `ariaLabel` with meaningful values\r\n scrollbarY.setPrivate(\"positionTextFunction\", (position) => {\r\n const axis = this.yAxes.getIndex(0);\r\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\r\n });\r\n }\r\n this._prevSettings.scrollbarY = scrollbarY;\r\n }\r\n }\r\n this._handleZoomOut();\r\n }\r\n _processSeries(series) {\r\n super._processSeries(series);\r\n const xAxis = series.get(\"xAxis\");\r\n const yAxis = series.get(\"yAxis\");\r\n $array.move(xAxis.series, series);\r\n $array.move(yAxis.series, series);\r\n series._posXDp = series.addDisposer(xAxis.events.on(\"positionchanged\", () => {\r\n series._fixPosition();\r\n }));\r\n series._posXDp = series.addDisposer(yAxis.events.on(\"positionchanged\", () => {\r\n series._fixPosition();\r\n }));\r\n if (!series.get(\"baseAxis\")) {\r\n if (yAxis.isType(\"CategoryAxis\") || yAxis.isType(\"DateAxis\")) {\r\n series.set(\"baseAxis\", yAxis);\r\n }\r\n else {\r\n series.set(\"baseAxis\", xAxis);\r\n }\r\n }\r\n if (series.get(\"stacked\")) {\r\n series._markDirtyKey(\"stacked\");\r\n $array.each(series.dataItems, (dataItem) => {\r\n dataItem.set(\"stackToItemY\", undefined);\r\n dataItem.set(\"stackToItemX\", undefined);\r\n });\r\n }\r\n series._markDirtyAxes();\r\n yAxis.markDirtyExtremes();\r\n xAxis.markDirtyExtremes();\r\n xAxis._seriesAdded = true;\r\n yAxis._seriesAdded = true;\r\n this._colorize(series);\r\n }\r\n _colorize(series) {\r\n const colorSet = this.get(\"colors\");\r\n if (colorSet) {\r\n if (series.get(\"fill\") == null) {\r\n const color = colorSet.next();\r\n series._setSoft(\"stroke\", color);\r\n series._setSoft(\"fill\", color);\r\n }\r\n }\r\n const patternSet = this.get(\"patterns\");\r\n if (patternSet) {\r\n if (series.get(\"fillPattern\") == null) {\r\n const pattern = patternSet.next();\r\n series._setSoft(\"fillPattern\", pattern);\r\n }\r\n }\r\n }\r\n _handleCursorSelectEnd() {\r\n const cursor = this.get(\"cursor\");\r\n const behavior = cursor.get(\"behavior\");\r\n const downPositionX = cursor.getPrivate(\"downPositionX\", 0);\r\n const downPositionY = cursor.getPrivate(\"downPositionY\", 0);\r\n const positionX = Math.min(1, Math.max(0, cursor.getPrivate(\"positionX\", 0.5)));\r\n const positionY = Math.min(1, Math.max(0, cursor.getPrivate(\"positionY\", 0.5)));\r\n this.xAxes.each((axis) => {\r\n if (behavior === \"zoomX\" || behavior === \"zoomXY\") {\r\n let position0 = axis.toAxisPosition(downPositionX);\r\n let position1 = axis.toAxisPosition(positionX);\r\n axis.zoom(position0, position1);\r\n }\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n });\r\n this.yAxes.each((axis) => {\r\n if (behavior === \"zoomY\" || behavior === \"zoomXY\") {\r\n let position0 = axis.toAxisPosition(downPositionY);\r\n let position1 = axis.toAxisPosition(positionY);\r\n axis.zoom(position0, position1);\r\n }\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n });\r\n }\r\n _handleScrollbar(axes, start, end, priority) {\r\n axes.each((axis) => {\r\n let axisStart = axis.fixPosition(start);\r\n let axisEnd = axis.fixPosition(end);\r\n let zoomAnimation = axis.zoom(axisStart, axisEnd, undefined, priority);\r\n const updateScrollbar = \"updateScrollbar\";\r\n axis.setPrivateRaw(updateScrollbar, false);\r\n if (zoomAnimation) {\r\n zoomAnimation.events.on(\"stopped\", () => {\r\n axis.setPrivateRaw(updateScrollbar, true);\r\n });\r\n }\r\n else {\r\n axis.setPrivateRaw(updateScrollbar, true);\r\n }\r\n });\r\n }\r\n _processAxis(axes, container) {\r\n return axes.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (axis) => {\r\n this._removeAxis(axis);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n container.children.push(change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n container.children.setIndex(change.index, change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n container.children.insertIndex(change.index, change.newValue);\r\n change.newValue.processChart(this);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeAxis(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n container.children.moveValue(change.value, change.newIndex);\r\n change.value.processChart(this);\r\n }\r\n else {\r\n throw new Error(\"Unknown IListEvent type\");\r\n }\r\n });\r\n }\r\n _removeAxis(axis) {\r\n if (!axis.isDisposed()) {\r\n const axisParent = axis.parent;\r\n if (axisParent) {\r\n axisParent.children.removeValue(axis);\r\n }\r\n const gridContainer = axis.gridContainer;\r\n const gridParent = gridContainer.parent;\r\n if (gridParent) {\r\n gridParent.children.removeValue(gridContainer);\r\n }\r\n const topGridContainer = axis.topGridContainer;\r\n const topGridParent = topGridContainer.parent;\r\n if (topGridParent) {\r\n topGridParent.children.removeValue(topGridContainer);\r\n }\r\n }\r\n }\r\n _updateChartLayout() {\r\n const left = this.leftAxesContainer.width();\r\n const right = this.rightAxesContainer.width();\r\n const bottomAxesContainer = this.bottomAxesContainer;\r\n bottomAxesContainer.set(\"paddingLeft\", left);\r\n bottomAxesContainer.set(\"paddingRight\", right);\r\n const topAxesContainer = this.topAxesContainer;\r\n topAxesContainer.set(\"paddingLeft\", left);\r\n topAxesContainer.set(\"paddingRight\", right);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis(axis) {\r\n var cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n this.addDisposer(axis.on(\"start\", () => {\r\n this._updateCursor();\r\n }));\r\n this.addDisposer(axis.on(\"end\", () => {\r\n this._updateCursor();\r\n }));\r\n }\r\n }\r\n _handleAxisSelection(axis, force) {\r\n let start = axis.fixPosition(axis.get(\"start\", 0));\r\n let end = axis.fixPosition(axis.get(\"end\", 1));\r\n if (start > end) {\r\n [start, end] = [end, start];\r\n }\r\n if (this.xAxes.indexOf(axis) != -1) {\r\n if (force || axis.getPrivate(\"updateScrollbar\")) {\r\n let scrollbarX = this.get(\"scrollbarX\");\r\n if (scrollbarX && (!scrollbarX.getPrivate(\"isBusy\") || force)) {\r\n scrollbarX.setRaw(\"start\", start);\r\n scrollbarX.setRaw(\"end\", end);\r\n scrollbarX.updateGrips();\r\n }\r\n }\r\n }\r\n else if (this.yAxes.indexOf(axis) != -1) {\r\n if (force || axis.getPrivate(\"updateScrollbar\")) {\r\n let scrollbarY = this.get(\"scrollbarY\");\r\n if (scrollbarY && (!scrollbarY.getPrivate(\"isBusy\") || force)) {\r\n scrollbarY.setRaw(\"start\", start);\r\n scrollbarY.setRaw(\"end\", end);\r\n scrollbarY.updateGrips();\r\n }\r\n }\r\n }\r\n this._handleZoomOut();\r\n }\r\n _handleZoomOut() {\r\n let zoomOutButton = this.zoomOutButton;\r\n if (zoomOutButton && zoomOutButton.parent) {\r\n let visible = false;\r\n this.xAxes.each((axis) => {\r\n if ($math.round(axis.get(\"start\", 0), 6) != 0 || $math.round(axis.get(\"end\", 1), 6) != 1) {\r\n visible = true;\r\n }\r\n });\r\n this.yAxes.each((axis) => {\r\n if ($math.round(axis.get(\"start\", 0), 6) != 0 || $math.round(axis.get(\"end\", 1), 6) != 1) {\r\n visible = true;\r\n }\r\n });\r\n if (visible) {\r\n if (zoomOutButton.isHidden()) {\r\n zoomOutButton.show();\r\n }\r\n }\r\n else {\r\n zoomOutButton.hide();\r\n }\r\n }\r\n }\r\n /**\r\n * Checks if point is within plot area.\r\n *\r\n * @param point Reference point\r\n * @return Is within plot area?\r\n */\r\n inPlot(point) {\r\n const plotContainer = this.plotContainer;\r\n const otherCharts = this.getPrivate(\"otherCharts\", this._otherCharts);\r\n const global = plotContainer.toGlobal(point);\r\n if (point.x >= -0.5 && point.y >= -0.5 && point.x <= plotContainer.width() + 0.5 && point.y <= plotContainer.height() + 0.5) {\r\n return true;\r\n }\r\n if (otherCharts) {\r\n for (let i = otherCharts.length - 1; i >= 0; i--) {\r\n const chart = otherCharts[i];\r\n if (chart != this) {\r\n const chartPlotContainer = chart.plotContainer;\r\n const documentPoint = this._root.rootPointToDocument(global);\r\n const chartRoot = chart._root.documentPointToRoot(documentPoint);\r\n const local = chartPlotContainer.toLocal(chartRoot);\r\n if (local.x >= -0.1 && local.y >= -0.1 && local.x <= chartPlotContainer.width() + 0.1 && local.y <= chartPlotContainer.height() + 0.1) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n arrangeTooltips() {\r\n const plotContainer = this.plotContainer;\r\n const w = plotContainer.width();\r\n const h = plotContainer.height();\r\n const hh = this.height();\r\n let plotT = plotContainer._display.toGlobal({ x: 0, y: 0 });\r\n let plotB = plotContainer._display.toGlobal({ x: w, y: h });\r\n const tooltips = [];\r\n let sum = 0;\r\n let minDistance = Infinity;\r\n let movePoint = this._movePoint;\r\n let maxTooltipDistance = this.get(\"maxTooltipDistance\");\r\n let maxTooltipDistanceBy = this.get(\"maxTooltipDistanceBy\", \"xy\");\r\n let closest;\r\n let closestPoint;\r\n if ($type.isNumber(maxTooltipDistance)) {\r\n this.series.each((series) => {\r\n if (!series.isHidden()) {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip) {\r\n let point = tooltip.get(\"pointTo\");\r\n if (point) {\r\n let distance = Math.hypot(movePoint.x - point.x, movePoint.y - point.y);\r\n if (maxTooltipDistanceBy == \"x\") {\r\n distance = Math.abs(movePoint.x - point.x);\r\n }\r\n else if (maxTooltipDistanceBy == \"y\") {\r\n distance = Math.abs(movePoint.y - point.y);\r\n }\r\n if (distance < minDistance) {\r\n minDistance = distance;\r\n closest = series;\r\n closestPoint = point;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n const tooltipSeries = [];\r\n this.series.each((series) => {\r\n const tooltip = series.get(\"tooltip\");\r\n if (tooltip && !tooltip.get(\"forceHidden\")) {\r\n let hidden = false;\r\n let point = tooltip.get(\"pointTo\");\r\n if (point) {\r\n if (maxTooltipDistance >= 0) {\r\n let point = tooltip.get(\"pointTo\");\r\n if (point && closestPoint) {\r\n if (series != closest) {\r\n let distance = Math.hypot(closestPoint.x - point.x, closestPoint.y - point.y);\r\n if (maxTooltipDistanceBy == \"x\") {\r\n distance = Math.abs(closestPoint.x - point.x);\r\n }\r\n else if (maxTooltipDistanceBy == \"y\") {\r\n distance = Math.abs(closestPoint.y - point.y);\r\n }\r\n if (distance > maxTooltipDistance) {\r\n hidden = true;\r\n }\r\n }\r\n }\r\n }\r\n else if (maxTooltipDistance == -1) {\r\n if (series != closest) {\r\n hidden = true;\r\n }\r\n }\r\n if (!this.inPlot(this._tooltipToLocal(point)) || !tooltip.dataItem) {\r\n hidden = true;\r\n }\r\n else {\r\n if (!hidden) {\r\n sum += point.y;\r\n }\r\n }\r\n if (hidden || series.isHidden() || series.isHiding()) {\r\n tooltip.hide(0);\r\n }\r\n else {\r\n tooltip.show();\r\n tooltips.push(tooltip);\r\n tooltipSeries.push(series);\r\n }\r\n }\r\n }\r\n });\r\n this.setPrivate(\"tooltipSeries\", tooltipSeries);\r\n if (this.get(\"arrangeTooltips\")) {\r\n const tooltipContainer = this._root.tooltipContainer;\r\n const count = tooltips.length;\r\n const average = sum / count;\r\n if (average > h / 2 + plotT.y) {\r\n tooltips.sort((a, b) => $order.compareNumber(b.get(\"pointTo\").y, a.get(\"pointTo\").y));\r\n let prevY = plotB.y;\r\n $array.each(tooltips, (tooltip) => {\r\n let height = tooltip.height();\r\n let centerY = tooltip.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n height *= centerY.value;\r\n }\r\n height += tooltip.get(\"marginBottom\", 0);\r\n tooltip.set(\"bounds\", { left: plotT.x, top: plotT.y, right: plotB.x, bottom: prevY });\r\n tooltip.setPrivate(\"customData\", { left: plotT.x, top: plotT.y, right: plotB.x, bottom: prevY });\r\n prevY = Math.min(prevY - height, tooltip._fy - height);\r\n if (tooltip.parent == tooltipContainer) {\r\n tooltipContainer.children.moveValue(tooltip, 0);\r\n }\r\n });\r\n if (prevY < 0) {\r\n tooltips.reverse();\r\n let prevBottom = prevY;\r\n $array.each(tooltips, (tooltip) => {\r\n let bounds = tooltip.get(\"bounds\");\r\n if (bounds) {\r\n let top = bounds.top - prevY;\r\n let bottom = bounds.bottom - prevY;\r\n if (top < prevBottom) {\r\n top = prevBottom;\r\n bottom = top + tooltip.height();\r\n }\r\n tooltip.set(\"bounds\", { left: bounds.left, top: top, right: bounds.right, bottom: bottom });\r\n prevBottom = bounds.bottom - prevY + tooltip.get(\"marginBottom\", 0);\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n tooltips.reverse();\r\n tooltips.sort((a, b) => $order.compareNumber(a.get(\"pointTo\").y, b.get(\"pointTo\").y));\r\n let prevY = 0;\r\n $array.each(tooltips, (tooltip) => {\r\n let height = tooltip.height();\r\n let centerY = tooltip.get(\"centerY\");\r\n if (centerY instanceof Percent) {\r\n height *= centerY.value;\r\n }\r\n height += tooltip.get(\"marginBottom\", 0);\r\n tooltip.set(\"bounds\", { left: plotT.x, top: prevY, right: plotB.x, bottom: Math.max(plotT.y + hh, prevY + height) });\r\n if (tooltip.parent == tooltipContainer) {\r\n tooltipContainer.children.moveValue(tooltip, 0);\r\n }\r\n prevY = Math.max(prevY + height, tooltip._fy + height);\r\n });\r\n if (prevY > hh) {\r\n tooltips.reverse();\r\n let prevBottom = hh;\r\n $array.each(tooltips, (tooltip) => {\r\n let bounds = tooltip.get(\"bounds\");\r\n if (bounds) {\r\n let top = bounds.top - (hh - prevY);\r\n let bottom = bounds.bottom - (hh - prevY);\r\n if (bottom > prevBottom) {\r\n bottom = prevBottom;\r\n top = bottom - tooltip.height();\r\n }\r\n tooltip.set(\"bounds\", { left: bounds.left, top: top, right: bounds.right, bottom: bottom });\r\n prevBottom = bottom - tooltip.height() - tooltip.get(\"marginBottom\", 0);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n _tooltipToLocal(point) {\r\n return this.plotContainer.toLocal(point);\r\n }\r\n /**\r\n * Fully zooms out the chart.\r\n */\r\n zoomOut() {\r\n this.xAxes.each((axis) => {\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n axis.zoom(0, 1);\r\n });\r\n this.yAxes.each((axis) => {\r\n axis.setPrivate(\"updateScrollbar\", true);\r\n axis.zoom(0, 1);\r\n });\r\n }\r\n _dispose() {\r\n super._dispose();\r\n // Explicitly disposing cursor to avoid memory leak of cursor adding\r\n // keyboard events after parent chart has been disposed\r\n const cursor = this.get(\"cursor\");\r\n if (cursor) {\r\n cursor.dispose();\r\n }\r\n }\r\n}\r\nObject.defineProperty(XYChart, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYChart\"\r\n});\r\nObject.defineProperty(XYChart, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: SerialChart.classNames.concat([XYChart.className])\r\n});\r\n//# sourceMappingURL=XYChart.js.map","import { Graphics } from \"../../../core/render/Graphics\";\r\n/**\r\n * Creates an axis grid line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Grid} for more info\r\n * @important\r\n */\r\nexport class Grid extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n}\r\nObject.defineProperty(Grid, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Grid\"\r\n});\r\nObject.defineProperty(Grid, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Grid.className])\r\n});\r\n//# sourceMappingURL=Grid.js.map","import { Container } from \"../../core/render/Container\";\r\nimport { p100 } from \"../../core/util/Percent\";\r\nimport { Graphics } from \"../../core/render/Graphics\";\r\nimport { Grid } from \"./axes/Grid\";\r\n//import { Animations } from \"../core/util/Animation\";\r\nimport * as $type from \"../../core/util/Type\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\nimport * as $math from \"../../core/util/Math\";\r\nimport * as $array from \"../../core/util/Array\";\r\nimport * as $object from \"../../core/util/Object\";\r\n/**\r\n * Creates a chart cursor for an [[XYChart]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/} for more info\r\n * @important\r\n */\r\nexport class XYCursor extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_alwaysShow\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\r\n Object.defineProperty(this, \"lineX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Grid.new(this._root, {\r\n themeTags: [\"x\"]\r\n }))\r\n });\r\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\r\n Object.defineProperty(this, \"lineY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Grid.new(this._root, {\r\n themeTags: [\"y\"]\r\n }))\r\n });\r\n /**\r\n * An element that represents current selection.\r\n *\r\n * @default Graphics.new()\r\n */\r\n Object.defineProperty(this, \"selection\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Graphics.new(this._root, {\r\n themeTags: [\"selection\", \"cursor\"], layer: 30\r\n }))\r\n });\r\n Object.defineProperty(this, \"_movePoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_lastPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_lastPoint2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { x: 0, y: 0 }\r\n });\r\n Object.defineProperty(this, \"_tooltipX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_tooltipY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A chart cursor is attached to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"xy\", \"cursor\"]);\r\n super._afterNew();\r\n this.setAll({ \"width\": p100, height: p100, isMeasured: true, position: \"absolute\" });\r\n this.states.create(\"hidden\", { visible: true, opacity: 0 });\r\n this._drawLines();\r\n this.setPrivateRaw(\"visible\", false);\r\n this._disposers.push(this.setTimeout(() => {\r\n this.setPrivate(\"visible\", true);\r\n }, 500));\r\n this._disposers.push(this.lineX.events.on(\"positionchanged\", () => {\r\n this._handleXLine();\r\n }));\r\n this._disposers.push(this.lineY.events.on(\"positionchanged\", () => {\r\n this._handleYLine();\r\n }));\r\n this._disposers.push(this.lineX.events.on(\"focus\", () => this._handleLineFocus()));\r\n this._disposers.push(this.lineX.events.on(\"blur\", () => this._handleLineBlur()));\r\n this._disposers.push(this.lineY.events.on(\"focus\", () => this._handleLineFocus()));\r\n this._disposers.push(this.lineY.events.on(\"blur\", () => this._handleLineBlur()));\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(document, \"keydown\", (ev) => {\r\n this._handleLineMove($utils.getEventKey(ev), ev.ctrlKey);\r\n }));\r\n }\r\n }\r\n _setUpTouch() {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart.plotContainer._display.cancelTouch = this.get(\"behavior\") != \"none\" ? true : false;\r\n }\r\n }\r\n _handleXLine() {\r\n let x = this.lineX.x();\r\n let visible = true;\r\n if (x < 0 || x > this.width()) {\r\n visible = false;\r\n }\r\n this.lineX.setPrivate(\"visible\", visible);\r\n }\r\n _handleYLine() {\r\n let y = this.lineY.y();\r\n let visible = true;\r\n if (y < 0 || y > this.height()) {\r\n visible = false;\r\n }\r\n this.lineY.setPrivate(\"visible\", visible);\r\n }\r\n _handleLineMove(key, ctrlKey) {\r\n let dir = \"\";\r\n const chart = this.chart;\r\n let axis;\r\n if (chart && chart.xAxes.length) {\r\n if (this._root.focused(this.lineX)) {\r\n dir = \"positionX\";\r\n axis = chart.xAxes.getIndex(0);\r\n }\r\n else if (this._root.focused(this.lineY)) {\r\n axis = chart.yAxes.getIndex(0);\r\n dir = \"positionY\";\r\n }\r\n let m = 1;\r\n if (ctrlKey) {\r\n m = 5;\r\n }\r\n if (axis) {\r\n let inversed = axis.get(\"renderer\").get(\"inversed\", false);\r\n let step;\r\n if (key == \"ArrowRight\" || key == \"ArrowDown\") {\r\n step = 1;\r\n }\r\n else if (key == \"ArrowLeft\" || key == \"ArrowUp\") {\r\n step = -1;\r\n }\r\n else if (key == \"Tab\") {\r\n step = 0;\r\n }\r\n if (step != null) {\r\n if (inversed) {\r\n step *= -1;\r\n }\r\n this.set(dir, axis.nextPosition(step * m));\r\n }\r\n }\r\n }\r\n }\r\n _handleLineFocus() {\r\n this._alwaysShow = this.get(\"alwaysShow\", false);\r\n this.setAll({\r\n positionX: this.getPrivate(\"positionX\", 0),\r\n positionY: this.getPrivate(\"positionY\", 0),\r\n alwaysShow: true\r\n });\r\n this._handleLineMove(\"Tab\");\r\n }\r\n _handleLineBlur() {\r\n if (this.lineX.isFocus() || this.lineY.isFocus()) {\r\n this.setAll({\r\n positionX: undefined,\r\n positionY: undefined,\r\n alwaysShow: this._alwaysShow\r\n });\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"xAxis\")) {\r\n this._tooltipX = false;\r\n const xAxis = this.get(\"xAxis\");\r\n if (xAxis) {\r\n const tooltip = xAxis.get(\"tooltip\");\r\n if (tooltip) {\r\n this._tooltipX = true;\r\n this._disposers.push(tooltip.on(\"pointTo\", () => {\r\n this._updateXLine(tooltip);\r\n }));\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"yAxis\")) {\r\n this._tooltipY = false;\r\n const yAxis = this.get(\"yAxis\");\r\n if (yAxis) {\r\n const tooltip = yAxis.get(\"tooltip\");\r\n if (tooltip) {\r\n this._tooltipY = true;\r\n this._disposers.push(tooltip.on(\"pointTo\", () => {\r\n this._updateYLine(tooltip);\r\n }));\r\n }\r\n }\r\n }\r\n }\r\n _handleSyncWith() {\r\n const chart = this.chart;\r\n if (chart) {\r\n const syncWith = this.get(\"syncWith\");\r\n const otherCharts = [];\r\n if (syncWith) {\r\n $array.each(syncWith, (cursor) => {\r\n const chart = cursor.chart;\r\n if (chart) {\r\n otherCharts.push(chart);\r\n }\r\n });\r\n }\r\n chart._otherCharts = otherCharts;\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n this._handleSyncWith();\r\n if (this.isDirty(\"positionX\") || this.isDirty(\"positionY\")) {\r\n const positionX = this.get(\"positionX\");\r\n const positionY = this.get(\"positionY\");\r\n if (positionX == null && positionY == null) {\r\n this.hide(0);\r\n }\r\n else {\r\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\r\n this.handleMove();\r\n }\r\n }\r\n }\r\n _updateXLine(tooltip) {\r\n let x = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", { x: 0, y: 0 })).x, 3);\r\n if (this._toX != x) {\r\n this.lineX.animate({ key: \"x\", to: x, duration: tooltip.get(\"animationDuration\", 0), easing: tooltip.get(\"animationEasing\") });\r\n this._toX = x;\r\n }\r\n }\r\n _updateYLine(tooltip) {\r\n let y = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", { x: 0, y: 0 })).y, 3);\r\n if (this._toY != y) {\r\n this.lineY.animate({ key: \"y\", to: y, duration: tooltip.get(\"animationDuration\", 0), easing: tooltip.get(\"animationEasing\") });\r\n this._toY = y;\r\n }\r\n }\r\n _drawLines() {\r\n this.lineX.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, this.height());\r\n });\r\n this.lineY.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(this.width(), 0);\r\n });\r\n }\r\n updateCursor() {\r\n if (this.get(\"alwaysShow\")) {\r\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\r\n }\r\n this.handleMove();\r\n }\r\n _setChart(chart) {\r\n this.chart = chart;\r\n this._handleSyncWith();\r\n const plotContainer = chart.plotContainer;\r\n this.events.on(\"boundschanged\", () => {\r\n this._disposers.push(this.setTimeout(() => {\r\n this.updateCursor();\r\n }, 50));\r\n });\r\n //this._display.interactive = true;\r\n if ($utils.supports(\"touchevents\")) {\r\n this._disposers.push(plotContainer.events.on(\"click\", (event) => {\r\n if ($utils.isTouchEvent(event.originalEvent)) {\r\n this._handleMove(event);\r\n }\r\n }));\r\n this._setUpTouch();\r\n }\r\n this._disposers.push(plotContainer.events.on(\"pointerdown\", (event) => {\r\n this._handleCursorDown(event);\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", (event) => {\r\n this._handleCursorUp(event);\r\n if (!event.native && !this.isHidden()) {\r\n this._handleMove(event);\r\n }\r\n }));\r\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", (event) => {\r\n if (!this.get(\"syncWith\")) {\r\n if ($object.keys(plotContainer._downPoints).length == 0 && !event.native && this.isHidden()) {\r\n // Ignore mouse movement if it originates on outside element and\r\n // we're not dragging.\r\n return;\r\n }\r\n }\r\n this._handleMove(event);\r\n if (Math.hypot(this._lastPoint2.x - event.point.x, this._lastPoint2.y - event.point.y) > 1) {\r\n this._handleLineBlur();\r\n this._lastPoint2 = event.point;\r\n }\r\n }));\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this.selection);\r\n }\r\n }\r\n _inPlot(point) {\r\n const chart = this.chart;\r\n if (chart) {\r\n return chart.inPlot(point);\r\n }\r\n return false;\r\n }\r\n _handleCursorDown(event) {\r\n if (event.originalEvent.button == 2) {\r\n return;\r\n }\r\n const rootPoint = event.point;\r\n let local = this._display.toLocal(rootPoint);\r\n const chart = this.chart;\r\n this.selection.set(\"draw\", () => { });\r\n if (chart && this._inPlot(local)) {\r\n this._downPoint = local;\r\n if (this.get(\"behavior\") != \"none\") {\r\n this.selection.show();\r\n const type = \"selectstarted\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n let positionX = this._getPosition(local).x;\r\n let positionY = this._getPosition(local).y;\r\n this.setPrivate(\"downPositionX\", positionX);\r\n this.setPrivate(\"downPositionY\", positionY);\r\n }\r\n }\r\n _handleCursorUp(event) {\r\n // TODO: handle multitouch\r\n if (this._downPoint) {\r\n const behavior = this.get(\"behavior\", \"none\");\r\n if (behavior != \"none\") {\r\n if (behavior.charAt(0) === \"z\") {\r\n this.selection.hide();\r\n }\r\n const rootPoint = event.point;\r\n let local = this._display.toLocal(rootPoint);\r\n const downPoint = this._downPoint;\r\n const moveThreshold = this.get(\"moveThreshold\", 1);\r\n if (local && downPoint) {\r\n let dispatch = false;\r\n if (behavior === \"zoomX\" || behavior === \"zoomXY\" || behavior === \"selectX\" || behavior === \"selectXY\") {\r\n if (Math.abs(local.x - downPoint.x) > moveThreshold) {\r\n dispatch = true;\r\n }\r\n }\r\n if (behavior === \"zoomY\" || behavior === \"zoomXY\" || behavior === \"selectY\" || behavior === \"selectXY\") {\r\n if (Math.abs(local.y - downPoint.y) > moveThreshold) {\r\n dispatch = true;\r\n }\r\n }\r\n if (dispatch) {\r\n const type = \"selectended\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n else {\r\n const type = \"selectcancelled\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, originalEvent: event.originalEvent });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this._downPoint = undefined;\r\n }\r\n _handleMove(event) {\r\n if (this.getPrivate(\"visible\")) {\r\n const chart = this.chart;\r\n if (chart && $object.keys(chart.plotContainer._downPoints).length > 1) {\r\n this.set(\"forceHidden\", true);\r\n return;\r\n }\r\n else {\r\n this.set(\"forceHidden\", false);\r\n }\r\n // TODO: handle multitouch\r\n const rootPoint = event.point;\r\n const lastPoint = this._lastPoint;\r\n if (Math.round(lastPoint.x) === Math.round(rootPoint.x) && Math.round(lastPoint.y) === Math.round(rootPoint.y)) {\r\n return;\r\n }\r\n this._lastPoint = rootPoint;\r\n this.setPrivate(\"lastPoint\", rootPoint);\r\n this.handleMove({ x: rootPoint.x, y: rootPoint.y }, false, event.originalEvent);\r\n }\r\n }\r\n _getPosition(point) {\r\n return { x: point.x / this.width(), y: point.y / this.height() };\r\n }\r\n /**\r\n * Moves the cursor to X/Y coordinates within chart container (`point`).\r\n *\r\n * If `skipEvent` parameter is set to `true`, the move will not invoke\r\n * the `\"cursormoved\"` event.\r\n *\r\n * @param point X/Y to move cursor to\r\n * @param skipEvent Do not fire \"cursormoved\" event\r\n */\r\n handleMove(point, skipEvent, originalEvent) {\r\n if (!point) {\r\n point = this._movePoint;\r\n }\r\n const alwaysShow = this.get(\"alwaysShow\");\r\n if (!point) {\r\n this.hide(0);\r\n return;\r\n }\r\n this._movePoint = point;\r\n let local = this._display.toLocal(point);\r\n let chart = this.chart;\r\n if (chart && (this._inPlot(local) || this._downPoint)) {\r\n chart._movePoint = point;\r\n if (this.isHidden()) {\r\n this.show();\r\n const behavior = this.get(\"behavior\", \"\");\r\n if (behavior.charAt(0) == \"z\") {\r\n this.selection.set(\"draw\", () => { });\r\n }\r\n }\r\n let x = local.x;\r\n let y = local.y;\r\n let xyPos = this._getPosition(local);\r\n this.setPrivate(\"point\", local);\r\n let snapToSeries = this.get(\"snapToSeries\");\r\n if (this._downPoint) {\r\n snapToSeries = undefined;\r\n }\r\n let userPositionX = this.get(\"positionX\");\r\n let positionX = xyPos.x;\r\n if ($type.isNumber(userPositionX)) {\r\n positionX = userPositionX;\r\n }\r\n let userPositionY = this.get(\"positionY\");\r\n let positionY = xyPos.y;\r\n if ($type.isNumber(userPositionY)) {\r\n positionY = userPositionY;\r\n }\r\n this.setPrivate(\"positionX\", positionX);\r\n this.setPrivate(\"positionY\", positionY);\r\n const xy = this._getPoint(positionX, positionY);\r\n x = xy.x;\r\n y = xy.y;\r\n chart.xAxes.each((axis) => {\r\n axis._handleCursorPosition(positionX, snapToSeries);\r\n if (alwaysShow) {\r\n axis.handleCursorShow();\r\n }\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis._handleCursorPosition(positionY, snapToSeries);\r\n if (alwaysShow) {\r\n axis.handleCursorShow();\r\n }\r\n });\r\n if (!skipEvent) {\r\n chart._handleCursorPosition();\r\n const type = \"cursormoved\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, point: point, originalEvent: originalEvent });\r\n }\r\n }\r\n this._updateLines(x, y);\r\n chart.arrangeTooltips();\r\n }\r\n else if (!this._downPoint) {\r\n if (!alwaysShow) {\r\n this.hide(0);\r\n const type = \"cursorhidden\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n }\r\n }\r\n if (this._downPoint && this.get(\"behavior\") != \"none\") {\r\n this._updateSelection(local);\r\n }\r\n }\r\n _getPoint(positionX, positionY) {\r\n return { x: this.width() * positionX, y: this.height() * positionY };\r\n }\r\n _updateLines(x, y) {\r\n if (!this._tooltipX) {\r\n this.lineX.set(\"x\", x);\r\n }\r\n if (!this._tooltipY) {\r\n this.lineY.set(\"y\", y);\r\n }\r\n this._drawLines();\r\n }\r\n _updateSelection(point) {\r\n const selection = this.selection;\r\n const behavior = this.get(\"behavior\");\r\n const w = this.width();\r\n const h = this.height();\r\n if (point.x < 0) {\r\n point.x = 0;\r\n }\r\n if (point.x > w) {\r\n point.x = w;\r\n }\r\n if (point.y < 0) {\r\n point.y = 0;\r\n }\r\n if (point.y > h) {\r\n point.y = h;\r\n }\r\n selection.set(\"draw\", (display) => {\r\n const downPoint = this._downPoint;\r\n if (downPoint) {\r\n if (behavior === \"zoomXY\" || behavior === \"selectXY\") {\r\n display.moveTo(downPoint.x, downPoint.y);\r\n display.lineTo(downPoint.x, point.y);\r\n display.lineTo(point.x, point.y);\r\n display.lineTo(point.x, downPoint.y);\r\n display.lineTo(downPoint.x, downPoint.y);\r\n }\r\n else if (behavior === \"zoomX\" || behavior === \"selectX\") {\r\n display.moveTo(downPoint.x, 0);\r\n display.lineTo(downPoint.x, h);\r\n display.lineTo(point.x, h);\r\n display.lineTo(point.x, 0);\r\n display.lineTo(downPoint.x, 0);\r\n }\r\n else if (behavior === \"zoomY\" || behavior === \"selectY\") {\r\n display.moveTo(0, downPoint.y);\r\n display.lineTo(w, downPoint.y);\r\n display.lineTo(w, point.y);\r\n display.lineTo(0, point.y);\r\n display.lineTo(0, downPoint.y);\r\n }\r\n }\r\n });\r\n }\r\n _onHide() {\r\n if (this.isHidden()) {\r\n let chart = this.chart;\r\n if (chart) {\r\n chart.xAxes.each((axis) => {\r\n axis.handleCursorHide();\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis.handleCursorHide();\r\n });\r\n chart.series.each((series) => {\r\n series.handleCursorHide();\r\n });\r\n }\r\n }\r\n super._onHide();\r\n }\r\n _onShow() {\r\n if (!this.isHidden()) {\r\n let chart = this.chart;\r\n if (chart) {\r\n chart.xAxes.each((axis) => {\r\n axis.handleCursorShow();\r\n });\r\n chart.yAxes.each((axis) => {\r\n axis.handleCursorShow();\r\n });\r\n }\r\n }\r\n super._onShow();\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this.selection.dispose();\r\n }\r\n}\r\nObject.defineProperty(XYCursor, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYCursor\"\r\n});\r\nObject.defineProperty(XYCursor, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([XYCursor.className])\r\n});\r\n//# sourceMappingURL=XYCursor.js.map","import { Tick } from \"../../../core/render/Tick\";\r\n/**\r\n * Draws an axis tick.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Ticks} for more info\r\n * @important\r\n */\r\nexport class AxisTick extends Tick {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_tickPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\nObject.defineProperty(AxisTick, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisTick\"\r\n});\r\nObject.defineProperty(AxisTick, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Tick.classNames.concat([AxisTick.className])\r\n});\r\n//# sourceMappingURL=AxisTick.js.map","import { Label } from \"../../../core/render/Label\";\r\n/**\r\n * Draws an axis label.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Labels} for more info\r\n * @important\r\n */\r\nexport class AxisLabel extends Label {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_tickPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n}\r\nObject.defineProperty(AxisLabel, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisLabel\"\r\n});\r\nObject.defineProperty(AxisLabel, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Label.classNames.concat([AxisLabel.className])\r\n});\r\n//# sourceMappingURL=AxisLabel.js.map","import { Graphics } from \"../../../core/render/Graphics\";\r\nimport { Template } from \"../../../core/util/Template\";\r\nimport { ListTemplate } from \"../../../core/util/List\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * Base class for an axis renderer.\r\n *\r\n * Should not be used on its own.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n */\r\nexport class AxisRenderer extends Graphics {\r\n constructor() {\r\n super(...arguments);\r\n // save for quick access\r\n Object.defineProperty(this, \"_axisLength\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 100\r\n });\r\n Object.defineProperty(this, \"_start\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_end\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_inversed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_minSize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n /**\r\n * Chart the renderer is used in.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_lc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_ls\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_thumbDownPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downStart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downEnd\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A list of ticks in the axis.\r\n *\r\n * `ticks.template` can be used to configure ticks.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"ticks\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => AxisTick._new(this._root, {\r\n themeTags: $utils.mergeTags(this.ticks.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.ticks.template])))\r\n });\r\n /**\r\n * A list of grid elements in the axis.\r\n *\r\n * `grid.template` can be used to configure grid.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"grid\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Grid._new(this._root, {\r\n themeTags: $utils.mergeTags(this.grid.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.grid.template])))\r\n });\r\n /**\r\n * A list of fills in the axis.\r\n *\r\n * `axisFills.template` can be used to configure axis fills.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"axisFills\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\r\n themeTags: $utils.mergeTags(this.axisFills.template.get(\"themeTags\", [\"axis\", \"fill\"]), this.get(\"themeTags\", []))\r\n }, [this.axisFills.template])))\r\n });\r\n /**\r\n * A list of labels in the axis.\r\n *\r\n * `labels.template` can be used to configure axis labels.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"labels\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => AxisLabel._new(this._root, {\r\n themeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\r\n }, [this.labels.template])))\r\n });\r\n /**\r\n * An [[Axis]] renderer is for.\r\n */\r\n Object.defineProperty(this, \"axis\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A thumb Graphics to be used for panning the axis (the one which shows under the labels when hovered)\r\n */\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeTick(dataItem, themeTags) {\r\n const tick = this.ticks.make();\r\n tick._setDataItem(dataItem);\r\n dataItem.setRaw(\"tick\", tick);\r\n tick.set(\"themeTags\", $utils.mergeTags(tick.get(\"themeTags\"), themeTags));\r\n this.axis.labelsContainer.children.push(tick);\r\n this.ticks.push(tick);\r\n return tick;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeGrid(dataItem, themeTags) {\r\n const grid = this.grid.make();\r\n grid._setDataItem(dataItem);\r\n dataItem.setRaw(\"grid\", grid);\r\n grid.set(\"themeTags\", $utils.mergeTags(grid.get(\"themeTags\"), themeTags));\r\n this.axis.gridContainer.children.push(grid);\r\n this.grid.push(grid);\r\n return grid;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeAxisFill(dataItem, themeTags) {\r\n const axisFill = this.axisFills.make();\r\n axisFill._setDataItem(dataItem);\r\n axisFill.set(\"themeTags\", $utils.mergeTags(axisFill.get(\"themeTags\"), themeTags));\r\n this.axis.gridContainer.children.push(axisFill);\r\n dataItem.setRaw(\"axisFill\", axisFill);\r\n this.axisFills.push(axisFill);\r\n return axisFill;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeLabel(dataItem, themeTags) {\r\n const label = this.labels.make();\r\n label.set(\"themeTags\", $utils.mergeTags(label.get(\"themeTags\"), themeTags));\r\n this.axis.labelsContainer.children.moveValue(label, 0);\r\n label._setDataItem(dataItem);\r\n dataItem.setRaw(\"label\", label);\r\n this.labels.push(label);\r\n return label;\r\n }\r\n axisLength() {\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n gridCount() {\r\n return this.axisLength() / this.get(\"minGridDistance\", 50);\r\n }\r\n _updatePositions() {\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this.set(\"isMeasured\", false);\r\n const thumb = this.thumb;\r\n if (thumb) {\r\n this._disposers.push(thumb.events.on(\"pointerdown\", (event) => {\r\n this._handleThumbDown(event);\r\n }));\r\n this._disposers.push(thumb.events.on(\"globalpointerup\", (event) => {\r\n this._handleThumbUp(event);\r\n }));\r\n this._disposers.push(thumb.events.on(\"globalpointermove\", (event) => {\r\n this._handleThumbMove(event);\r\n }));\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"minGridDistance\")) {\r\n this.root.events.once(\"frameended\", () => {\r\n this.axis.markDirtySize();\r\n });\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"pan\")) {\r\n const thumb = this.thumb;\r\n if (thumb) {\r\n const labelsContainer = this.axis.labelsContainer;\r\n const pan = this.get(\"pan\");\r\n if (pan == \"zoom\") {\r\n labelsContainer.children.push(thumb);\r\n }\r\n else if (pan == \"none\") {\r\n labelsContainer.children.removeValue(thumb);\r\n }\r\n }\r\n }\r\n }\r\n _handleThumbDown(event) {\r\n this._thumbDownPoint = this.toLocal(event.point);\r\n const axis = this.axis;\r\n this._downStart = axis.get(\"start\");\r\n this._downEnd = axis.get(\"end\");\r\n }\r\n _handleThumbUp(_event) {\r\n this._thumbDownPoint = undefined;\r\n }\r\n _handleThumbMove(event) {\r\n const downPoint = this._thumbDownPoint;\r\n if (downPoint) {\r\n const point = this.toLocal(event.point);\r\n const downStart = this._downStart;\r\n const downEnd = this._downEnd;\r\n const extra = this._getPan(point, downPoint) * Math.min(1, (downEnd - downStart)) / 2 * this.get(\"panSensitivity\", 1);\r\n this.axis.zoom(downStart - extra, downEnd + extra, 0);\r\n }\r\n }\r\n _getPan(_point1, _point2) {\r\n return 0;\r\n }\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n positionToCoordinate(position) {\r\n if (this._inversed) {\r\n return (this._end - position) * this._axisLength;\r\n }\r\n else {\r\n return (position - this._start) * this._axisLength;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(_tooltip) { }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position = position * (end - start);\r\n if (!this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (!this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start);\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n if (this.get(\"inversed\")) {\r\n return 1 - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n }\r\n toggleVisibility(sprite, position, minPosition, maxPosition) {\r\n let axis = this.axis;\r\n const start = axis.get(\"start\", 0);\r\n const end = axis.get(\"end\", 1);\r\n let updatedStart = start + (end - start) * (minPosition - 0.0001);\r\n let updatedEnd = start + (end - start) * (maxPosition + 0.0001);\r\n if (position < updatedStart || position > updatedEnd) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n else {\r\n sprite.setPrivate(\"visible\", true);\r\n }\r\n }\r\n _positionTooltip(tooltip, point) {\r\n const chart = this.chart;\r\n if (chart) {\r\n tooltip.set(\"pointTo\", this._display.toGlobal(point));\r\n if (!chart.inPlot(point)) {\r\n tooltip.hide();\r\n }\r\n }\r\n }\r\n processAxis() { }\r\n}\r\nObject.defineProperty(AxisRenderer, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRenderer\"\r\n});\r\nObject.defineProperty(AxisRenderer, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([AxisRenderer.className])\r\n});\r\n//# sourceMappingURL=AxisRenderer.js.map","import { AxisRenderer } from \"./AxisRenderer\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\n/**\r\n * Used to render horizontal axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\r\nexport class AxisRendererX extends AxisRenderer {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.new(this._root, { width: p100, isMeasured: false, themeTags: [\"axis\", \"x\", \"thumb\"] })\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"x\"]);\r\n super._afterNew();\r\n this.setPrivateRaw(\"letter\", \"X\");\r\n const gridTemplate = this.grid.template;\r\n gridTemplate.set(\"height\", p100);\r\n gridTemplate.set(\"width\", 0);\r\n gridTemplate.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, graphics.height());\r\n });\r\n this.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(graphics.width(), 0);\r\n });\r\n }\r\n _changed() {\r\n super._changed();\r\n const axis = this.axis;\r\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\r\n axis.ghostLabel.set(\"x\", -1000);\r\n const opposite = \"opposite\";\r\n const inside = \"inside\";\r\n if (this.isDirty(opposite) || this.isDirty(inside)) {\r\n const chart = this.chart;\r\n const axisChildren = axis.children;\r\n if (this.get(inside)) {\r\n axis.addTag(inside);\r\n }\r\n else {\r\n axis.removeTag(inside);\r\n }\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n const children = chart.topAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.insertIndex(0, axis);\r\n }\r\n axis.addTag(opposite);\r\n axisChildren.moveValue(this);\r\n }\r\n else {\r\n const children = chart.bottomAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis);\r\n }\r\n axis.removeTag(opposite);\r\n axisChildren.moveValue(this, 0);\r\n }\r\n axis.ghostLabel._applyThemes();\r\n this.labels.each((label) => {\r\n label._applyThemes();\r\n });\r\n this.root._markDirtyRedraw();\r\n }\r\n axis.markDirtySize();\r\n }\r\n this.thumb.setPrivate(\"height\", axis.labelsContainer.height());\r\n }\r\n _getPan(point1, point2) {\r\n return (point2.x - point1.x) / this.width();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position -= this._ls;\r\n position = position * (end - start) / this._lc;\r\n if (!this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (!this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start) * this._lc;\r\n position += this._ls;\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n const axis = this.axis;\r\n const parent = axis.parent;\r\n if (parent) {\r\n const w = parent.innerWidth();\r\n this._lc = this.axisLength() / w;\r\n this._ls = (axis.x() - parent.get(\"paddingLeft\", 0)) / w;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updatePositions() {\r\n const axis = this.axis;\r\n const x = axis.x() - $utils.relativeToValue(axis.get(\"centerX\", 0), axis.width()) - axis.parent.get(\"paddingLeft\", 0);\r\n axis.gridContainer.set(\"x\", x);\r\n axis.topGridContainer.set(\"x\", x);\r\n axis.bulletsContainer.set(\"y\", this.y());\r\n const chart = axis.chart;\r\n if (chart) {\r\n const plotContainer = chart.plotContainer;\r\n const axisHeader = axis.axisHeader;\r\n let width = axis.get(\"marginLeft\", 0);\r\n let x = axis.x() - width;\r\n const parent = axis.parent;\r\n if (parent) {\r\n x -= parent.get(\"paddingLeft\", 0);\r\n }\r\n if (axisHeader.children.length > 0) {\r\n width = axis.axisHeader.width();\r\n axis.set(\"marginLeft\", width + 1);\r\n }\r\n else {\r\n axisHeader.set(\"width\", width);\r\n }\r\n axisHeader.setAll({ x: x, y: -1, height: plotContainer.height() + 2 });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis() {\r\n super.processAxis();\r\n const axis = this.axis;\r\n if (axis.get(\"width\") == null) {\r\n axis.set(\"width\", p100);\r\n }\r\n ;\r\n const verticalLayout = this._root.verticalLayout;\r\n axis.set(\"layout\", verticalLayout);\r\n axis.labelsContainer.set(\"width\", p100);\r\n axis.axisHeader.setAll({ layout: verticalLayout });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n axisLength() {\r\n return this.axis.width();\r\n }\r\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\r\n positionToPoint(position) {\r\n return { x: this.positionToCoordinate(position), y: 0 };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTick(tick, position, endPosition, count) {\r\n if (tick) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = tick.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = tick.get(\"location\", location);\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n tick.set(\"x\", this.positionToCoordinate(position));\r\n let length = tick.get(\"length\", 0);\r\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\r\n if (this.get(\"opposite\")) {\r\n tick.set(\"y\", p100);\r\n if (!inside) {\r\n length *= -1;\r\n }\r\n }\r\n else {\r\n tick.set(\"y\", 0);\r\n if (inside) {\r\n length *= -1;\r\n }\r\n }\r\n tick.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, length);\r\n });\r\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLabel(label, position, endPosition, count) {\r\n if (label) {\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = label.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = label.get(\"location\", location);\r\n }\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n const inside = label.get(\"inside\", this.get(\"inside\", false));\r\n const opposite = this.get(\"opposite\");\r\n if (opposite) {\r\n if (!inside) {\r\n label.set(\"position\", \"relative\");\r\n label.set(\"y\", p100);\r\n }\r\n else {\r\n label.set(\"position\", \"absolute\");\r\n label.set(\"y\", 0);\r\n }\r\n }\r\n else {\r\n if (!inside) {\r\n label.set(\"y\", undefined);\r\n label.set(\"position\", \"relative\");\r\n }\r\n else {\r\n label.set(\"y\", 0);\r\n label.set(\"position\", \"absolute\");\r\n }\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n label.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateGrid(grid, position, endPosition) {\r\n if (grid) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = grid.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n grid.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(grid, position, 0, 1);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateBullet(bullet, position, endPosition) {\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = bullet.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n let bulletPosition = this.axis.roundAxisPosition(position, location);\r\n let previousBullet = this.axis._bullets[bulletPosition];\r\n let d = -1;\r\n if (this.get(\"opposite\")) {\r\n d = 1;\r\n }\r\n if (bullet.get(\"stacked\")) {\r\n if (previousBullet) {\r\n let previousSprite = previousBullet.get(\"sprite\");\r\n if (previousSprite) {\r\n sprite.set(\"y\", previousSprite.y() + previousSprite.height() * d);\r\n }\r\n }\r\n else {\r\n sprite.set(\"y\", 0);\r\n }\r\n }\r\n this.axis._bullets[bulletPosition] = bullet;\r\n sprite.set(\"x\", this.positionToCoordinate(position));\r\n this.toggleVisibility(sprite, position, 0, 1);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateFill(fill, position, endPosition) {\r\n if (fill) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (!$type.isNumber(endPosition)) {\r\n endPosition = 1;\r\n }\r\n let x0 = this.positionToCoordinate(position);\r\n let x1 = this.positionToCoordinate(endPosition);\r\n this.fillDrawMethod(fill, x0, x1);\r\n }\r\n }\r\n fillDrawMethod(fill, x0, x1) {\r\n fill.set(\"draw\", (display) => {\r\n //display.drawRect(x0, 0, x1 - x0, this.axis!.gridContainer.height());\r\n // using for holes, so can not be rectangle\r\n const h = this.axis.gridContainer.height();\r\n const w = this.width();\r\n if (x1 < x0) {\r\n [x1, x0] = [x0, x1];\r\n }\r\n if (x0 > w || x1 < 0) {\r\n return;\r\n }\r\n /*\r\n const limit = 10000;\r\n\r\n x0 = Math.max(-limit, x0);\r\n x1 = Math.min(limit, x1);\r\n */\r\n display.moveTo(x0, 0);\r\n display.lineTo(x1, 0);\r\n display.lineTo(x1, h);\r\n display.lineTo(x0, h);\r\n display.lineTo(x0, 0);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n positionTooltip(tooltip, position) {\r\n this._positionTooltip(tooltip, { x: this.positionToCoordinate(position), y: 0 });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(tooltip) {\r\n const inside = this.get(\"inside\");\r\n const num = 100000;\r\n let global = this._display.toGlobal({ x: 0, y: 0 });\r\n let x = global.x;\r\n let y = 0;\r\n let w = this.axisLength();\r\n let h = num;\r\n let pointerOrientation = \"up\";\r\n if (this.get(\"opposite\")) {\r\n if (inside) {\r\n pointerOrientation = \"up\";\r\n y = global.y;\r\n h = num;\r\n }\r\n else {\r\n pointerOrientation = \"down\";\r\n y = global.y - num;\r\n h = num;\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n pointerOrientation = \"down\";\r\n y = global.y - num;\r\n h = num;\r\n }\r\n else {\r\n pointerOrientation = \"up\";\r\n y = global.y;\r\n h = num;\r\n }\r\n }\r\n const bounds = { left: x, right: x + w, top: y, bottom: y + h };\r\n const oldBounds = tooltip.get(\"bounds\");\r\n if (!$utils.sameBounds(bounds, oldBounds)) {\r\n tooltip.set(\"bounds\", bounds);\r\n tooltip.set(\"pointerOrientation\", pointerOrientation);\r\n }\r\n }\r\n}\r\nObject.defineProperty(AxisRendererX, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRendererX\"\r\n});\r\nObject.defineProperty(AxisRendererX, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: AxisRenderer.classNames.concat([AxisRendererX.className])\r\n});\r\n//# sourceMappingURL=AxisRendererX.js.map","import { DataItem } from \"../../../core/render/Component\";\r\nimport { Component } from \"../../../core/render/Component\";\r\nimport { Container } from \"../../../core/render/Container\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport { List } from \"../../../core/util/List\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * A base class for all axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Adding_axes} for more info\r\n */\r\nexport class Axis extends Component {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_isPanning\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Array of minor data items.\r\n */\r\n Object.defineProperty(this, \"minorDataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis label elements.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"labelsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis grid and fill elements.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"gridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100 })\r\n });\r\n /**\r\n * A [[Container]] that holds axis grid elements which goes above the series.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"topGridContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.new(this._root, { width: p100, height: p100 })\r\n });\r\n /**\r\n * A [[Container]] that holds all the axis bullet elements.\r\n *\r\n * @default new Container\r\n */\r\n Object.defineProperty(this, \"bulletsContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, { isMeasured: false, width: p100, height: p100, position: \"absolute\" }))\r\n });\r\n /**\r\n * A referenece to the the chart the axis belongs to.\r\n */\r\n Object.defineProperty(this, \"chart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rangesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_panStart\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_panEnd\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_sAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_eAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_skipSync\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A list of axis ranges.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @default new List()\r\n */\r\n Object.defineProperty(this, \"axisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n Object.defineProperty(this, \"_seriesAxisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n /**\r\n * A control label that is invisible but is used to keep width the width of\r\n * the axis constant.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/#Ghost_label} for more info\r\n */\r\n Object.defineProperty(this, \"ghostLabel\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_cursorPosition\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: -1\r\n });\r\n Object.defineProperty(this, \"_snapToSeries\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_seriesValuesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_seriesAdded\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * A container above the axis that can be used to add additional stuff into\r\n * it. For example a legend, label, or an icon.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default new Container\r\n */\r\n Object.defineProperty(this, \"axisHeader\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {\r\n themeTags: [\"axis\", \"header\"],\r\n position: \"absolute\",\r\n background: Rectangle.new(this._root, {\r\n themeTags: [\"header\", \"background\"],\r\n fill: this._root.interfaceColors.get(\"background\")\r\n })\r\n }))\r\n });\r\n Object.defineProperty(this, \"_bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n _dispose() {\r\n // these could be in other parents, so disposing just in case\r\n this.gridContainer.dispose();\r\n this.topGridContainer.dispose();\r\n this.bulletsContainer.dispose();\r\n this.labelsContainer.dispose();\r\n this.axisHeader.dispose();\r\n super._dispose();\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this.setPrivate(\"updateScrollbar\", true);\r\n this._disposers.push(this.axisRanges.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (dataItem) => {\r\n this.disposeDataItem(dataItem);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._processAxisRange(change.newValue, [\"range\"]);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this.disposeDataItem(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._processAxisRange(change.value, [\"range\"]);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n }));\r\n const renderer = this.get(\"renderer\");\r\n if (renderer) {\r\n renderer.axis = this;\r\n renderer.processAxis();\r\n }\r\n this.children.push(renderer);\r\n this.ghostLabel = renderer.makeLabel(new DataItem(this, undefined, {}), []);\r\n this.ghostLabel.adapters.disable(\"text\");\r\n this.ghostLabel.setAll({ opacity: 0, tooltipText: undefined, tooltipHTML: undefined, interactive: false });\r\n this.ghostLabel.events.disable();\r\n }\r\n _updateFinals(_start, _end) {\r\n }\r\n /**\r\n * Zooms the axis to relative locations.\r\n *\r\n * Both `start` and `end` are relative: 0 means start of the axis, 1 - end.\r\n *\r\n * @param start Relative start\r\n * @param end Relative end\r\n * @param duration Duration of the zoom animation in milliseconds\r\n * @return Zoom animation\r\n */\r\n zoom(start, end, duration, priority) {\r\n if (this.get(\"zoomable\", true)) {\r\n this._updateFinals(start, end);\r\n if (this.get(\"start\") !== start || this.get(\"end\") != end) {\r\n let sAnimation = this._sAnimation;\r\n let eAnimation = this._eAnimation;\r\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, (end - start));\r\n if (start < -maxDeviation) {\r\n start = -maxDeviation;\r\n }\r\n if (end > 1 + maxDeviation) {\r\n end = 1 + maxDeviation;\r\n }\r\n if (start > end) {\r\n [start, end] = [end, start];\r\n }\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"interpolationDuration\", 0);\r\n }\r\n if (!priority) {\r\n priority = \"end\";\r\n }\r\n let maxZoomFactor = this.getPrivate(\"maxZoomFactor\", this.get(\"maxZoomFactor\", 100));\r\n let maxZoomFactorReal = maxZoomFactor;\r\n if (end === 1 && start !== 0) {\r\n if (start < this.get(\"start\", 0)) {\r\n priority = \"start\";\r\n }\r\n else {\r\n priority = \"end\";\r\n }\r\n }\r\n if (start === 0 && end !== 1) {\r\n if (end > this.get(\"end\", 1)) {\r\n priority = \"end\";\r\n }\r\n else {\r\n priority = \"start\";\r\n }\r\n }\r\n let minZoomCount = this.get(\"minZoomCount\", 0);\r\n let maxZoomCount = this.get(\"maxZoomCount\", Infinity);\r\n if ($type.isNumber(minZoomCount)) {\r\n maxZoomFactor = maxZoomFactorReal / minZoomCount;\r\n }\r\n let minZoomFactor = 1;\r\n if ($type.isNumber(maxZoomCount)) {\r\n minZoomFactor = maxZoomFactorReal / maxZoomCount;\r\n }\r\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n if (priority === \"start\") {\r\n if (maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n end = start + 1 / minZoomFactor;\r\n }\r\n }\r\n // add to the end\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n //unless end is > 0\r\n if (end > 1 && end - start < 1 / maxZoomFactor) {\r\n //end = 1;\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n }\r\n // most likely we are dragging right, so we modify left\r\n else {\r\n if (maxZoomCount > 0) {\r\n // add to the end\r\n if (1 / (end - start) < minZoomFactor) {\r\n start = end - 1 / minZoomFactor;\r\n }\r\n }\r\n // remove from start\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n if (start < 0 && end - start < 1 / maxZoomFactor) {\r\n //start = 0;\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n end = start + 1 / maxZoomFactor;\r\n }\r\n if (1 / (end - start) > maxZoomFactor) {\r\n start = end - 1 / maxZoomFactor;\r\n }\r\n if (maxZoomCount != null && minZoomCount != null && (start == this.get(\"start\") && end == this.get(\"end\"))) {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._handleAxisSelection(this, true);\r\n }\r\n }\r\n if (((sAnimation && sAnimation.playing && sAnimation.to == start) || this.get(\"start\") == start) && ((eAnimation && eAnimation.playing && eAnimation.to == end) || this.get(\"end\") == end)) {\r\n return;\r\n }\r\n if (duration > 0) {\r\n let easing = this.get(\"interpolationEasing\");\r\n let sAnimation, eAnimation;\r\n if (this.get(\"start\") != start) {\r\n sAnimation = this.animate({ key: \"start\", to: start, duration: duration, easing: easing });\r\n }\r\n if (this.get(\"end\") != end) {\r\n eAnimation = this.animate({ key: \"end\", to: end, duration: duration, easing: easing });\r\n }\r\n this._sAnimation = sAnimation;\r\n this._eAnimation = eAnimation;\r\n if (sAnimation) {\r\n return sAnimation;\r\n }\r\n else if (eAnimation) {\r\n return eAnimation;\r\n }\r\n }\r\n else {\r\n this.set(\"start\", start);\r\n this.set(\"end\", end);\r\n }\r\n }\r\n else {\r\n if (this._sAnimation) {\r\n this._sAnimation.stop();\r\n }\r\n if (this._eAnimation) {\r\n this._eAnimation.stop();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * A list of series using this axis.\r\n *\r\n * @return Series\r\n */\r\n get series() {\r\n return this._series;\r\n }\r\n _processAxisRange(dataItem, themeTags) {\r\n dataItem.setRaw(\"isRange\", true);\r\n this._createAssets(dataItem, themeTags);\r\n this._rangesDirty = true;\r\n this._prepareDataItem(dataItem);\r\n const above = dataItem.get(\"above\");\r\n const container = this.topGridContainer;\r\n const grid = dataItem.get(\"grid\");\r\n if (above && grid) {\r\n container.children.moveValue(grid);\r\n }\r\n const fill = dataItem.get(\"axisFill\");\r\n if (above && fill) {\r\n container.children.moveValue(fill);\r\n }\r\n }\r\n _prepareDataItem(_dataItem, _index) { }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyExtremes() {\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySelectionExtremes() {\r\n }\r\n _calculateTotals() {\r\n }\r\n _updateAxisRanges() {\r\n this._bullets = {};\r\n this.axisRanges.each((axisRange) => {\r\n this._prepareDataItem(axisRange);\r\n });\r\n $array.each(this._seriesAxisRanges, (axisRange) => {\r\n this._prepareDataItem(axisRange);\r\n });\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.get(\"fixAxisSize\")) {\r\n this.ghostLabel.set(\"visible\", true);\r\n }\r\n else {\r\n this.ghostLabel.set(\"visible\", false);\r\n }\r\n if (this.isDirty(\"start\") || this.isDirty(\"end\")) {\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._updateCursor();\r\n }\r\n let start = this.get(\"start\", 0);\r\n let end = this.get(\"end\", 1);\r\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, (end - start));\r\n if (start < -maxDeviation) {\r\n let delta = start + maxDeviation;\r\n start = -maxDeviation;\r\n this.setRaw(\"start\", start);\r\n if (this.isDirty(\"end\")) {\r\n this.setRaw(\"end\", end - delta);\r\n }\r\n }\r\n if (end > 1 + maxDeviation) {\r\n let delta = end - 1 - maxDeviation;\r\n end = 1 + maxDeviation;\r\n this.setRaw(\"end\", end);\r\n if (this.isDirty(\"start\")) {\r\n this.setRaw(\"start\", start - delta);\r\n }\r\n }\r\n }\r\n const renderer = this.get(\"renderer\");\r\n renderer._start = this.get(\"start\");\r\n renderer._end = this.get(\"end\");\r\n renderer._inversed = renderer.get(\"inversed\", false);\r\n renderer._axisLength = renderer.axisLength() / (renderer._end - renderer._start);\r\n renderer._updateLC();\r\n if (this.isDirty(\"tooltip\")) {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n const rendererTags = renderer.get(\"themeTags\");\r\n tooltip.addTag(\"axis\");\r\n tooltip.addTag(this.className.toLowerCase());\r\n tooltip._applyThemes();\r\n if (rendererTags) {\r\n tooltip.set(\"themeTags\", $utils.mergeTags(tooltip.get(\"themeTags\"), rendererTags));\r\n tooltip.label._applyThemes();\r\n }\r\n }\r\n }\r\n }\r\n _updateTooltipBounds() {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n this.get(\"renderer\").updateTooltipBounds(tooltip);\r\n }\r\n }\r\n _updateBounds() {\r\n super._updateBounds();\r\n this._updateTooltipBounds();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processChart(chart) {\r\n this.chart = chart;\r\n const renderer = this.get(\"renderer\");\r\n renderer.chart = chart;\r\n chart.gridContainer.children.push(this.gridContainer);\r\n chart.topGridContainer.children.push(this.topGridContainer);\r\n chart.axisHeadersContainer.children.push(this.axisHeader);\r\n this.on(\"start\", () => {\r\n chart._handleAxisSelection(this);\r\n });\r\n this.on(\"end\", () => {\r\n chart._handleAxisSelection(this);\r\n });\r\n chart.plotContainer.onPrivate(\"width\", () => {\r\n this.markDirtySize();\r\n });\r\n chart.plotContainer.onPrivate(\"height\", () => {\r\n this.markDirtySize();\r\n });\r\n chart.processAxis(this);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n hideDataItem(dataItem) {\r\n this._toggleFHDataItem(dataItem, true);\r\n return super.hideDataItem(dataItem);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n showDataItem(dataItem) {\r\n this._toggleFHDataItem(dataItem, false);\r\n return super.showDataItem(dataItem);\r\n }\r\n _toggleFHDataItem(dataItem, forceHidden) {\r\n const fh = \"forceHidden\";\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n label.set(fh, forceHidden);\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n grid.set(fh, forceHidden);\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n tick.set(fh, forceHidden);\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n axisFill.set(fh, forceHidden);\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.set(fh, forceHidden);\r\n }\r\n }\r\n }\r\n _toggleDataItem(dataItem, visible) {\r\n const label = dataItem.get(\"label\");\r\n const v = \"visible\";\r\n if (label) {\r\n label.setPrivate(v, visible);\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n grid.setPrivate(v, visible);\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n tick.setPrivate(v, visible);\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n axisFill.setPrivate(v, visible);\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(v, visible);\r\n }\r\n }\r\n }\r\n _createAssets(dataItem, tags, minor) {\r\n var _a, _b, _c;\r\n const renderer = this.get(\"renderer\");\r\n let m = \"minor\";\r\n const label = dataItem.get(\"label\");\r\n if (!label) {\r\n renderer.makeLabel(dataItem, tags);\r\n }\r\n else {\r\n let themeTags = label.get(\"themeTags\");\r\n let remove = false;\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_a = label.parent) === null || _a === void 0 ? void 0 : _a.children.removeValue(label);\r\n renderer.makeLabel(dataItem, tags);\r\n label.dispose();\r\n renderer.labels.removeValue(label);\r\n }\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (!grid) {\r\n renderer.makeGrid(dataItem, tags);\r\n }\r\n else {\r\n let themeTags = grid.get(\"themeTags\");\r\n let remove = false;\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_b = grid.parent) === null || _b === void 0 ? void 0 : _b.children.removeValue(grid);\r\n renderer.makeGrid(dataItem, tags);\r\n grid.dispose();\r\n renderer.grid.removeValue(grid);\r\n }\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (!tick) {\r\n renderer.makeTick(dataItem, tags);\r\n }\r\n else {\r\n let remove = false;\r\n let themeTags = tick.get(\"themeTags\");\r\n if (minor) {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\r\n remove = true;\r\n }\r\n }\r\n else {\r\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\r\n remove = true;\r\n }\r\n }\r\n if (remove) {\r\n (_c = tick.parent) === null || _c === void 0 ? void 0 : _c.children.removeValue(tick);\r\n renderer.makeTick(dataItem, tags);\r\n tick.dispose();\r\n renderer.ticks.removeValue(tick);\r\n }\r\n }\r\n if (!minor && !dataItem.get(\"axisFill\")) {\r\n renderer.makeAxisFill(dataItem, tags);\r\n }\r\n this._processBullet(dataItem);\r\n }\r\n _processBullet(dataItem) {\r\n let bullet = dataItem.get(\"bullet\");\r\n let axisBullet = this.get(\"bullet\");\r\n if (!bullet && axisBullet && !dataItem.get(\"isRange\")) {\r\n bullet = axisBullet(this._root, this, dataItem);\r\n }\r\n if (bullet) {\r\n bullet.axis = this;\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite._setDataItem(dataItem);\r\n dataItem.setRaw(\"bullet\", bullet);\r\n if (!sprite.parent) {\r\n this.bulletsContainer.children.push(sprite);\r\n }\r\n }\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n const chart = this.chart;\r\n if (chart) {\r\n chart._updateChartLayout();\r\n chart.axisHeadersContainer.markDirtySize();\r\n }\r\n this.get(\"renderer\")._updatePositions();\r\n this._seriesAdded = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n super.disposeDataItem(dataItem);\r\n const renderer = this.get(\"renderer\");\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n renderer.labels.removeValue(label);\r\n label.dispose();\r\n }\r\n const tick = dataItem.get(\"tick\");\r\n if (tick) {\r\n renderer.ticks.removeValue(tick);\r\n tick.dispose();\r\n }\r\n const grid = dataItem.get(\"grid\");\r\n if (grid) {\r\n renderer.grid.removeValue(grid);\r\n grid.dispose();\r\n }\r\n const axisFill = dataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n renderer.axisFills.removeValue(axisFill);\r\n axisFill.dispose();\r\n }\r\n const bullet = dataItem.get(\"bullet\");\r\n if (bullet) {\r\n bullet.dispose();\r\n }\r\n }\r\n _updateGhost() {\r\n this.setPrivate(\"cellWidth\", this.getCellWidthPosition() * this.get(\"renderer\").axisLength());\r\n const ghostLabel = this.ghostLabel;\r\n if (!ghostLabel.isHidden()) {\r\n const bounds = ghostLabel.localBounds();\r\n const gWidth = Math.ceil(bounds.right - bounds.left);\r\n let text = ghostLabel.get(\"text\");\r\n $array.each(this.dataItems, (dataItem) => {\r\n const label = dataItem.get(\"label\");\r\n if (label && !label.isHidden()) {\r\n const bounds = label.localBounds();\r\n const w = Math.ceil(bounds.right - bounds.left);\r\n if (w > gWidth) {\r\n text = label.text._getText();\r\n }\r\n }\r\n });\r\n ghostLabel.set(\"text\", text);\r\n }\r\n let start = this.get(\"start\", 0);\r\n let end = this.get(\"end\", 1);\r\n this.get(\"renderer\").updateLabel(ghostLabel, start + (end - start) * 0.5);\r\n }\r\n _handleCursorPosition(position, snapToSeries) {\r\n const renderer = this.get(\"renderer\");\r\n position = renderer.toAxisPosition(position);\r\n this._cursorPosition = position;\r\n this._snapToSeries = snapToSeries;\r\n this.updateTooltip();\r\n }\r\n /**\r\n * Can be called when axis zoom changes and you need to update tooltip\r\n * position.\r\n */\r\n updateTooltip() {\r\n const snapToSeries = this._snapToSeries;\r\n let position = this._cursorPosition;\r\n const tooltip = this.get(\"tooltip\");\r\n const renderer = this.get(\"renderer\");\r\n if ($type.isNumber(position)) {\r\n $array.each(this.series, (series) => {\r\n if (series.get(\"baseAxis\") === this) {\r\n const dataItem = this.getSeriesItem(series, position, this.get(\"tooltipLocation\"));\r\n if (snapToSeries && snapToSeries.indexOf(series) != -1) {\r\n series.updateLegendMarker(dataItem);\r\n series.updateLegendValue(dataItem);\r\n series._settings.tooltipDataItem = dataItem;\r\n }\r\n else {\r\n series.showDataItemTooltip(dataItem);\r\n series.setRaw(\"tooltipDataItem\", dataItem);\r\n }\r\n }\r\n });\r\n if (this.get(\"snapTooltip\")) {\r\n position = this.roundAxisPosition(position, this.get(\"tooltipLocation\", 0.5));\r\n }\r\n this.setPrivateRaw(\"tooltipPosition\", position);\r\n if (tooltip) {\r\n renderer.updateTooltipBounds(tooltip);\r\n if (!$type.isNaN(position)) {\r\n this._updateTooltipText(tooltip, position);\r\n renderer.positionTooltip(tooltip, position);\r\n if (position < this.get(\"start\", 0) || position > this.get(\"end\", 1)) {\r\n tooltip.hide(0);\r\n }\r\n else {\r\n tooltip.show(0);\r\n }\r\n }\r\n else {\r\n tooltip.hide(0);\r\n }\r\n }\r\n }\r\n }\r\n _updateTooltipText(tooltip, position) {\r\n tooltip.label.set(\"text\", this.getTooltipText(position));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n roundAxisPosition(position, _location) {\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorShow() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.show();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorHide() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.hide();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processSeriesDataItem(_dataItem, _fields) {\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._sizeDirty = false;\r\n this._rangesDirty = false;\r\n }\r\n /**\r\n * Converts pixel coordinate to a relative position on axis.\r\n *\r\n * @param coordinate Coordinate\r\n * @return Relative position\r\n */\r\n coordinateToPosition(coordinate) {\r\n const renderer = this.get(\"renderer\");\r\n return renderer.toAxisPosition(coordinate / renderer.axisLength());\r\n }\r\n /**\r\n * Converts relative position of the plot area to relative position of the\r\n * axis with zoom taken into account.\r\n *\r\n * @param position Position\r\n * @return Relative position\r\n */\r\n toAxisPosition(position) {\r\n return this.get(\"renderer\").toAxisPosition(position);\r\n }\r\n /**\r\n * Converts relative position of the axis to a global position taking current\r\n * zoom into account (opposite to what `toAxisPosition` does).\r\n *\r\n * @since 5.4.2\r\n * @param position Position\r\n * @return Global position\r\n */\r\n toGlobalPosition(position) {\r\n return this.get(\"renderer\").toGlobalPosition(position);\r\n }\r\n /**\r\n * Adjusts position with inversed taken into account.\r\n *\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n return this.get(\"renderer\").fixPosition(position);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n shouldGap(_dataItem, _nextItem, _autoGapCount, _fieldName) {\r\n return false;\r\n }\r\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\r\n createAxisRange(axisDataItem) {\r\n return this.axisRanges.push(axisDataItem);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _groupSeriesData(_series) { }\r\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n return 0.05;\r\n }\r\n}\r\nObject.defineProperty(Axis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Axis\"\r\n});\r\nObject.defineProperty(Axis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Component.classNames.concat([Axis.className])\r\n});\r\n//# sourceMappingURL=Axis.js.map","import { DataItem } from \"../../../core/render/Component\";\r\nimport { Axis } from \"./Axis\";\r\nimport { MultiDisposer } from \"../../../core/util/Disposer\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * Creates a value axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/} for more info\r\n * @important\r\n */\r\nexport class ValueAxis extends Axis {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_dirtyExtremes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dirtySelectionExtremes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dseHandled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_deltaMinMax\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_minReal\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_maxReal\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_minRealLog\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_baseValue\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_syncDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_minLogAdjusted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyExtremes() {\r\n this._dirtyExtremes = true;\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySelectionExtremes() {\r\n this._dirtySelectionExtremes = true;\r\n this.markDirty();\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\r\n this.setPrivateRaw(\"name\", \"value\");\r\n this.addTag(\"value\");\r\n super._afterNew();\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n if (this.isDirty(\"syncWithAxis\")) {\r\n let previousValue = this._prevSettings.syncWithAxis;\r\n if (previousValue) {\r\n if (this._syncDp) {\r\n this._syncDp.dispose();\r\n }\r\n }\r\n let syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n this._syncDp = new MultiDisposer([\r\n syncWithAxis.onPrivate(\"selectionMinFinal\", () => {\r\n this._dirtySelectionExtremes = true;\r\n }),\r\n syncWithAxis.onPrivate(\"selectionMaxFinal\", () => {\r\n this._dirtySelectionExtremes = true;\r\n })\r\n ]);\r\n }\r\n }\r\n let someDirty = false;\r\n if (this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"maxPrecision\") || this.isDirty(\"numberFormat\")) {\r\n someDirty = true;\r\n this.ghostLabel.set(\"text\", \"\");\r\n }\r\n //if (this._dirtyExtremes || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"maxPrecision\")) {\r\n if (this._sizeDirty || this._dirtyExtremes || this._valuesDirty || someDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"strictMinMaxSelection\")) {\r\n this._getMinMax();\r\n this._dirtyExtremes = false;\r\n }\r\n this._handleSizeDirty();\r\n if (this._dirtySelectionExtremes && !this._isPanning && this.get(\"autoZoom\", true)) {\r\n const chart = this.chart;\r\n let getMM = false;\r\n // #1563\r\n if (chart) {\r\n const letter = this.get(\"renderer\").getPrivate(\"letter\");\r\n if (letter == \"Y\") {\r\n chart.xAxes.each((axis) => {\r\n if (axis.className != \"ValueAxis\") {\r\n getMM = true;\r\n }\r\n });\r\n }\r\n else if (letter == \"X\") {\r\n chart.yAxes.each((axis) => {\r\n if (axis.className != \"ValueAxis\") {\r\n getMM = true;\r\n }\r\n });\r\n }\r\n }\r\n if (getMM) {\r\n this._getSelectionMinMax();\r\n }\r\n this._dirtySelectionExtremes = false;\r\n }\r\n this._groupData();\r\n if (this._sizeDirty || this._valuesDirty || this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"min\") || this.isPrivateDirty(\"selectionMax\") || this.isPrivateDirty(\"selectionMin\") || this.isPrivateDirty(\"max\") || this.isPrivateDirty(\"step\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"logarithmic\")) {\r\n this._handleRangeChange();\r\n this._prepareAxisItems();\r\n this._updateAxisRanges();\r\n }\r\n this._baseValue = this.baseValue();\r\n }\r\n _handleSizeDirty() {\r\n if (this._sizeDirty && !this._dseHandled) {\r\n this._dirtySelectionExtremes = true;\r\n this._dseHandled = true;\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._dseHandled = false;\r\n }\r\n _groupData() {\r\n }\r\n _formatText(value) {\r\n const numberFormat = this.get(\"numberFormat\");\r\n const formatter = this.getNumberFormatter();\r\n let text = \"\";\r\n if (numberFormat) {\r\n text = formatter.format(value, numberFormat);\r\n }\r\n else {\r\n text = formatter.format(value, undefined, this.getPrivate(\"stepDecimalPlaces\"));\r\n }\r\n return text;\r\n }\r\n _prepareAxisItems() {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n const logarithmic = this.get(\"logarithmic\");\r\n const step = this.getPrivate(\"step\");\r\n const selectionMin = this.getPrivate(\"selectionMin\");\r\n const selectionMax = this.getPrivate(\"selectionMax\") + step;\r\n let value = selectionMin - step;\r\n let differencePower = 1;\r\n let minLog = min;\r\n if (logarithmic) {\r\n value = this._minLogAdjusted;\r\n if (value < selectionMin) {\r\n while (value < selectionMin) {\r\n value += step;\r\n }\r\n }\r\n minLog = value;\r\n if (minLog <= 0) {\r\n minLog = 1;\r\n if (step < 1) {\r\n if ($type.isNumber(this._minRealLog)) {\r\n minLog = this._minRealLog;\r\n }\r\n else {\r\n minLog = Math.pow(10, -50);\r\n }\r\n }\r\n }\r\n differencePower = Math.log(selectionMax - step) * Math.LOG10E - Math.log(minLog) * Math.LOG10E;\r\n if (differencePower > 2) {\r\n value = Math.pow(10, Math.log(minLog) * Math.LOG10E - 50);\r\n }\r\n }\r\n /// minor grid\r\n const renderer = this.get(\"renderer\");\r\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\r\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n const stepAdjusted = Math.round(step / stepPower);\r\n let minorGridCount = 2;\r\n if ($math.round(stepAdjusted / 5, 10) % 1 == 0) {\r\n minorGridCount = 5;\r\n }\r\n if ($math.round(stepAdjusted / 10, 10) % 1 == 0) {\r\n minorGridCount = 10;\r\n }\r\n let minorStep = step / minorGridCount;\r\n // end of minor grid\r\n let i = 0;\r\n let m = 0;\r\n let previous = -Infinity;\r\n while (value < selectionMax) {\r\n let dataItem;\r\n if (this.dataItems.length < i + 1) {\r\n dataItem = new DataItem(this, undefined, {});\r\n this._dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else {\r\n dataItem = this.dataItems[i];\r\n }\r\n this._createAssets(dataItem, []);\r\n this._toggleDataItem(dataItem, true);\r\n dataItem.setRaw(\"value\", value);\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n label.set(\"text\", this._formatText(value));\r\n }\r\n this._prepareDataItem(dataItem);\r\n let nextValue = value;\r\n if (!logarithmic) {\r\n nextValue += step;\r\n }\r\n else {\r\n if (differencePower > 2) {\r\n nextValue = Math.pow(10, Math.log(minLog) * Math.LOG10E + i - 50);\r\n }\r\n else {\r\n nextValue += step;\r\n }\r\n }\r\n // minor grid\r\n if (minorGridEnabled) {\r\n let minorValue = value + minorStep;\r\n if (logarithmic) {\r\n if (differencePower > 2) {\r\n let minorMinMaxStep = this._adjustMinMax(value, nextValue, 10);\r\n minorStep = minorMinMaxStep.step;\r\n }\r\n minorValue = value + minorStep;\r\n }\r\n while (minorValue < nextValue - step * 0.00000000001) {\r\n let minorDataItem;\r\n if (this.minorDataItems.length < m + 1) {\r\n minorDataItem = new DataItem(this, undefined, {});\r\n this.minorDataItems.push(minorDataItem);\r\n this.processDataItem(minorDataItem);\r\n }\r\n else {\r\n minorDataItem = this.minorDataItems[m];\r\n }\r\n this._createAssets(minorDataItem, [\"minor\"], true);\r\n this._toggleDataItem(minorDataItem, true);\r\n minorDataItem.setRaw(\"value\", minorValue);\r\n const minorLabel = minorDataItem.get(\"label\");\r\n if (minorLabel) {\r\n if (minorLabelsEnabled) {\r\n minorLabel.set(\"text\", this._formatText(minorValue));\r\n }\r\n else {\r\n minorLabel.setPrivate(\"visible\", false);\r\n }\r\n }\r\n this._prepareDataItem(minorDataItem);\r\n minorValue += minorStep;\r\n m++;\r\n }\r\n }\r\n value = nextValue;\r\n if (previous == value) {\r\n break;\r\n }\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n if (stepPower < 1 && !logarithmic) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n let decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\r\n // round value to avoid floating point issues\r\n value = $math.round(value, decCount);\r\n }\r\n i++;\r\n previous = value;\r\n }\r\n for (let j = i; j < this.dataItems.length; j++) {\r\n this._toggleDataItem(this.dataItems[j], false);\r\n }\r\n for (let j = m; j < this.minorDataItems.length; j++) {\r\n this._toggleDataItem(this.minorDataItems[j], false);\r\n }\r\n $array.each(this.series, (series) => {\r\n if (series.inited) {\r\n series._markDirtyAxes();\r\n }\r\n });\r\n this._updateGhost();\r\n }\r\n }\r\n _prepareDataItem(dataItem, count) {\r\n let renderer = this.get(\"renderer\");\r\n let value = dataItem.get(\"value\");\r\n let endValue = dataItem.get(\"endValue\");\r\n let position = this.valueToPosition(value);\r\n let endPosition = position;\r\n let fillEndPosition = this.valueToPosition(value + this.getPrivate(\"step\"));\r\n if ($type.isNumber(endValue)) {\r\n endPosition = this.valueToPosition(endValue);\r\n fillEndPosition = endPosition;\r\n }\r\n if (dataItem.get(\"isRange\")) {\r\n if (endValue == null) {\r\n fillEndPosition = position;\r\n }\r\n }\r\n let labelEndPosition = endPosition;\r\n let labelEndValue = dataItem.get(\"labelEndValue\");\r\n if (labelEndValue != null) {\r\n labelEndPosition = this.valueToPosition(labelEndValue);\r\n }\r\n renderer.updateLabel(dataItem.get(\"label\"), position, labelEndPosition, count);\r\n const grid = dataItem.get(\"grid\");\r\n renderer.updateGrid(grid, position, endPosition);\r\n if (grid) {\r\n if (value == this.get(\"baseValue\", 0)) {\r\n grid.addTag(\"base\");\r\n grid._applyThemes();\r\n }\r\n else if (grid.hasTag(\"base\")) {\r\n grid.removeTag(\"base\");\r\n grid._applyThemes();\r\n }\r\n }\r\n renderer.updateTick(dataItem.get(\"tick\"), position, labelEndPosition, count);\r\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\r\n this._processBullet(dataItem);\r\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\r\n if (!dataItem.get(\"isRange\")) {\r\n const fillRule = this.get(\"fillRule\");\r\n if (fillRule) {\r\n fillRule(dataItem);\r\n }\r\n }\r\n }\r\n _handleRangeChange() {\r\n let selectionMin = this.positionToValue(this.get(\"start\", 0));\r\n let selectionMax = this.positionToValue(this.get(\"end\", 1));\r\n const gridCount = this.get(\"renderer\").gridCount();\r\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n let stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\r\n this.setPrivateRaw(\"stepDecimalPlaces\", stepDecimalPlaces);\r\n selectionMin = $math.round(selectionMin, stepDecimalPlaces);\r\n selectionMax = $math.round(selectionMax, stepDecimalPlaces);\r\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n let step = minMaxStep.step;\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n if (this.getPrivate(\"selectionMin\") !== selectionMin || this.getPrivate(\"selectionMax\") !== selectionMax || this.getPrivate(\"step\") !== step) {\r\n // do not change to setPrivate, will cause SO\r\n this.setPrivateRaw(\"selectionMin\", selectionMin);\r\n this.setPrivateRaw(\"selectionMax\", selectionMax);\r\n this.setPrivateRaw(\"step\", step);\r\n }\r\n }\r\n /**\r\n * Converts a relative position to a corresponding numeric value from axis\r\n * scale.\r\n *\r\n * @param position Relative position\r\n * @return Value\r\n */\r\n positionToValue(position) {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if (!this.get(\"logarithmic\")) {\r\n return position * (max - min) + min;\r\n }\r\n else {\r\n return Math.pow(Math.E, (position * ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E)) + Math.log(min) * Math.LOG10E) / Math.LOG10E);\r\n }\r\n }\r\n /**\r\n * Convers value to a relative position on axis.\r\n *\r\n * @param value Value\r\n * @return Relative position\r\n */\r\n valueToPosition(value) {\r\n const min = this.getPrivate(\"min\");\r\n const max = this.getPrivate(\"max\");\r\n if (!this.get(\"logarithmic\")) {\r\n return (value - min) / (max - min);\r\n }\r\n else {\r\n if (value <= 0) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n valueToFinalPosition(value) {\r\n const min = this.getPrivate(\"minFinal\");\r\n const max = this.getPrivate(\"maxFinal\");\r\n if (!this.get(\"logarithmic\")) {\r\n return (value - min) / (max - min);\r\n }\r\n else {\r\n if (value <= 0) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n value = treatZeroAs;\r\n }\r\n }\r\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / ((Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E));\r\n }\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\r\n getX(value, location, baseValue) {\r\n value = baseValue + (value - baseValue) * location;\r\n const position = this.valueToPosition(value);\r\n return this._settings.renderer.positionToCoordinate(position);\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\r\n getY(value, location, baseValue) {\r\n value = baseValue + (value - baseValue) * location;\r\n const position = this.valueToPosition(value);\r\n return this._settings.renderer.positionToCoordinate(position);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateX(dataItem, field, _cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, _cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionX(dataItem, field, _cellLocation, axisLocation) {\r\n let value = dataItem.get(field);\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n const series = dataItem.component;\r\n value = value * axisLocation + series.getStackedXValueWorking(dataItem, field);\r\n }\r\n else {\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n }\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateY(dataItem, field, _cellLocation, axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, _cellLocation, axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionY(dataItem, field, _cellLocation, axisLocation) {\r\n let value = dataItem.get(field);\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n const series = dataItem.component;\r\n value = value * axisLocation + series.getStackedYValueWorking(dataItem, field);\r\n }\r\n else {\r\n value = this._baseValue + (value - this._baseValue) * axisLocation;\r\n }\r\n return this.valueToPosition(value);\r\n }\r\n /**\r\n * Returns relative position of axis' `baseValue`.\r\n *\r\n * @return Base value position\r\n */\r\n basePosition() {\r\n return this.valueToPosition(this.baseValue());\r\n }\r\n /**\r\n * Base value of the [[ValueAxis]], which determines positive and negative\r\n * values.\r\n *\r\n * @return Base value\r\n */\r\n baseValue() {\r\n const min = Math.min(this.getPrivate(\"minFinal\", -Infinity), this.getPrivate(\"selectionMin\", -Infinity));\r\n const max = Math.max(this.getPrivate(\"maxFinal\", Infinity), this.getPrivate(\"selectionMax\", Infinity));\r\n let baseValue = this.get(\"baseValue\", 0);\r\n if (baseValue < min) {\r\n baseValue = min;\r\n }\r\n if (baseValue > max) {\r\n baseValue = max;\r\n }\r\n return baseValue;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n cellEndValue(value) {\r\n return value;\r\n }\r\n fixSmallStep(step) {\r\n // happens because of floating point error\r\n if (1 + step === 1) {\r\n step *= 2;\r\n return this.fixSmallStep(step);\r\n }\r\n return step;\r\n }\r\n _fixMin(min) {\r\n return min;\r\n }\r\n _fixMax(max) {\r\n return max;\r\n }\r\n _calculateTotals() {\r\n if (this.get(\"calculateTotals\")) {\r\n let series = this.series[0];\r\n if (series) {\r\n let startIndex = series.startIndex();\r\n if (series.dataItems.length > 0) {\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n let endIndex = series.endIndex();\r\n if (endIndex < series.dataItems.length) {\r\n endIndex++;\r\n }\r\n let field;\r\n let vc;\r\n if (series.get(\"yAxis\") == this) {\r\n field = \"valueY\";\r\n vc = \"vcy\";\r\n }\r\n else if (series.get(\"xAxis\") == this) {\r\n field = \"valueX\";\r\n vc = \"vcx\";\r\n }\r\n let fieldWorking = field + \"Working\";\r\n if (field) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let sum = 0;\r\n let total = 0;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"excludeFromTotal\")) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(fieldWorking) * series.get(vc);\r\n if (!$type.isNaN(value)) {\r\n sum += value;\r\n total += Math.abs(value);\r\n }\r\n }\r\n }\r\n });\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"excludeFromTotal\")) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem) {\r\n let value = dataItem.get(fieldWorking) * series.get(vc);\r\n if (!$type.isNaN(value)) {\r\n dataItem.set((field + \"Total\"), total);\r\n dataItem.set((field + \"Sum\"), sum);\r\n dataItem.set((field + \"TotalPercent\"), value / total * 100);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _getSelectionMinMax() {\r\n const min = this.getPrivate(\"minFinal\");\r\n const max = this.getPrivate(\"maxFinal\");\r\n const minDefined = this.get(\"min\");\r\n const maxDefined = this.get(\"max\");\r\n let extraMin = this.get(\"extraMin\", 0);\r\n let extraMax = this.get(\"extraMax\", 0);\r\n if (this.get(\"logarithmic\")) {\r\n if (this.get(\"extraMin\") == null) {\r\n extraMin = 0.1;\r\n }\r\n if (this.get(\"extraMax\") == null) {\r\n extraMax = 0.2;\r\n }\r\n }\r\n const gridCount = this.get(\"renderer\").gridCount();\r\n const selectionStrictMinMax = this.get(\"strictMinMaxSelection\");\r\n let strictMinMax = this.get(\"strictMinMax\");\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n let selectionMin = max;\r\n let selectionMax = min;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"ignoreMinMax\")) {\r\n let seriesMin;\r\n let seriesMax;\r\n const outOfSelection = series.getPrivate(\"outOfSelection\");\r\n if (series.get(\"xAxis\") === this) {\r\n if (!outOfSelection) {\r\n let minX = series.getPrivate(\"minX\");\r\n let maxX = series.getPrivate(\"maxX\");\r\n // solves #90085\r\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\r\n minX = undefined;\r\n maxX = undefined;\r\n }\r\n seriesMin = series.getPrivate(\"selectionMinX\", minX);\r\n seriesMax = series.getPrivate(\"selectionMaxX\", maxX);\r\n }\r\n }\r\n else if (series.get(\"yAxis\") === this) {\r\n if (!outOfSelection) {\r\n let minY = series.getPrivate(\"minY\");\r\n let maxY = series.getPrivate(\"maxY\");\r\n // solves #90085\r\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\r\n minY = undefined;\r\n maxY = undefined;\r\n }\r\n seriesMin = series.getPrivate(\"selectionMinY\", minY);\r\n seriesMax = series.getPrivate(\"selectionMaxY\", maxY);\r\n }\r\n }\r\n if (!series.isHidden() && !series.isShowing()) {\r\n if ($type.isNumber(seriesMin)) {\r\n selectionMin = Math.min(selectionMin, seriesMin);\r\n }\r\n if ($type.isNumber(seriesMax)) {\r\n selectionMax = Math.max(selectionMax, seriesMax);\r\n }\r\n }\r\n }\r\n });\r\n this.axisRanges.each((range) => {\r\n if (range.get(\"affectsMinMax\")) {\r\n let value = range.get(\"value\");\r\n if (value != null) {\r\n selectionMin = Math.min(selectionMin, value);\r\n selectionMax = Math.max(selectionMax, value);\r\n }\r\n value = range.get(\"endValue\");\r\n if (value != null) {\r\n selectionMin = Math.min(selectionMin, value);\r\n selectionMax = Math.max(selectionMax, value);\r\n }\r\n }\r\n });\r\n if (selectionMin > selectionMax) {\r\n [selectionMin, selectionMax] = [selectionMax, selectionMin];\r\n }\r\n if ($type.isNumber(minDefined)) {\r\n if (strictMinMax) {\r\n selectionMin = minDefined;\r\n }\r\n else {\r\n selectionMin = min;\r\n }\r\n }\r\n else if (strictMinMax) {\r\n if ($type.isNumber(this._minReal)) {\r\n selectionMin = this._minReal;\r\n }\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n if (strictMinMax) {\r\n selectionMax = maxDefined;\r\n }\r\n else {\r\n selectionMax = max;\r\n }\r\n }\r\n else if (strictMinMax) {\r\n if ($type.isNumber(this._maxReal)) {\r\n selectionMax = this._maxReal;\r\n }\r\n }\r\n if (selectionMin === selectionMax) {\r\n let smin = selectionMin;\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n if (selectionMin < min) {\r\n let d = smin - min;\r\n if (d == 0) {\r\n d = this._deltaMinMax;\r\n }\r\n selectionMin = smin - d;\r\n selectionMax = smin + d;\r\n strictMinMax = true;\r\n }\r\n let minMaxStep2 = this._adjustMinMax(selectionMin, selectionMax, gridCount, strictMinMax);\r\n selectionMin = minMaxStep2.min;\r\n selectionMax = minMaxStep2.max;\r\n }\r\n let selectionMinReal = selectionMin;\r\n let selectionMaxReal = selectionMax;\r\n let delta = selectionMax - selectionMin;\r\n selectionMin -= delta * extraMin;\r\n selectionMax += delta * extraMax;\r\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount);\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n selectionMin = $math.fitToRange(selectionMin, min, max);\r\n selectionMax = $math.fitToRange(selectionMax, min, max);\r\n // do it for the second time !important\t\t\t\r\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\r\n if (!strictMinMax) {\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n }\r\n const syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n minMaxStep = this._syncAxes(selectionMin, selectionMax, minMaxStep.step, syncWithAxis.getPrivate(\"selectionMinFinal\", syncWithAxis.getPrivate(\"minFinal\", 0)), syncWithAxis.getPrivate(\"selectionMaxFinal\", syncWithAxis.getPrivate(\"maxFinal\", 1)), syncWithAxis.getPrivate(\"selectionStepFinal\", syncWithAxis.getPrivate(\"step\", 1)));\r\n if (minMaxStep.min < min) {\r\n minMaxStep.min = min;\r\n }\r\n if (minMaxStep.max > max) {\r\n minMaxStep.max = max;\r\n }\r\n selectionMin = minMaxStep.min;\r\n selectionMax = minMaxStep.max;\r\n }\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n selectionMin = Math.max(selectionMin, minDefined);\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n selectionMax = Math.min(selectionMax, maxDefined);\r\n }\r\n }\r\n if (selectionStrictMinMax) {\r\n selectionMin = selectionMinReal - (selectionMaxReal - selectionMinReal) * extraMin;\r\n selectionMax = selectionMaxReal + (selectionMaxReal - selectionMinReal) * extraMax;\r\n }\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n selectionMin = minDefined;\r\n }\r\n else {\r\n selectionMin = selectionMinReal;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n selectionMax = maxDefined;\r\n }\r\n else {\r\n selectionMax = selectionMaxReal;\r\n }\r\n if (selectionMax - selectionMin <= 0.00000001) {\r\n selectionMin -= this._deltaMinMax;\r\n selectionMax += this._deltaMinMax;\r\n }\r\n let delta = selectionMax - selectionMin;\r\n selectionMin -= delta * extraMin;\r\n selectionMax += delta * extraMax;\r\n }\r\n if (this.get(\"logarithmic\")) {\r\n if (selectionMin <= 0) {\r\n selectionMin = selectionMinReal * (1 - Math.min(extraMin, 0.99));\r\n }\r\n if (selectionMin < min) {\r\n selectionMin = min;\r\n }\r\n if (selectionMax > max) {\r\n selectionMax = max;\r\n }\r\n }\r\n let len = Math.min(20, Math.ceil(Math.log(this.getPrivate(\"maxZoomFactor\", 100) + 1) / Math.LN10) + 2);\r\n let start = $math.round(this.valueToFinalPosition(selectionMin), len);\r\n let end = $math.round(this.valueToFinalPosition(selectionMax), len);\r\n this.setPrivateRaw(\"selectionMinFinal\", selectionMin);\r\n this.setPrivateRaw(\"selectionMaxFinal\", selectionMax);\r\n this.setPrivateRaw(\"selectionStepFinal\", minMaxStep.step);\r\n this.zoom(start, end);\r\n }\r\n }\r\n _getMinMax() {\r\n let minDefined = this.get(\"min\");\r\n let maxDefined = this.get(\"max\");\r\n let min = Infinity;\r\n let max = -Infinity;\r\n let extraMin = this.get(\"extraMin\", 0);\r\n let extraMax = this.get(\"extraMax\", 0);\r\n if (this.get(\"logarithmic\")) {\r\n if (this.get(\"extraMin\") == null) {\r\n extraMin = 0.1;\r\n }\r\n if (this.get(\"extraMax\") == null) {\r\n extraMax = 0.2;\r\n }\r\n }\r\n let minDiff = Infinity;\r\n $array.each(this.series, (series) => {\r\n if (!series.get(\"ignoreMinMax\")) {\r\n let seriesMin;\r\n let seriesMax;\r\n if (series.get(\"xAxis\") === this) {\r\n seriesMin = series.getPrivate(\"minX\");\r\n seriesMax = series.getPrivate(\"maxX\");\r\n }\r\n else if (series.get(\"yAxis\") === this) {\r\n seriesMin = series.getPrivate(\"minY\");\r\n seriesMax = series.getPrivate(\"maxY\");\r\n }\r\n if ($type.isNumber(seriesMin) && $type.isNumber(seriesMax)) {\r\n min = Math.min(min, seriesMin);\r\n max = Math.max(max, seriesMax);\r\n let diff = seriesMax - seriesMin;\r\n if (diff <= 0) {\r\n diff = Math.abs(seriesMax / 100);\r\n }\r\n if (diff < minDiff) {\r\n minDiff = diff;\r\n }\r\n }\r\n }\r\n });\r\n this.axisRanges.each((range) => {\r\n if (range.get(\"affectsMinMax\")) {\r\n let value = range.get(\"value\");\r\n if (value != null) {\r\n min = Math.min(min, value);\r\n max = Math.max(max, value);\r\n }\r\n value = range.get(\"endValue\");\r\n if (value != null) {\r\n min = Math.min(min, value);\r\n max = Math.max(max, value);\r\n }\r\n }\r\n });\r\n if (this.get(\"logarithmic\")) {\r\n let treatZeroAs = this.get(\"treatZeroAs\");\r\n if ($type.isNumber(treatZeroAs)) {\r\n if (min <= 0) {\r\n min = treatZeroAs;\r\n }\r\n }\r\n if (min <= 0) {\r\n new Error(\"Logarithmic value axis can not have values <= 0.\");\r\n }\r\n }\r\n if (min === 0 && max === 0) {\r\n max = 0.9;\r\n min = -0.9;\r\n }\r\n if ($type.isNumber(minDefined)) {\r\n min = minDefined;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n max = maxDefined;\r\n }\r\n // meaning no min/max found on series/ranges and no min/max was defined\r\n if (min === Infinity || max === -Infinity) {\r\n this.setPrivate(\"minFinal\", undefined);\r\n this.setPrivate(\"maxFinal\", undefined);\r\n return;\r\n }\r\n if (min > max) {\r\n [min, max] = [max, min];\r\n }\r\n const initialMin = min;\r\n const initialMax = max;\r\n // adapter\r\n let minAdapted = this.adapters.fold(\"min\", min);\r\n let maxAdapted = this.adapters.fold(\"max\", max);\r\n this._minRealLog = min;\r\n if ($type.isNumber(minAdapted)) {\r\n min = minAdapted;\r\n }\r\n if ($type.isNumber(maxAdapted)) {\r\n max = maxAdapted;\r\n }\r\n // DateAxis does some magic here\r\n min = this._fixMin(min);\r\n max = this._fixMax(max);\r\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\t\t\r\n if (max - min <= 1 / Math.pow(10, 15)) {\r\n if (max - min !== 0) {\r\n this._deltaMinMax = (max - min) / 2;\r\n }\r\n else {\r\n this._getDelta(max);\r\n }\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n // add extras\r\n min -= (max - min) * extraMin;\r\n max += (max - min) * extraMax;\r\n if (this.get(\"logarithmic\")) {\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n }\r\n this._minReal = min;\r\n this._maxReal = max;\r\n let strictMinMax = this.get(\"strictMinMax\");\r\n let strictMinMaxSelection = this.get(\"strictMinMaxSelection\", false);\r\n if (strictMinMaxSelection) {\r\n strictMinMax = strictMinMaxSelection;\r\n }\r\n let strict = strictMinMax;\r\n if ($type.isNumber(maxDefined)) {\r\n strict = true;\r\n }\r\n let gridCount = this.get(\"renderer\").gridCount();\r\n let minMaxStep = this._adjustMinMax(min, max, gridCount, strict);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // do it for the second time with strict true (importat!)\r\n minMaxStep = this._adjustMinMax(min, max, gridCount, true);\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n // return min max if strict\r\n if (strictMinMax) {\r\n if ($type.isNumber(minDefined)) {\r\n min = minDefined;\r\n }\r\n else {\r\n min = this._minReal;\r\n }\r\n if ($type.isNumber(maxDefined)) {\r\n max = maxDefined;\r\n }\r\n else {\r\n max = this._maxReal;\r\n }\r\n if (max - min <= 0.00000001) {\r\n min -= this._deltaMinMax;\r\n max += this._deltaMinMax;\r\n }\r\n let delta = max - min;\r\n min -= delta * extraMin;\r\n max += delta * extraMax;\r\n }\r\n minAdapted = this.adapters.fold(\"min\", min);\r\n maxAdapted = this.adapters.fold(\"max\", max);\r\n if ($type.isNumber(minAdapted)) {\r\n min = minAdapted;\r\n }\r\n if ($type.isNumber(maxAdapted)) {\r\n max = maxAdapted;\r\n }\r\n if (minDiff == Infinity) {\r\n minDiff = (max - min);\r\n }\r\n // this is to avoid floating point number error\r\n let decCount = Math.round(Math.abs(Math.log(Math.abs(max - min)) * Math.LOG10E)) + 5;\r\n min = $math.round(min, decCount);\r\n max = $math.round(max, decCount);\r\n const syncWithAxis = this.get(\"syncWithAxis\");\r\n if (syncWithAxis) {\r\n minMaxStep = this._syncAxes(min, max, minMaxStep.step, syncWithAxis.getPrivate(\"minFinal\", syncWithAxis.getPrivate(\"min\", 0)), syncWithAxis.getPrivate(\"maxFinal\", syncWithAxis.getPrivate(\"max\", 1)), syncWithAxis.getPrivate(\"step\", 1));\r\n min = minMaxStep.min;\r\n max = minMaxStep.max;\r\n }\r\n this.setPrivateRaw(\"maxZoomFactor\", Math.max(1, Math.ceil((max - min) / minDiff * this.get(\"maxZoomFactor\", 100))));\r\n this._fixZoomFactor();\r\n if (this.get(\"logarithmic\")) {\r\n this._minLogAdjusted = min;\r\n min = this._minReal;\r\n max = this._maxReal;\r\n if (min <= 0) {\r\n min = initialMin * (1 - Math.min(extraMin, 0.99));\r\n }\r\n }\r\n if ($type.isNumber(min) && $type.isNumber(max)) {\r\n if (this.getPrivate(\"minFinal\") !== min || this.getPrivate(\"maxFinal\") !== max) {\r\n this.setPrivate(\"minFinal\", min);\r\n this.setPrivate(\"maxFinal\", max);\r\n this._saveMinMax(min, max);\r\n const duration = this.get(\"interpolationDuration\", 0);\r\n const easing = this.get(\"interpolationEasing\");\r\n this.animatePrivate({ key: \"min\", to: min, duration, easing });\r\n this.animatePrivate({ key: \"max\", to: max, duration, easing });\r\n }\r\n }\r\n }\r\n _fixZoomFactor() {\r\n }\r\n _getDelta(max) {\r\n // the number by which we need to raise 10 to get difference\r\n let exponent = Math.log(Math.abs(max)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n let power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n this._deltaMinMax = power;\r\n }\r\n _saveMinMax(_min, _max) {\r\n }\r\n _adjustMinMax(min, max, gridCount, strictMode) {\r\n // will fail if 0\r\n if (gridCount <= 1) {\r\n gridCount = 1;\r\n }\r\n gridCount = Math.round(gridCount);\r\n let initialMin = min;\r\n let initialMax = max;\r\n let difference = max - min;\r\n // in case min and max is the same, use max\r\n if (difference === 0) {\r\n difference = Math.abs(max);\r\n }\r\n // the number by which we need to raise 10 to get difference\r\n let exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n // here we find a number which is power of 10 and has the same count of numbers as difference has\r\n let power = Math.pow(10, Math.floor(exponent));\r\n // reduce this number by 10 times\r\n power = power / 10;\r\n let extra = power;\r\n if (strictMode) {\r\n extra = 0;\r\n }\r\n // round down min\r\n if (strictMode) {\r\n min = Math.floor(min / power) * power;\r\n // round up max\r\n max = Math.ceil(max / power) * power;\r\n }\r\n else {\r\n min = Math.ceil(min / power) * power - extra;\r\n // round up max\r\n max = Math.floor(max / power) * power + extra;\r\n }\r\n // don't let min go below 0 if real min is >= 0\r\n if (min < 0 && initialMin >= 0) {\r\n min = 0;\r\n }\r\n // don't let max go above 0 if real max is <= 0\r\n if (max > 0 && initialMax <= 0) {\r\n max = 0;\r\n }\r\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\r\n power = Math.pow(10, Math.floor(exponent));\r\n power = power / 100; // used to be 10 in v4, but this caused issue that there could be limited number of grids with even very small minGridDistance\r\n // approximate difference between two grid lines\r\n let step = Math.ceil((difference / gridCount) / power) * power;\r\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\r\n // the step should divide by 2, 5, and 10.\r\n let stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\r\n if (stepDivisor > 5) {\r\n stepDivisor = 10;\r\n }\r\n else if (stepDivisor <= 5 && stepDivisor > 2) {\r\n stepDivisor = 5;\r\n }\r\n // now get real step\r\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\r\n let maxPrecision = this.get(\"maxPrecision\");\r\n if ($type.isNumber(maxPrecision)) {\r\n let ceiledStep = $math.ceil(step, maxPrecision);\r\n if (maxPrecision < Number.MAX_VALUE && step !== ceiledStep) {\r\n step = ceiledStep;\r\n if (step == 0) {\r\n step = 1;\r\n }\r\n }\r\n }\r\n let decCount = 0;\r\n // in case numbers are smaller than 1\r\n if (stepPower < 1) {\r\n // exponent is less then 1 too. Count decimals of exponent\r\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\r\n // round step\r\n step = $math.round(step, decCount);\r\n }\r\n // final min and max\r\n let minCount = Math.floor(min / step);\r\n min = $math.round(step * minCount, decCount);\r\n let maxCount;\r\n if (!strictMode) {\r\n maxCount = Math.ceil(max / step);\r\n }\r\n else {\r\n maxCount = Math.floor(max / step);\r\n }\r\n if (maxCount === minCount) {\r\n maxCount++;\r\n }\r\n max = $math.round(step * maxCount, decCount);\r\n if (max < initialMax) {\r\n max = max + step;\r\n }\r\n if (min > initialMin) {\r\n min = min - step;\r\n }\r\n step = this.fixSmallStep(step);\r\n return { min: min, max: max, step: step };\r\n }\r\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\r\n getTooltipText(position, _adjustPosition) {\r\n const numberFormat = this.get(\"tooltipNumberFormat\", this.get(\"numberFormat\"));\r\n const formatter = this.getNumberFormatter();\r\n const extraDecimals = this.get(\"extraTooltipPrecision\", 0);\r\n const decimals = this.getPrivate(\"stepDecimalPlaces\", 0) + extraDecimals;\r\n const value = $math.round(this.positionToValue(position), decimals);\r\n if (numberFormat) {\r\n return formatter.format(value, numberFormat);\r\n }\r\n else {\r\n return formatter.format(value, undefined, decimals);\r\n }\r\n }\r\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\r\n getSeriesItem(series, position) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n let value = this.positionToValue(position);\r\n let index = undefined;\r\n let oldDiff;\r\n $array.each(series.dataItems, (dataItem, i) => {\r\n const diff = Math.abs(dataItem.get(fieldName) - value);\r\n if (index === undefined || diff < oldDiff) {\r\n index = i;\r\n oldDiff = diff;\r\n }\r\n });\r\n if (index != null) {\r\n return series.dataItems[index];\r\n }\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` values.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start value\r\n * @param end End value\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToValues(start, end, duration) {\r\n const min = this.getPrivate(\"minFinal\", 0);\r\n const max = this.getPrivate(\"maxFinal\", 0);\r\n if (this.getPrivate(\"min\") != null && this.getPrivate(\"max\") != null) {\r\n this.zoom((start - min) / (max - min), (end - min) / (max - min), duration);\r\n }\r\n }\r\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\r\n _syncAxes(min, max, step, syncMin, syncMax, syncStep) {\r\n let axis = this.get(\"syncWithAxis\");\r\n if (axis) {\r\n let count = Math.round(syncMax - syncMin) / syncStep;\r\n let currentCount = Math.round((max - min) / step);\r\n let gridCount = this.get(\"renderer\").gridCount();\r\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\r\n let synced = false;\r\n let c = 0;\r\n let diff = (max - min) * 0.01;\r\n let omin = min;\r\n let omax = max;\r\n let ostep = step;\r\n while (synced != true) {\r\n synced = this._checkSync(omin, omax, ostep, count);\r\n c++;\r\n if (c > 500) {\r\n synced = true;\r\n }\r\n if (!synced) {\r\n if (c / 3 == Math.round(c / 3)) {\r\n omin = min - diff * c;\r\n if (min >= 0 && omin < 0) {\r\n omin = 0;\r\n }\r\n }\r\n else {\r\n omax = max + diff * c;\r\n if (omax <= 0 && omax > 0) {\r\n omax = 0;\r\n }\r\n }\r\n let minMaxStep = this._adjustMinMax(omin, omax, gridCount, true);\r\n omin = minMaxStep.min;\r\n omax = minMaxStep.max;\r\n ostep = minMaxStep.step;\r\n }\r\n else {\r\n min = omin;\r\n max = omax;\r\n step = ostep;\r\n }\r\n }\r\n }\r\n }\r\n return { min: min, max: max, step: step };\r\n }\r\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\r\n _checkSync(min, max, step, count) {\r\n let currentCount = (max - min) / step;\r\n for (let i = 1; i < count; i++) {\r\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n let max = this.getPrivate(\"selectionMax\", this.getPrivate(\"max\"));\r\n let min = this.getPrivate(\"selectionMin\", this.getPrivate(\"min\"));\r\n if ($type.isNumber(max) && $type.isNumber(min)) {\r\n return this.getPrivate(\"step\", 1) / (max - min);\r\n }\r\n return 0.05;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n nextPosition(count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\r\n count *= -1;\r\n }\r\n let value = this.positionToValue(this.getPrivate(\"tooltipPosition\", 0));\r\n value += this.getPrivate(\"step\", 1) * count;\r\n value = $math.fitToRange(value, this.getPrivate(\"selectionMin\", 0), this.getPrivate(\"selectionMax\", 1));\r\n return this.toGlobalPosition(this.valueToPosition(value));\r\n }\r\n}\r\nObject.defineProperty(ValueAxis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ValueAxis\"\r\n});\r\nObject.defineProperty(ValueAxis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Axis.classNames.concat([ValueAxis.className])\r\n});\r\n//# sourceMappingURL=ValueAxis.js.map","import { Axis } from \"./Axis\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $math from \"../../../core/util/Math\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { populateString } from \"../../../core/util/PopulateString\";\r\nimport { ValueAxis } from \"./ValueAxis\";\r\n/**\r\n * Creates a category axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/category-axis/} for more info\r\n * @important\r\n */\r\nexport class CategoryAxis extends Axis {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_frequency\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_itemMap\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\r\n this.fields.push(\"category\");\r\n this.setPrivateRaw(\"name\", \"category\");\r\n this.addTag(\"category\");\r\n super._afterNew();\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n const len = this.dataItems.length;\r\n let i = 0;\r\n if (this._valuesDirty) {\r\n this._itemMap = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n dataItem.setRaw(\"index\", i);\r\n this._itemMap[dataItem.get(\"category\")] = dataItem;\r\n i++;\r\n });\r\n this.setPrivateRaw(\"maxZoomFactor\", len);\r\n }\r\n this.setPrivateRaw(\"startIndex\", Math.max(Math.round(this.get(\"start\", 0) * len), 0));\r\n this.setPrivateRaw(\"endIndex\", Math.min(Math.round(this.get(\"end\", 1) * len), len));\r\n if (this._sizeDirty || this._valuesDirty || (this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"endIndex\") || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\"))) {\r\n if (this.dataItems.length > 0) {\r\n this._handleRangeChange();\r\n this._prepareAxisItems();\r\n this._updateAxisRanges();\r\n }\r\n }\r\n }\r\n _handleRangeChange() {\r\n $array.each(this.series, (series) => {\r\n let startCategory = this.dataItems[this.startIndex()].get(\"category\");\r\n let endCategory = this.dataItems[this.endIndex() - 1].get(\"category\");\r\n let baseAxis = series.get(\"baseAxis\");\r\n let xAxis = series.get(\"xAxis\");\r\n let yAxis = series.get(\"yAxis\");\r\n if (xAxis instanceof CategoryAxis && yAxis instanceof CategoryAxis) {\r\n series._markDirtyAxes();\r\n }\r\n else if (baseAxis === this) {\r\n let key;\r\n let openKey;\r\n let otherAxis = yAxis;\r\n if (xAxis === baseAxis) {\r\n if (series.get(\"categoryXField\")) {\r\n key = \"categoryX\";\r\n }\r\n if (series.get(\"openCategoryXField\")) {\r\n openKey = \"openCategoryX\";\r\n }\r\n }\r\n else if (yAxis === baseAxis) {\r\n if (series.get(\"categoryYField\")) {\r\n key = \"categoryY\";\r\n }\r\n if (series.get(\"openCategoryYField\")) {\r\n openKey = \"openCategoryY\";\r\n }\r\n otherAxis = xAxis;\r\n }\r\n if (otherAxis instanceof ValueAxis) {\r\n if (key || openKey) {\r\n let startDataItem;\r\n let endDataItem;\r\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\r\n let dataItem = series.dataItems[i];\r\n if (key) {\r\n if (dataItem.get(key) === startCategory) {\r\n startDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n if (openKey) {\r\n if (dataItem.get(openKey) === startCategory) {\r\n startDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n for (let i = series.dataItems.length - 1; i >= 0; i--) {\r\n let dataItem = series.dataItems[i];\r\n if (key) {\r\n if (dataItem.get(key) === endCategory) {\r\n endDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n if (openKey) {\r\n if (dataItem.get(openKey) === endCategory) {\r\n endDataItem = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n let startIndex = 0;\r\n let endIndex = series.dataItems.length;\r\n if (startDataItem) {\r\n startIndex = series.dataItems.indexOf(startDataItem);\r\n }\r\n if (endDataItem) {\r\n endIndex = series.dataItems.indexOf(endDataItem) + 1;\r\n }\r\n series.setPrivate(\"startIndex\", startIndex);\r\n series.setPrivate(\"endIndex\", endIndex);\r\n let hasValue = false;\r\n for (let i = startIndex; i < endIndex; i++) {\r\n const dataItem = series.dataItems[i];\r\n $array.each(series.__valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n hasValue = true;\r\n }\r\n });\r\n $array.each(series.__valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n hasValue = true;\r\n }\r\n });\r\n if (hasValue) {\r\n break;\r\n }\r\n }\r\n series.setPrivate(\"outOfSelection\", !hasValue);\r\n }\r\n }\r\n series._markDirtyAxes(); // must be outside\r\n }\r\n });\r\n }\r\n _prepareAxisItems() {\r\n var _a;\r\n const renderer = this.get(\"renderer\");\r\n const len = this.dataItems.length;\r\n let startIndex = this.startIndex();\r\n if (startIndex > 0) {\r\n startIndex--;\r\n }\r\n let endIndex = this.endIndex();\r\n if (endIndex < len) {\r\n endIndex++;\r\n }\r\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\r\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\r\n let maxCount = renderer.axisLength() / Math.max(renderer.get(\"minGridDistance\"), 1);\r\n let frequency = Math.max(1, Math.min(len, Math.ceil((endIndex - startIndex) / maxCount)));\r\n startIndex = Math.floor(startIndex / frequency) * frequency;\r\n this._frequency = frequency;\r\n for (let j = 0; j < len; j++) {\r\n this._toggleDataItem(this.dataItems[j], false);\r\n }\r\n let f = this.dataItems[startIndex].get(\"index\", 0);\r\n for (let i = startIndex; i < endIndex; i = i + frequency) {\r\n let dataItem = this.dataItems[i];\r\n this._createAssets(dataItem, []);\r\n this._toggleDataItem(dataItem, true);\r\n let count = frequency;\r\n if (minorGridEnabled) {\r\n count = 1;\r\n }\r\n this._prepareDataItem(dataItem, f, count);\r\n f++;\r\n }\r\n if (renderer.get(\"minorGridEnabled\")) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (i % frequency != 0) {\r\n this._createAssets(dataItem, [\"minor\"], true);\r\n this._toggleDataItem(dataItem, true);\r\n this._prepareDataItem(dataItem, 0, 1);\r\n if (!minorLabelsEnabled) {\r\n (_a = dataItem.get(\"label\")) === null || _a === void 0 ? void 0 : _a.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n }\r\n this._updateGhost();\r\n }\r\n _prepareDataItem(dataItem, fillIndex, count) {\r\n let renderer = this.get(\"renderer\");\r\n let categoryLocation = dataItem.get(\"categoryLocation\", 0);\r\n let endCategoryLocation = dataItem.get(\"endCategoryLocation\", 1);\r\n let index = dataItem.get(\"index\");\r\n if (!$type.isNumber(index)) {\r\n index = this.categoryToIndex(dataItem.get(\"category\"));\r\n }\r\n let position = this.indexToPosition(index, categoryLocation);\r\n let endCategory = dataItem.get(\"endCategory\");\r\n let endIndex;\r\n if (endCategory) {\r\n endIndex = this.categoryToIndex(endCategory);\r\n if (!$type.isNumber(endIndex)) {\r\n endIndex = index;\r\n }\r\n }\r\n else {\r\n endIndex = index;\r\n }\r\n let endPosition = this.indexToPosition(endIndex, endCategoryLocation);\r\n let fillEndIndex;\r\n let fillEndPosition;\r\n if (dataItem.get(\"isRange\")) {\r\n fillEndIndex = endIndex;\r\n }\r\n else {\r\n fillEndIndex = index + this._frequency - 1;\r\n }\r\n fillEndPosition = this.indexToPosition(fillEndIndex, endCategoryLocation);\r\n renderer.updateLabel(dataItem.get(\"label\"), position, endPosition, count);\r\n renderer.updateGrid(dataItem.get(\"grid\"), position, endPosition);\r\n renderer.updateTick(dataItem.get(\"tick\"), position, endPosition, count);\r\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\r\n this._processBullet(dataItem);\r\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\r\n const fillRule = this.get(\"fillRule\");\r\n if (fillRule) {\r\n fillRule(dataItem, fillIndex);\r\n }\r\n }\r\n startIndex() {\r\n let len = this.dataItems.length;\r\n return Math.min(Math.max(this.getPrivate(\"startIndex\", 0), 0), len - 1);\r\n }\r\n endIndex() {\r\n let len = this.dataItems.length;\r\n return Math.max(1, Math.min(this.getPrivate(\"endIndex\", len), len));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n baseValue() {\r\n }\r\n /**\r\n * @ignore\r\n */\r\n basePosition() {\r\n return 0;\r\n }\r\n /**\r\n * Returns X coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return X coordinate\r\n */\r\n getX(value) {\r\n let axisDataItem = this._itemMap[value];\r\n if (axisDataItem) {\r\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * Returns Y coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return Y coordinate\r\n */\r\n getY(value) {\r\n let axisDataItem = this._itemMap[value];\r\n if (axisDataItem) {\r\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionX(dataItem, field, cellLocation, _axisLocation) {\r\n const category = dataItem.get(field);\r\n const axisDataItem = this._itemMap[category];\r\n if (axisDataItem) {\r\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateX(dataItem, field, cellLocation, _axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, cellLocation, _axisLocation));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemPositionY(dataItem, field, cellLocation, _axisLocation) {\r\n const category = dataItem.get(field);\r\n const axisDataItem = this._itemMap[category];\r\n if (axisDataItem) {\r\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getDataItemCoordinateY(dataItem, field, cellLocation, _axisLocation) {\r\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, cellLocation, _axisLocation));\r\n }\r\n /**\r\n * Converts category index to a relative position.\r\n *\r\n * `location` indicates relative position within category: 0 - start, 1 - end.\r\n *\r\n * If not set, will use middle (0.5) of the category.\r\n *\r\n * @param index Index\r\n * @param location Location\r\n * @return Index\r\n */\r\n indexToPosition(index, location) {\r\n if (!$type.isNumber(location)) {\r\n location = 0.5;\r\n }\r\n let len = this.dataItems.length;\r\n let startLocation = this.get(\"startLocation\", 0);\r\n let endLocation = this.get(\"endLocation\", 1);\r\n len -= startLocation;\r\n len -= (1 - endLocation);\r\n let position = (index + location - startLocation) / len;\r\n let dataItem = this.dataItems[index];\r\n if (dataItem) {\r\n position += dataItem.get(\"deltaPosition\", 0);\r\n }\r\n return position;\r\n }\r\n /**\r\n * Returns an index of a category.\r\n *\r\n * @param category Category to look up\r\n * @return Index\r\n */\r\n categoryToIndex(category) {\r\n let dataItem = this._itemMap[category];\r\n if (dataItem) {\r\n return dataItem.get(\"index\");\r\n }\r\n return NaN;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n dataItemToPosition(dataItem) {\r\n return this.indexToPosition(dataItem.get(\"index\"));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n roundAxisPosition(position, location) {\r\n position += (0.5 - location) / this.dataItems.length;\r\n return this.indexToPosition(this.axisPositionToIndex(position), location);\r\n }\r\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\r\n axisPositionToIndex(position) {\r\n let len = this.dataItems.length;\r\n return $math.fitToRange(Math.floor(position * len), 0, len - 1); //$math.fitToRange(Math.floor((end - start) * len * position + len * start), 0, len - 1);\r\n }\r\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\r\n getTooltipText(position, _adjustPosition) {\r\n //@todo number formatter + tag\r\n const dataItem = this.dataItems[this.axisPositionToIndex(position)];\r\n if (dataItem) {\r\n const label = dataItem.get(\"label\");\r\n if (label) {\r\n return populateString(label, this.get(\"tooltipText\", \"\"));\r\n }\r\n }\r\n }\r\n _updateTooltipText(tooltip, position) {\r\n tooltip._setDataItem(this.dataItems[this.axisPositionToIndex(position)]);\r\n tooltip.label.text.markDirtyText();\r\n }\r\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\r\n getSeriesItem(series, position) {\r\n if (this.dataItems.length > 0) {\r\n let fieldName = (this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\"));\r\n let index = this.axisPositionToIndex(position);\r\n // try simple first\r\n let seriesDataItem = series.dataItems[index];\r\n let axisDataItem = this.dataItems[index];\r\n let category = axisDataItem.get(\"category\");\r\n if (seriesDataItem && axisDataItem) {\r\n if (seriesDataItem.get(fieldName) === category) {\r\n return seriesDataItem;\r\n }\r\n }\r\n // if not found, try looking\r\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\r\n let dataItem = series.dataItems[i];\r\n if (dataItem.get(fieldName) === category) {\r\n return dataItem;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Zooms the axis to specific `start` and `end` indexes.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @param duration Duration in milliseconds\r\n */\r\n zoomToIndexes(start, end, duration) {\r\n let len = this.dataItems.length;\r\n this.zoom(start / len, end / len, duration);\r\n }\r\n zoomToCategories(startCategory, endCategory, duration) {\r\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1, duration);\r\n }\r\n /**\r\n * Returns position span between start and end of a single cell in axis.\r\n *\r\n * @since 5.2.30\r\n * @return Position\r\n */\r\n getCellWidthPosition() {\r\n return this._frequency / this.dataItems.length / (this.get(\"end\", 1) - this.get(\"start\", 0));\r\n }\r\n /**\r\n * @ignore\r\n */\r\n nextPosition(count) {\r\n if (count == null) {\r\n count = 1;\r\n }\r\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\r\n count *= -1;\r\n }\r\n const position = this.getPrivate(\"tooltipPosition\", 0);\r\n const index = $math.fitToRange(this.axisPositionToIndex(position) + count, 0, this.dataItems.length - 1);\r\n return this.toGlobalPosition(this.indexToPosition(index));\r\n }\r\n}\r\nObject.defineProperty(CategoryAxis, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"CategoryAxis\"\r\n});\r\nObject.defineProperty(CategoryAxis, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Axis.classNames.concat([CategoryAxis.className])\r\n});\r\n//# sourceMappingURL=CategoryAxis.js.map","import { AxisRenderer } from \"./AxisRenderer\";\r\nimport { p100 } from \"../../../core/util/Percent\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nimport { Rectangle } from \"../../../core/render/Rectangle\";\r\n/**\r\n * Used to render vertical axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\r\nexport class AxisRendererY extends AxisRenderer {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_downY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"thumb\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Rectangle.new(this._root, { height: p100, isMeasured: false, themeTags: [\"axis\", \"y\", \"thumb\"] })\r\n });\r\n }\r\n _afterNew() {\r\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"y\"]);\r\n if (this._settings.opposite) {\r\n this._settings.themeTags.push(\"opposite\");\r\n }\r\n super._afterNew();\r\n this.setPrivateRaw(\"letter\", \"Y\");\r\n const gridTemplate = this.grid.template;\r\n gridTemplate.set(\"width\", p100);\r\n gridTemplate.set(\"height\", 0);\r\n gridTemplate.set(\"draw\", (display, graphics) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(graphics.width(), 0);\r\n });\r\n this.set(\"draw\", (display, renderer) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(0, renderer.height());\r\n });\r\n }\r\n _getPan(point1, point2) {\r\n return (point1.y - point2.y) / this.height();\r\n }\r\n _changed() {\r\n super._changed();\r\n const axis = this.axis;\r\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\r\n axis.ghostLabel.set(\"y\", -1000);\r\n const thumb = this.thumb;\r\n const opposite = \"opposite\";\r\n const inside = \"inside\";\r\n const chart = this.chart;\r\n if (this.isDirty(opposite) || this.isDirty(inside)) {\r\n const axisChildren = axis.children;\r\n if (this.get(inside)) {\r\n axis.addTag(inside);\r\n }\r\n else {\r\n axis.removeTag(inside);\r\n }\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n const children = chart.rightAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis, 0);\r\n }\r\n axis.addTag(opposite);\r\n axisChildren.moveValue(this, 0);\r\n }\r\n else {\r\n const children = chart.leftAxesContainer.children;\r\n if (children.indexOf(axis) == -1) {\r\n children.moveValue(axis);\r\n }\r\n axis.removeTag(opposite);\r\n axisChildren.moveValue(this);\r\n }\r\n axis.ghostLabel._applyThemes();\r\n this.labels.each((label) => {\r\n label._applyThemes();\r\n });\r\n this.root._markDirtyRedraw();\r\n }\r\n axis.markDirtySize();\r\n }\r\n const w = axis.labelsContainer.width();\r\n if (chart) {\r\n if (this.get(opposite)) {\r\n thumb.set(\"centerX\", 0);\r\n }\r\n else {\r\n thumb.set(\"centerX\", w);\r\n }\r\n }\r\n thumb.setPrivate(\"width\", w);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n processAxis() {\r\n super.processAxis();\r\n const axis = this.axis;\r\n if (axis.get(\"height\") == null) {\r\n axis.set(\"height\", p100);\r\n }\r\n const horizontalLayout = this._root.horizontalLayout;\r\n axis.set(\"layout\", horizontalLayout);\r\n axis.labelsContainer.set(\"height\", p100);\r\n axis.axisHeader.set(\"layout\", horizontalLayout);\r\n }\r\n _updatePositions() {\r\n const axis = this.axis;\r\n const y = axis.y() - $utils.relativeToValue(axis.get(\"centerY\", 0), axis.height());\r\n axis.gridContainer.set(\"y\", y);\r\n axis.topGridContainer.set(\"y\", y);\r\n axis.bulletsContainer.set(\"x\", this.x());\r\n const chart = axis.chart;\r\n if (chart) {\r\n const plotContainer = chart.plotContainer;\r\n const axisHeader = axis.axisHeader;\r\n let height = axis.get(\"marginTop\", 0);\r\n if (axisHeader.children.length > 0) {\r\n height = axis.axisHeader.height();\r\n axis.set(\"marginTop\", height + 1);\r\n }\r\n else {\r\n axisHeader.set(\"height\", height);\r\n }\r\n axisHeader.setAll({ y: axis.y() - height, x: -1, width: plotContainer.width() + 2 });\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n axisLength() {\r\n return this.axis.innerHeight();\r\n }\r\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\r\n positionToPoint(position) {\r\n return { x: 0, y: this.positionToCoordinate(position) };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLabel(label, position, endPosition, count) {\r\n if (label) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = label.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = label.get(\"location\", location);\r\n }\r\n const opposite = this.get(\"opposite\");\r\n const inside = label.get(\"inside\", this.get(\"inside\", false));\r\n if (opposite) {\r\n label.set(\"x\", 0);\r\n if (inside) {\r\n label.set(\"position\", \"absolute\");\r\n }\r\n else {\r\n label.set(\"position\", \"relative\");\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n label.set(\"x\", 0);\r\n label.set(\"position\", \"absolute\");\r\n }\r\n else {\r\n label.set(\"x\", undefined);\r\n label.set(\"position\", \"relative\");\r\n }\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n label.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateGrid(grid, position, endPosition) {\r\n if (grid) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = grid.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n grid.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(grid, position, 0, 1);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTick(tick, position, endPosition, count) {\r\n if (tick) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = 0.5;\r\n if ($type.isNumber(count) && count > 1) {\r\n location = tick.get(\"multiLocation\", location);\r\n }\r\n else {\r\n location = tick.get(\"location\", location);\r\n }\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n tick.set(\"y\", this.positionToCoordinate(position));\r\n let length = tick.get(\"length\", 0);\r\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\r\n if (this.get(\"opposite\")) {\r\n tick.set(\"x\", 0);\r\n if (inside) {\r\n length *= -1;\r\n }\r\n }\r\n else {\r\n if (!inside) {\r\n length *= -1;\r\n }\r\n }\r\n tick.set(\"draw\", (display) => {\r\n display.moveTo(0, 0);\r\n display.lineTo(length, 0);\r\n });\r\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateBullet(bullet, position, endPosition) {\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n let location = bullet.get(\"location\", 0.5);\r\n if ($type.isNumber(endPosition) && endPosition != position) {\r\n position = position + (endPosition - position) * location;\r\n }\r\n let bulletPosition = this.axis.roundAxisPosition(position, location);\r\n let previousBullet = this.axis._bullets[bulletPosition];\r\n let d = 1;\r\n if (this.get(\"opposite\")) {\r\n d = -1;\r\n }\r\n if (bullet.get(\"stacked\")) {\r\n if (previousBullet) {\r\n let previousSprite = previousBullet.get(\"sprite\");\r\n if (previousSprite) {\r\n sprite.set(\"x\", previousSprite.x() + previousSprite.width() * d);\r\n }\r\n }\r\n else {\r\n sprite.set(\"x\", 0);\r\n }\r\n }\r\n this.axis._bullets[bulletPosition] = bullet;\r\n sprite.set(\"y\", this.positionToCoordinate(position));\r\n this.toggleVisibility(sprite, position, 0, 1);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateFill(fill, position, endPosition) {\r\n if (fill) {\r\n if (!$type.isNumber(position)) {\r\n position = 0;\r\n }\r\n if (!$type.isNumber(endPosition)) {\r\n endPosition = 1;\r\n }\r\n let y0 = this.positionToCoordinate(position);\r\n let y1 = this.positionToCoordinate(endPosition);\r\n this.fillDrawMethod(fill, y0, y1);\r\n }\r\n }\r\n fillDrawMethod(fill, y0, y1) {\r\n fill.set(\"draw\", (display) => {\r\n // using for holes, so can not be rectangle\r\n const w = this.axis.gridContainer.width();\r\n const h = this.height();\r\n if (y1 < y0) {\r\n [y1, y0] = [y0, y1];\r\n }\r\n if (y0 > h || y1 < 0) {\r\n return;\r\n }\r\n //y0 = Math.max(0, y0);\r\n //y1 = Math.min(h, y1);\r\n display.moveTo(0, y0);\r\n display.lineTo(w, y0);\r\n display.lineTo(w, y1);\r\n display.lineTo(0, y1);\r\n display.lineTo(0, y0);\r\n });\r\n }\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n positionToCoordinate(position) {\r\n if (!this._inversed) {\r\n return (this._end - position) * this._axisLength;\r\n }\r\n else {\r\n return (position - this._start) * this._axisLength;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n positionTooltip(tooltip, position) {\r\n this._positionTooltip(tooltip, { x: 0, y: this.positionToCoordinate(position) });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltipBounds(tooltip) {\r\n const inside = this.get(\"inside\");\r\n const num = 100000;\r\n let global = this._display.toGlobal({ x: 0, y: 0 });\r\n let y = global.y;\r\n let x = 0;\r\n let h = this.axisLength();\r\n let w = num;\r\n let pointerOrientation = \"right\";\r\n if (this.get(\"opposite\")) {\r\n if (inside) {\r\n pointerOrientation = \"right\";\r\n x = global.x - num;\r\n w = num;\r\n }\r\n else {\r\n pointerOrientation = \"left\";\r\n x = global.x;\r\n w = num;\r\n }\r\n }\r\n else {\r\n if (inside) {\r\n pointerOrientation = \"left\";\r\n x = global.x;\r\n w = num;\r\n }\r\n else {\r\n pointerOrientation = \"right\";\r\n x = global.x - num;\r\n w = num;\r\n }\r\n }\r\n const bounds = { left: x, right: x + w, top: y, bottom: y + h };\r\n const oldBounds = tooltip.get(\"bounds\");\r\n if (!$utils.sameBounds(bounds, oldBounds)) {\r\n tooltip.set(\"bounds\", bounds);\r\n tooltip.set(\"pointerOrientation\", pointerOrientation);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _updateLC() {\r\n const axis = this.axis;\r\n const parent = axis.parent;\r\n if (parent) {\r\n const h = parent.innerHeight();\r\n this._lc = this.axisLength() / h;\r\n this._ls = axis.y() / h;\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toAxisPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n position -= this._ls;\r\n position = position * (end - start) / this._lc;\r\n if (this.get(\"inversed\")) {\r\n position = start + position;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n toGlobalPosition(position) {\r\n const start = this._start || 0;\r\n const end = this._end || 1;\r\n if (this.get(\"inversed\")) {\r\n position = position - start;\r\n }\r\n else {\r\n position = end - position;\r\n }\r\n position = position / (end - start) * this._lc;\r\n position += this._ls;\r\n return position;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n fixPosition(position) {\r\n if (!this.get(\"inversed\")) {\r\n return 1 - position;\r\n }\r\n return position;\r\n }\r\n}\r\nObject.defineProperty(AxisRendererY, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"AxisRendererY\"\r\n});\r\nObject.defineProperty(AxisRendererY, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: AxisRenderer.classNames.concat([AxisRendererY.className])\r\n});\r\n//# sourceMappingURL=AxisRendererY.js.map","import { __awaiter } from \"tslib\";\r\nimport { DataItem } from \"../../../core/render/Component\";\r\nimport { Series } from \"../../../core/render/Series\";\r\nimport { List } from \"../../../core/util/List\";\r\nimport { Container } from \"../../../core/render/Container\";\r\nimport { Graphics } from \"../../../core/render/Graphics\";\r\nimport * as $type from \"../../../core/util/Type\";\r\nimport * as $object from \"../../../core/util/Object\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\n/**\r\n * @ignore\r\n */\r\nfunction min(left, right) {\r\n if (left == null) {\r\n return right;\r\n }\r\n else if (right == null) {\r\n return left;\r\n }\r\n else if (right < left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction max(left, right) {\r\n if (left == null) {\r\n return right;\r\n }\r\n else if (right == null) {\r\n return left;\r\n }\r\n else if (right > left) {\r\n return right;\r\n }\r\n else {\r\n return left;\r\n }\r\n}\r\n/**\r\n * A base class for all XY chart series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/} for more info\r\n */\r\nexport class XYSeries extends Series {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_xField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xOpenField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yOpenField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xLowField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_xHighField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yLowField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_yHighField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_axesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_stackDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_selectionProcessed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataSets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_mainContainerMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n /**\r\n * A [[Container]] that us used to put series' elements in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"mainContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, {}))\r\n });\r\n /**\r\n * A list of axis ranges that affect the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n */\r\n Object.defineProperty(this, \"axisRanges\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new List()\r\n });\r\n Object.defineProperty(this, \"_skipped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_couldStackTo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_reallyStackedTo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_stackedSeries\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_aLocationX0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_aLocationX1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_aLocationY0\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_aLocationY1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(this, \"_showBullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"valueXFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"valueX\",\r\n \"openValueX\",\r\n \"lowValueX\",\r\n \"highValueX\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"valueYFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\r\n \"valueY\",\r\n \"openValueY\",\r\n \"lowValueY\",\r\n \"highValueY\"\r\n ]\r\n });\r\n Object.defineProperty(this, \"_valueXFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueYFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // used for full min/max\r\n Object.defineProperty(this, \"_valueXShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueYShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // used for selection (uses working)\r\n Object.defineProperty(this, \"__valueXShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"__valueYShowFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_emptyDataItem\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new DataItem(this, undefined, {})\r\n });\r\n Object.defineProperty(this, \"_dataSetId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipFieldX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipFieldY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_posXDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_posYDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n }\r\n _afterNew() {\r\n this.fields.push(\"categoryX\", \"categoryY\", \"openCategoryX\", \"openCategoryY\");\r\n this.valueFields.push(\"valueX\", \"valueY\", \"openValueX\", \"openValueY\", \"lowValueX\", \"lowValueY\", \"highValueX\", \"highValueY\");\r\n this._setRawDefault(\"vcx\", 1);\r\n this._setRawDefault(\"vcy\", 1);\r\n // this can't go to themes, as data might be parsed before theme\r\n this._setRawDefault(\"valueXShow\", \"valueXWorking\");\r\n this._setRawDefault(\"valueYShow\", \"valueYWorking\");\r\n this._setRawDefault(\"openValueXShow\", \"openValueXWorking\");\r\n this._setRawDefault(\"openValueYShow\", \"openValueYWorking\");\r\n this._setRawDefault(\"lowValueXShow\", \"lowValueXWorking\");\r\n this._setRawDefault(\"lowValueYShow\", \"lowValueYWorking\");\r\n this._setRawDefault(\"highValueXShow\", \"highValueXWorking\");\r\n this._setRawDefault(\"highValueYShow\", \"highValueYWorking\");\r\n this._setRawDefault(\"lowValueXGrouped\", \"low\");\r\n this._setRawDefault(\"lowValueYGrouped\", \"low\");\r\n this._setRawDefault(\"highValueXGrouped\", \"high\");\r\n this._setRawDefault(\"highValueYGrouped\", \"high\");\r\n super._afterNew();\r\n this.set(\"maskContent\", true);\r\n this._disposers.push(this.axisRanges.events.onAll((change) => {\r\n if (change.type === \"clear\") {\r\n $array.each(change.oldValues, (axisRange) => {\r\n this._removeAxisRange(axisRange);\r\n });\r\n }\r\n else if (change.type === \"push\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n this._processAxisRange(change.newValue);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n this._removeAxisRange(change.oldValue);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n this._processAxisRange(change.value);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n }));\r\n this.states.create(\"hidden\", { opacity: 1, visible: false });\r\n this.onPrivate(\"startIndex\", () => {\r\n this.root.events.once(\"frameended\", () => {\r\n this.updateLegendValue();\r\n });\r\n });\r\n this.onPrivate(\"endIndex\", () => {\r\n this.root.events.once(\"frameended\", () => {\r\n this.updateLegendValue();\r\n });\r\n });\r\n this._makeFieldNames();\r\n }\r\n _processAxisRange(axisRange) {\r\n const container = Container.new(this._root, {});\r\n axisRange.container = container;\r\n this.children.push(container);\r\n axisRange.series = this;\r\n const axisDataItem = axisRange.axisDataItem;\r\n axisDataItem.setRaw(\"isRange\", true);\r\n const axis = axisDataItem.component;\r\n if (axis) {\r\n axis._processAxisRange(axisDataItem, [\"range\", \"series\"]);\r\n const bullet = axisDataItem.get(\"bullet\");\r\n if (bullet) {\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n const axisFill = axisDataItem.get(\"axisFill\");\r\n if (axisFill) {\r\n container.set(\"mask\", axisFill);\r\n }\r\n axis._seriesAxisRanges.push(axisDataItem);\r\n }\r\n }\r\n _removeAxisRange(axisRange) {\r\n const axisDataItem = axisRange.axisDataItem;\r\n const axis = axisDataItem.component;\r\n axis.disposeDataItem(axisDataItem);\r\n $array.remove(axis._seriesAxisRanges, axisDataItem);\r\n const container = axisRange.container;\r\n if (container) {\r\n container.dispose();\r\n }\r\n }\r\n _updateFields() {\r\n super._updateFields();\r\n this._valueXFields = [];\r\n this._valueYFields = [];\r\n this._valueXShowFields = [];\r\n this._valueYShowFields = [];\r\n this.__valueXShowFields = [];\r\n this.__valueYShowFields = [];\r\n if (this.valueXFields) {\r\n $array.each(this.valueXFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueXFields.push(key);\r\n let field = this.get((key + \"Show\"));\r\n this.__valueXShowFields.push(field);\r\n if (field.indexOf(\"Working\") != -1) {\r\n this._valueXShowFields.push(field.split(\"Working\")[0]);\r\n }\r\n else {\r\n this._valueXShowFields.push(field);\r\n }\r\n }\r\n });\r\n }\r\n if (this.valueYFields) {\r\n $array.each(this.valueYFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueYFields.push(key);\r\n let field = this.get((key + \"Show\"));\r\n this.__valueYShowFields.push(field);\r\n if (field.indexOf(\"Working\") != -1) {\r\n this._valueYShowFields.push(field.split(\"Working\")[0]);\r\n }\r\n else {\r\n this._valueYShowFields.push(field);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._bullets = {};\r\n const chart = this.chart;\r\n if (chart) {\r\n chart.series.removeValue(this);\r\n }\r\n $array.removeFirst(this.get(\"xAxis\").series, this);\r\n $array.removeFirst(this.get(\"yAxis\").series, this);\r\n }\r\n // TODO use SelectKeys\r\n _min(key, value) {\r\n let newValue = min(this.getPrivate(key), value);\r\n this.setPrivate(key, newValue);\r\n }\r\n // TODO use SelectKeys\r\n _max(key, value) {\r\n let newValue = max(this.getPrivate(key), value);\r\n this.setPrivate(key, newValue);\r\n }\r\n _shouldMakeBullet(dataItem) {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n if (!xAxis.inited || !yAxis.inited) {\r\n return false;\r\n }\r\n const minBulletDistance = this.get(\"minBulletDistance\", 0);\r\n if (minBulletDistance > 0) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n let count = endIndex - startIndex;\r\n if (xAxis == baseAxis) {\r\n if (xAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\r\n return false;\r\n }\r\n }\r\n else if (yAxis == baseAxis) {\r\n if (yAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (dataItem.get(this._xField) != null && dataItem.get(this._yField) != null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _makeFieldNames() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const xName = xAxis.getPrivate(\"name\");\r\n const xCapName = $utils.capitalizeFirst(xName);\r\n const yName = yAxis.getPrivate(\"name\");\r\n const yCapName = $utils.capitalizeFirst(yName);\r\n const xLetter = xAxis.get(\"renderer\").getPrivate(\"letter\");\r\n const yLetter = yAxis.get(\"renderer\").getPrivate(\"letter\");\r\n const open = \"open\";\r\n const low = \"low\";\r\n const high = \"high\";\r\n const show = \"Show\";\r\n if (xAxis.className === \"ValueAxis\") {\r\n this._xField = this.get((xName + xLetter + show));\r\n this._xOpenField = this.get((open + xCapName + xLetter + show));\r\n this._xLowField = this.get((low + xCapName + xLetter + show));\r\n this._xHighField = this.get((high + xCapName + xLetter + show));\r\n }\r\n else {\r\n this._xField = (xName + xLetter);\r\n this._xOpenField = (open + xCapName + xLetter);\r\n this._xLowField = (low + xCapName + xLetter);\r\n this._xHighField = (high + xCapName + xLetter);\r\n }\r\n if (yAxis.className === \"ValueAxis\") {\r\n this._yField = this.get((yName + yLetter + show));\r\n this._yOpenField = this.get((open + yCapName + yLetter + show));\r\n this._yLowField = this.get((low + yCapName + yLetter + show));\r\n this._yHighField = this.get((high + yCapName + yLetter + show));\r\n }\r\n else {\r\n this._yField = (yName + yLetter);\r\n this._yOpenField = (open + yCapName + yLetter);\r\n this._yLowField = (low + yCapName + yLetter);\r\n this._yHighField = (high + yCapName + yLetter);\r\n }\r\n }\r\n _fixVC() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const hiddenState = this.states.lookup(\"hidden\");\r\n const sequencedInterpolation = this.get(\"sequencedInterpolation\");\r\n if (hiddenState) {\r\n let value = 0;\r\n if (sequencedInterpolation) {\r\n value = 0.999999999999; // makes animate, good for stacked\r\n }\r\n if (xAxis === baseAxis) {\r\n hiddenState.set(\"vcy\", value);\r\n }\r\n else if (yAxis === baseAxis) {\r\n hiddenState.set(\"vcx\", value);\r\n }\r\n else {\r\n hiddenState.set(\"vcy\", value);\r\n hiddenState.set(\"vcx\", value);\r\n }\r\n }\r\n }\r\n _handleMaskBullets() {\r\n if (this.isDirty(\"maskBullets\")) {\r\n this.bulletsContainer.set(\"maskContent\", this.get(\"maskBullets\"));\r\n }\r\n }\r\n _fixPosition() {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n this.set(\"x\", xAxis.x() - $utils.relativeToValue(xAxis.get(\"centerX\", 0), xAxis.width()) - xAxis.parent.get(\"paddingLeft\", 0));\r\n this.set(\"y\", yAxis.y() - $utils.relativeToValue(yAxis.get(\"centerY\", 0), yAxis.height()) - yAxis.parent.get(\"paddingTop\", 0));\r\n this.bulletsContainer.set(\"y\", this.y());\r\n this.bulletsContainer.set(\"x\", this.x());\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n this._bullets = {};\r\n if (this.isDirty(\"valueYShow\") || this.isDirty(\"valueXShow\") || this.isDirty(\"openValueYShow\") || this.isDirty(\"openValueXShow\") || this.isDirty(\"lowValueYShow\") || this.isDirty(\"lowValueXShow\") || this.isDirty(\"highValueYShow\") || this.isDirty(\"highValueXShow\")) {\r\n this._updateFields();\r\n this._makeFieldNames();\r\n this._valuesDirty = true;\r\n }\r\n if (this.isDirty(\"xAxis\") || this.isDirty(\"yAxis\")) {\r\n this._valuesDirty = true;\r\n }\r\n this.set(\"width\", this.get(\"xAxis\").width());\r\n this.set(\"height\", this.get(\"yAxis\").height());\r\n this._handleMaskBullets();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const tooltipPositionX = this.get(\"tooltipPositionX\");\r\n let tooltipFieldX;\r\n switch (tooltipPositionX) {\r\n case \"open\":\r\n tooltipFieldX = this._xOpenField;\r\n break;\r\n case \"low\":\r\n tooltipFieldX = this._xLowField;\r\n break;\r\n case \"high\":\r\n tooltipFieldX = this._xHighField;\r\n break;\r\n default:\r\n tooltipFieldX = this._xField;\r\n }\r\n this._tooltipFieldX = tooltipFieldX;\r\n const tooltipPositionY = this.get(\"tooltipPositionY\");\r\n let tooltipFieldY;\r\n switch (tooltipPositionY) {\r\n case \"open\":\r\n tooltipFieldY = this._yOpenField;\r\n break;\r\n case \"low\":\r\n tooltipFieldY = this._yLowField;\r\n break;\r\n case \"high\":\r\n tooltipFieldY = this._yHighField;\r\n break;\r\n default:\r\n tooltipFieldY = this._yField;\r\n }\r\n this._tooltipFieldY = tooltipFieldY;\r\n if (this.isDirty(\"baseAxis\")) {\r\n this._fixVC();\r\n }\r\n this._fixPosition();\r\n const stacked = this.get(\"stacked\");\r\n if (this.isDirty(\"stacked\")) {\r\n if (stacked) {\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n }\r\n else {\r\n this._stack();\r\n }\r\n }\r\n else {\r\n this._unstack();\r\n }\r\n }\r\n if (this._valuesDirty && !this._dataProcessed) {\r\n this._dataProcessed = true;\r\n if (stacked) {\r\n this._stack();\r\n }\r\n $array.each(this.dataItems, (dataItem) => {\r\n $array.each(this._valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedXValue(dataItem, key);\r\n }\r\n this._min(\"minX\", value);\r\n this._max(\"maxX\", value);\r\n }\r\n });\r\n $array.each(this._valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedYValue(dataItem, key);\r\n }\r\n this._min(\"minY\", value);\r\n this._max(\"maxY\", value);\r\n }\r\n });\r\n xAxis.processSeriesDataItem(dataItem, this._valueXFields);\r\n yAxis.processSeriesDataItem(dataItem, this._valueYFields);\r\n });\r\n xAxis._seriesValuesDirty = true;\r\n yAxis._seriesValuesDirty = true;\r\n if (!this.get(\"ignoreMinMax\")) {\r\n if (this.isPrivateDirty(\"minX\") || this.isPrivateDirty(\"maxX\")) {\r\n xAxis.markDirtyExtremes();\r\n }\r\n if (this.isPrivateDirty(\"minY\") || this.isPrivateDirty(\"maxY\")) {\r\n yAxis.markDirtyExtremes();\r\n }\r\n }\r\n this._markStakedDirtyStack();\r\n //this.updateLegendMarker(undefined); // causes legend marker to change color instantly when on\r\n if (!this.get(\"tooltipDataItem\")) {\r\n this.updateLegendValue(undefined);\r\n }\r\n }\r\n if (this.isDirty(\"vcx\") || this.isDirty(\"vcy\")) {\r\n this._markStakedDirtyStack();\r\n }\r\n if (!this._dataGrouped) {\r\n xAxis._groupSeriesData(this);\r\n yAxis._groupSeriesData(this);\r\n this._dataGrouped = true;\r\n }\r\n if (this._valuesDirty || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"adjustedStartIndex\") || this.isPrivateDirty(\"endIndex\") || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._stackDirty || this._sizeDirty) {\r\n let startIndex = this.startIndex();\r\n let endIndex = this.endIndex();\r\n let minBulletDistance = this.get(\"minBulletDistance\", 0);\r\n if (minBulletDistance > 0 && baseAxis) {\r\n if (baseAxis.get(\"renderer\").axisLength() / (endIndex - startIndex) > minBulletDistance) {\r\n this._showBullets = true;\r\n }\r\n else {\r\n this._showBullets = false;\r\n }\r\n }\r\n if ((this._psi != startIndex || this._pei != endIndex || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this.isPrivateDirty(\"adjustedStartIndex\") || this._stackDirty || this._valuesDirty) && !this._selectionProcessed) {\r\n this._selectionProcessed = true;\r\n const vcx = this.get(\"vcx\", 1);\r\n const vcy = this.get(\"vcy\", 1);\r\n const stacked = this.get(\"stacked\", false);\r\n const outOfSelection = this.getPrivate(\"outOfSelection\");\r\n if (baseAxis === xAxis || !baseAxis) {\r\n yAxis._calculateTotals();\r\n this.setPrivateRaw(\"selectionMinY\", undefined);\r\n this.setPrivateRaw(\"selectionMaxY\", undefined);\r\n if (!outOfSelection) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this.processYSelectionDataItem(this.dataItems[i], vcy, stacked);\r\n }\r\n }\r\n else {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n xAxis._calculateTotals();\r\n this.setPrivateRaw(\"selectionMinX\", undefined);\r\n this.setPrivateRaw(\"selectionMaxX\", undefined);\r\n if (!outOfSelection) {\r\n for (let i = startIndex; i < endIndex; i++) {\r\n this.processXSelectionDataItem(this.dataItems[i], vcx, stacked);\r\n }\r\n }\r\n else {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n }\r\n if (baseAxis === xAxis || !baseAxis) {\r\n if (this.get(\"valueYShow\") !== \"valueYWorking\") {\r\n const selectionMinY = this.getPrivate(\"selectionMinY\");\r\n if (selectionMinY != null) {\r\n this.setPrivateRaw(\"minY\", selectionMinY);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const selectionMaxY = this.getPrivate(\"selectionMaxY\");\r\n if (selectionMaxY != null) {\r\n this.setPrivateRaw(\"maxY\", selectionMaxY);\r\n yAxis.markDirtyExtremes();\r\n }\r\n }\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n if (this.get(\"valueXShow\") !== \"valueXWorking\") {\r\n const selectionMinX = this.getPrivate(\"selectionMinX\");\r\n if (selectionMinX != null) {\r\n this.setPrivateRaw(\"minX\", selectionMinX);\r\n yAxis.markDirtyExtremes();\r\n }\r\n const selectionMaxX = this.getPrivate(\"selectionMaxX\");\r\n if (selectionMaxX != null) {\r\n this.setPrivateRaw(\"maxX\", selectionMaxX);\r\n xAxis.markDirtyExtremes();\r\n }\r\n }\r\n }\r\n if (this.isPrivateDirty(\"selectionMinX\") || this.isPrivateDirty(\"selectionMaxX\")) {\r\n xAxis.markDirtySelectionExtremes();\r\n }\r\n if (this.isPrivateDirty(\"selectionMinY\") || this.isPrivateDirty(\"selectionMaxY\")) {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n // this.updateLegendValue(undefined); flickers while panning\r\n }\r\n }\r\n }\r\n _makeRangeMask() {\r\n if (this.axisRanges.length > 0) {\r\n let mainContainerMask = this._mainContainerMask;\r\n if (mainContainerMask == null) {\r\n mainContainerMask = this.children.push(Graphics.new(this._root, {}));\r\n this._mainContainerMask = mainContainerMask;\r\n mainContainerMask.set(\"draw\", (display, target) => {\r\n const parent = this.parent;\r\n if (parent) {\r\n const w = this._root.container.width();\r\n const h = this._root.container.height();\r\n display.moveTo(-w, -h);\r\n display.lineTo(-w, h * 2);\r\n display.lineTo(w * 2, h * 2);\r\n display.lineTo(w * 2, -h);\r\n display.lineTo(-w, -h);\r\n this.axisRanges.each((axisRange) => {\r\n const fill = axisRange.axisDataItem.get(\"axisFill\");\r\n if (parent) {\r\n if (fill) {\r\n let draw = fill.get(\"draw\");\r\n if (draw) {\r\n draw(display, target);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n this.mainContainer._display.mask = mainContainerMask._display;\r\n });\r\n }\r\n mainContainerMask.markDirty();\r\n mainContainerMask._markDirtyKey(\"fill\");\r\n }\r\n else {\r\n this.mainContainer._display.mask = null;\r\n }\r\n }\r\n _updateChildren() {\r\n super._updateChildren();\r\n // save for performance\r\n this._x = this.x();\r\n this._y = this.y();\r\n this._makeRangeMask();\r\n }\r\n _stack() {\r\n const chart = this.chart;\r\n if (chart) {\r\n const seriesIndex = chart.series.indexOf(this);\r\n this._couldStackTo = [];\r\n if (seriesIndex > 0) {\r\n let series;\r\n for (let i = seriesIndex - 1; i >= 0; i--) {\r\n series = chart.series.getIndex(i);\r\n if (series.get(\"xAxis\") === this.get(\"xAxis\") && series.get(\"yAxis\") === this.get(\"yAxis\") && series.className === this.className) {\r\n this._couldStackTo.push(series);\r\n if (!series.get(\"stacked\")) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this._stackDataItems();\r\n }\r\n }\r\n _unstack() {\r\n $object.each(this._reallyStackedTo, (_key, value) => {\r\n delete (value._stackedSeries[this.uid]);\r\n });\r\n this._reallyStackedTo = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n dataItem.setRaw(\"stackToItemY\", undefined);\r\n dataItem.setRaw(\"stackToItemX\", undefined);\r\n });\r\n }\r\n _stackDataItems() {\r\n // this works only with the same number of data @todo: search by date/category?\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n let field;\r\n let stackToItemKey;\r\n if (baseAxis === xAxis) {\r\n field = \"valueY\";\r\n stackToItemKey = \"stackToItemY\";\r\n }\r\n else if (baseAxis === yAxis) {\r\n field = \"valueX\";\r\n stackToItemKey = \"stackToItemX\";\r\n }\r\n let len = this._couldStackTo.length;\r\n let index = 0;\r\n const stackToNegative = this.get(\"stackToNegative\");\r\n this._reallyStackedTo = {};\r\n $array.each(this.dataItems, (dataItem) => {\r\n for (let s = 0; s < len; s++) {\r\n let stackToSeries = this._couldStackTo[s];\r\n let stackToItem = stackToSeries.dataItems[index];\r\n let value = dataItem.get(field);\r\n if (stackToItem) {\r\n let stackValue = stackToItem.get(field);\r\n if (stackToNegative) {\r\n if ($type.isNumber(value)) {\r\n if ($type.isNumber(stackValue)) {\r\n if (value >= 0 && stackValue >= 0) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n if (value < 0 && stackValue < 0) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n if ($type.isNumber(value) && $type.isNumber(stackValue)) {\r\n dataItem.setRaw(stackToItemKey, stackToItem);\r\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\r\n stackToSeries._stackedSeries[this.uid] = this;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n index++;\r\n });\r\n }\r\n processXSelectionDataItem(dataItem, vcx, stacked) {\r\n $array.each(this.__valueXShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedXValueWorking(dataItem, key);\r\n }\r\n this._min(\"selectionMinX\", value);\r\n this._max(\"selectionMaxX\", value * vcx);\r\n }\r\n });\r\n }\r\n processYSelectionDataItem(dataItem, vcy, stacked) {\r\n $array.each(this.__valueYShowFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n if (stacked) {\r\n value += this.getStackedYValueWorking(dataItem, key);\r\n }\r\n this._min(\"selectionMinY\", value);\r\n this._max(\"selectionMaxY\", value * vcy);\r\n }\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedYValueWorking(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n const stackedToSeries = stackToItem.component;\r\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcy\", 1) + this.getStackedYValueWorking(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedXValueWorking(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n const stackedToSeries = stackToItem.component;\r\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcx\", 1) + this.getStackedXValueWorking(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedYValue(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemY\");\r\n if (stackToItem) {\r\n return stackToItem.get(key, 0) + this.getStackedYValue(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getStackedXValue(dataItem, key) {\r\n const stackToItem = dataItem.get(\"stackToItemX\");\r\n if (stackToItem) {\r\n return stackToItem.get(key, 0) + this.getStackedXValue(stackToItem, key);\r\n }\r\n return 0;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n createLegendMarker(_dataItem) {\r\n this.updateLegendMarker();\r\n }\r\n _markDirtyAxes() {\r\n this._axesDirty = true;\r\n this.markDirty();\r\n }\r\n _markDataSetDirty() {\r\n this._afterDataChange();\r\n this._valuesDirty = true;\r\n this._dataProcessed = false;\r\n this._aggregatesCalculated = false;\r\n this.markDirty();\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._axesDirty = false;\r\n this._selectionProcessed = false;\r\n this._stackDirty = false;\r\n this._dataProcessed = false;\r\n }\r\n _positionBullet(bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n let dataItem = sprite.dataItem;\r\n let locationX = bullet.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\r\n let locationY = bullet.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n let positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1));\r\n let positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1));\r\n let point = this.getPoint(positionX, positionY);\r\n let left = dataItem.get(\"left\", point.x);\r\n let right = dataItem.get(\"right\", point.x);\r\n let top = dataItem.get(\"top\", point.y);\r\n let bottom = dataItem.get(\"bottom\", point.y);\r\n let x = 0;\r\n let y = 0;\r\n let w = right - left;\r\n let h = bottom - top;\r\n if (this._shouldShowBullet(positionX, positionY)) {\r\n sprite.setPrivate(\"visible\", !bullet.getPrivate(\"hidden\"));\r\n let field = bullet.get(\"field\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n if (field != undefined) {\r\n let realField;\r\n if (baseAxis == xAxis) {\r\n if (field == \"value\") {\r\n realField = this._yField;\r\n }\r\n else if (field == \"open\") {\r\n realField = this._yOpenField;\r\n }\r\n else if (field == \"high\") {\r\n realField = this._yHighField;\r\n }\r\n else if (field == \"low\") {\r\n realField = this._yLowField;\r\n }\r\n if (realField) {\r\n positionY = yAxis.getDataItemPositionY(dataItem, realField, 0, this.get(\"vcy\", 1));\r\n point = yAxis.get(\"renderer\").positionToPoint(positionY);\r\n y = point.y;\r\n x = left + w * locationX;\r\n }\r\n }\r\n else {\r\n if (field == \"value\") {\r\n realField = this._xField;\r\n }\r\n else if (field == \"open\") {\r\n realField = this._xOpenField;\r\n }\r\n else if (field == \"high\") {\r\n realField = this._xHighField;\r\n }\r\n else if (field == \"low\") {\r\n realField = this._xLowField;\r\n }\r\n if (realField) {\r\n positionX = xAxis.getDataItemPositionX(dataItem, realField, 0, this.get(\"vcx\", 1));\r\n point = xAxis.get(\"renderer\").positionToPoint(positionX);\r\n x = point.x;\r\n y = bottom - h * locationY;\r\n }\r\n }\r\n }\r\n else {\r\n x = left + w * locationX;\r\n y = bottom - h * locationY;\r\n }\r\n const stacked = bullet.get(\"stacked\");\r\n if (stacked) {\r\n const chart = this.chart;\r\n if (baseAxis == xAxis) {\r\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\r\n if (previousBullet) {\r\n let previousBounds = previousBullet.bounds();\r\n let bounds = sprite.localBounds();\r\n let yo = y;\r\n y = previousBounds.top;\r\n if (stacked == \"down\") {\r\n y = previousBounds.bottom - bounds.top;\r\n }\r\n else if (stacked == \"auto\") {\r\n if (chart) {\r\n if (yo < chart.plotContainer.height() / 2) {\r\n y = previousBounds.bottom - bounds.top;\r\n }\r\n else {\r\n y += bounds.bottom;\r\n }\r\n }\r\n }\r\n else {\r\n y += bounds.bottom;\r\n }\r\n }\r\n this._bullets[positionX + \"_\" + positionY] = sprite;\r\n }\r\n else {\r\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\r\n if (previousBullet) {\r\n let previousBounds = previousBullet.bounds();\r\n let bounds = sprite.localBounds();\r\n let xo = x;\r\n x = previousBounds.right;\r\n if (stacked == \"down\") {\r\n x = previousBounds.left - bounds.right;\r\n }\r\n else if (stacked == \"auto\") {\r\n if (chart) {\r\n if (xo < chart.plotContainer.width() / 2) {\r\n x = previousBounds.left - bounds.right;\r\n }\r\n else {\r\n x -= bounds.left;\r\n }\r\n }\r\n }\r\n else {\r\n x -= bounds.left;\r\n }\r\n }\r\n this._bullets[positionX + \"_\" + positionY] = sprite;\r\n }\r\n }\r\n if (sprite.isType(\"Label\")) {\r\n sprite.setPrivate(\"maxWidth\", Math.abs(w));\r\n sprite.setPrivate(\"maxHeight\", Math.abs(h));\r\n }\r\n sprite.setAll({ x, y });\r\n }\r\n else {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n }\r\n _shouldShowBullet(_positionX, _positionY) {\r\n return this._showBullets;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n setDataSet(id) {\r\n if (this._dataSets[id]) {\r\n this._handleDataSetChange();\r\n this._dataItems = this._dataSets[id];\r\n this._markDataSetDirty();\r\n this._dataSetId = id;\r\n const type = \"datasetchanged\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this, id: id });\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n resetGrouping() {\r\n $object.each(this._dataSets, (_key, dataSet) => {\r\n if (dataSet != this._mainDataItems) {\r\n $array.each(dataSet, (dataItem) => {\r\n this.disposeDataItem(dataItem);\r\n });\r\n }\r\n });\r\n this._dataSets = {};\r\n this._dataItems = this.mainDataItems;\r\n }\r\n _handleDataSetChange() {\r\n $array.each(this._dataItems, (dataItem) => {\r\n let bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n if (bullet) {\r\n let sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n sprite.setPrivate(\"visible\", false);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n this._selectionProcessed = false; // for totals to be calculated\r\n }\r\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\r\n show(duration) {\r\n const _super = Object.create(null, {\r\n show: { get: () => super.show }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._fixVC();\r\n let promises = [];\r\n promises.push(_super.show.call(this, duration).then(() => {\r\n this._isShowing = false;\r\n let xAxis = this.get(\"xAxis\");\r\n let yAxis = this.get(\"yAxis\");\r\n let baseAxis = this.get(\"baseAxis\");\r\n if (yAxis !== baseAxis) {\r\n yAxis.markDirtySelectionExtremes();\r\n }\r\n if (xAxis !== baseAxis) {\r\n xAxis.markDirtySelectionExtremes();\r\n }\r\n }));\r\n promises.push(this.bulletsContainer.show(duration));\r\n promises.push(this._sequencedShowHide(true, duration));\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\r\n hide(duration) {\r\n const _super = Object.create(null, {\r\n hide: { get: () => super.hide }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._fixVC();\r\n let promises = [];\r\n promises.push(_super.hide.call(this, duration).then(() => {\r\n this._isHiding = false;\r\n }));\r\n promises.push(this.bulletsContainer.hide(duration));\r\n promises.push(this._sequencedShowHide(false, duration));\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n if (!$type.isNumber(duration)) {\r\n duration = this.get(\"stateAnimationDuration\", 0);\r\n }\r\n const easing = this.get(\"stateAnimationEasing\");\r\n $array.each(this._valueFields, (key) => {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: dataItem.get(key), duration: duration, easing: easing }).waitForStop());\r\n });\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const hiddenState = this.states.create(\"hidden\", {});\r\n if (!$type.isNumber(duration)) {\r\n duration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\r\n }\r\n const easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const stacked = this.get(\"stacked\");\r\n if (baseAxis === xAxis || !baseAxis) {\r\n $array.each(this._valueYFields, (key) => {\r\n let min = yAxis.getPrivate(\"min\");\r\n let baseValue = yAxis.baseValue();\r\n if ($type.isNumber(min) && min > baseValue) {\r\n baseValue = min;\r\n }\r\n if (stacked) {\r\n baseValue = 0;\r\n }\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: baseValue, duration: duration, easing: easing }).waitForStop());\r\n }\r\n });\r\n }\r\n if (baseAxis === yAxis || !baseAxis) {\r\n let min = xAxis.getPrivate(\"min\");\r\n let baseValue = xAxis.baseValue();\r\n if ($type.isNumber(min) && min > baseValue) {\r\n baseValue = min;\r\n }\r\n if (stacked) {\r\n baseValue = 0;\r\n }\r\n $array.each(this._valueXFields, (key) => {\r\n let value = dataItem.get(key);\r\n if (value != null) {\r\n promises.push(dataItem.animate({ key: key + \"Working\", to: baseValue, duration: duration, easing: easing }).waitForStop());\r\n }\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _markDirtyStack() {\r\n this._stackDirty = true;\r\n this.markDirty();\r\n this._markStakedDirtyStack();\r\n }\r\n _markStakedDirtyStack() {\r\n const stackedSeries = this._stackedSeries;\r\n if (stackedSeries) {\r\n $object.each(stackedSeries, (_key, value) => {\r\n if (!value._stackDirty) {\r\n value._markDirtyStack();\r\n }\r\n });\r\n }\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._skipped) {\r\n this._markDirtyAxes();\r\n this._skipped = false;\r\n }\r\n }\r\n /**\r\n * Shows a tooltip for specific data item.\r\n *\r\n * @param dataItem Data item\r\n */\r\n showDataItemTooltip(dataItem) {\r\n if (!this.getPrivate(\"doNotUpdateLegend\")) {\r\n this.updateLegendMarker(dataItem);\r\n this.updateLegendValue(dataItem);\r\n }\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n if (!this.isHidden() && this.get(\"visible\")) {\r\n tooltip._setDataItem(dataItem);\r\n if (dataItem) {\r\n let locationX = this.get(\"locationX\", 0);\r\n let locationY = this.get(\"locationY\", 1);\r\n let itemLocationX = dataItem.get(\"locationX\", locationX);\r\n let itemLocationY = dataItem.get(\"locationY\", locationY);\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const vcx = this.get(\"vcx\", 1);\r\n const vcy = this.get(\"vcy\", 1);\r\n const xPos = xAxis.getDataItemPositionX(dataItem, this._tooltipFieldX, this._aLocationX0 + (this._aLocationX1 - this._aLocationX0) * itemLocationX, vcx);\r\n const yPos = yAxis.getDataItemPositionY(dataItem, this._tooltipFieldY, this._aLocationY0 + (this._aLocationY1 - this._aLocationY0) * itemLocationY, vcy);\r\n const point = this.getPoint(xPos, yPos);\r\n let show = true;\r\n $array.each(this._valueFields, (field) => {\r\n if (dataItem.get(field) == null) {\r\n show = false;\r\n }\r\n });\r\n if (show) {\r\n const chart = this.chart;\r\n if (chart && chart.inPlot(point)) {\r\n tooltip.label.text.markDirtyText();\r\n tooltip.set(\"tooltipTarget\", this._getTooltipTarget(dataItem));\r\n tooltip.set(\"pointTo\", this._display.toGlobal({ x: point.x, y: point.y }));\r\n }\r\n else {\r\n tooltip._setDataItem(undefined);\r\n }\r\n }\r\n else {\r\n tooltip._setDataItem(undefined);\r\n }\r\n }\r\n }\r\n else {\r\n this.hideTooltip();\r\n }\r\n }\r\n }\r\n hideTooltip() {\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.set(\"tooltipTarget\", this);\r\n }\r\n return super.hideTooltip();\r\n }\r\n _getTooltipTarget(dataItem) {\r\n if (this.get(\"seriesTooltipTarget\") == \"bullet\") {\r\n const bullets = dataItem.bullets;\r\n if (bullets && bullets.length > 0) {\r\n const bullet = bullets[0];\r\n const sprite = bullet.get(\"sprite\");\r\n if (sprite) {\r\n return sprite;\r\n }\r\n }\r\n }\r\n return this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendValue(dataItem) {\r\n const legendDataItem = this.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const label = legendDataItem.get(\"label\");\r\n if (label) {\r\n let txt = \"\";\r\n if (dataItem) {\r\n label._setDataItem(dataItem);\r\n txt = this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\")));\r\n }\r\n else {\r\n label._setDataItem(this._emptyDataItem);\r\n txt = this.get(\"legendRangeLabelText\", this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\"))));\r\n }\r\n label.set(\"text\", txt);\r\n }\r\n const valueLabel = legendDataItem.get(\"valueLabel\");\r\n if (valueLabel) {\r\n let txt = \"\";\r\n if (dataItem) {\r\n valueLabel._setDataItem(dataItem);\r\n txt = this.get(\"legendValueText\", valueLabel.get(\"text\", \"\"));\r\n }\r\n else {\r\n valueLabel._setDataItem(this._emptyDataItem);\r\n txt = this.get(\"legendRangeValueText\", valueLabel.get(\"text\", \"\"));\r\n }\r\n valueLabel.set(\"text\", txt);\r\n }\r\n }\r\n }\r\n _getItemReaderLabel() {\r\n let text = \"X: {\" + this._xField;\r\n if (this.get(\"xAxis\").isType(\"DateAxis\")) {\r\n text += \".formatDate()\";\r\n }\r\n text += \"}; Y: {\" + this._yField;\r\n if (this.get(\"yAxis\").isType(\"DateAxis\")) {\r\n text += \".formatDate()\";\r\n }\r\n text += \"}\";\r\n return text;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n getPoint(positionX, positionY) {\r\n let x = this.get(\"xAxis\").get(\"renderer\").positionToCoordinate(positionX);\r\n let y = this.get(\"yAxis\").get(\"renderer\").positionToCoordinate(positionY);\r\n // if coordinate is super big, canvas fails to draw line, capping to some big number (won't make any visual difference)\r\n let max = 999999999;\r\n if (y < -max) {\r\n y = -max;\r\n }\r\n if (y > max) {\r\n y = max;\r\n }\r\n if (x < -max) {\r\n x = -max;\r\n }\r\n if (x > max) {\r\n x = max;\r\n }\r\n return { x: x, y: y };\r\n }\r\n _shouldInclude(_position) {\r\n return true;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n handleCursorHide() {\r\n this.hideTooltip();\r\n this.updateLegendValue(undefined);\r\n this.updateLegendMarker(undefined);\r\n }\r\n _afterDataChange() {\r\n super._afterDataChange();\r\n this.get(\"xAxis\")._markDirtyKey(\"start\");\r\n this.get(\"yAxis\")._markDirtyKey(\"start\");\r\n this.resetExtremes();\r\n }\r\n /**\r\n * Resets cached axis scale values.\r\n */\r\n resetExtremes() {\r\n this.setPrivate(\"selectionMinX\", undefined);\r\n this.setPrivate(\"selectionMaxX\", undefined);\r\n this.setPrivate(\"selectionMinY\", undefined);\r\n this.setPrivate(\"selectionMaxY\", undefined);\r\n this.setPrivate(\"minX\", undefined);\r\n this.setPrivate(\"minY\", undefined);\r\n this.setPrivate(\"maxX\", undefined);\r\n this.setPrivate(\"maxY\", undefined);\r\n }\r\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\r\n createAxisRange(axisDataItem) {\r\n return this.axisRanges.push({\r\n axisDataItem: axisDataItem\r\n });\r\n }\r\n /**\r\n * A list of series's main (ungrouped) data items.\r\n *\r\n * @return Data items\r\n */\r\n get mainDataItems() {\r\n return this._mainDataItems;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n _adjustStartIndex(index) {\r\n const xAxis = this.get(\"xAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n if (baseAxis == xAxis && xAxis.isType(\"DateAxis\")) {\r\n const baseDuration = xAxis.baseDuration();\r\n const minSelection = xAxis.getPrivate(\"selectionMin\", xAxis.getPrivate(\"min\", 0));\r\n const dl = baseDuration * this.get(\"locationX\", 0.5);\r\n let value = -Infinity;\r\n while (value < minSelection) {\r\n const dataItem = this.dataItems[index];\r\n if (dataItem) {\r\n const open = dataItem.open;\r\n if (open) {\r\n value = open[\"valueX\"];\r\n }\r\n else {\r\n value = dataItem.get(\"valueX\", 0);\r\n }\r\n value += dl;\r\n if (value < minSelection) {\r\n index++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n }\r\n}\r\nObject.defineProperty(XYSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"XYSeries\"\r\n});\r\nObject.defineProperty(XYSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Series.classNames.concat([XYSeries.className])\r\n});\r\n//# sourceMappingURL=XYSeries.js.map","import { __awaiter } from \"tslib\";\r\nimport { XYSeries } from \"./XYSeries\";\r\nimport { Percent } from \"../../../core/util/Percent\";\r\nimport { visualSettings } from \"../../../core/render/Graphics\";\r\nimport * as $array from \"../../../core/util/Array\";\r\nimport * as $type from \"../../../core/util/Type\";\r\n/**\r\n * Base class for all \"column-based\" series\r\n */\r\nexport class BaseColumnSeries extends XYSeries {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_ph\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_pw\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n _makeGraphics(listTemplate, dataItem) {\r\n return this.makeColumn(dataItem, listTemplate);\r\n }\r\n _makeFieldNames() {\r\n super._makeFieldNames();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const categoryAxis = \"CategoryAxis\";\r\n const valueAxis = \"ValueAxis\";\r\n if (xAxis.isType(categoryAxis)) {\r\n if (!this.get(\"openCategoryXField\")) {\r\n this._xOpenField = this._xField;\r\n }\r\n }\r\n if (xAxis.isType(valueAxis)) {\r\n if (!this.get(\"openValueXField\")) {\r\n this._xOpenField = this._xField;\r\n }\r\n }\r\n if (yAxis.isType(categoryAxis)) {\r\n if (!this.get(\"openCategoryYField\")) {\r\n this._yOpenField = this._yField;\r\n }\r\n }\r\n if (yAxis.isType(valueAxis)) {\r\n if (!this.get(\"openValueYField\")) {\r\n this._yOpenField = this._yField;\r\n }\r\n }\r\n }\r\n _prepareChildren() {\r\n super._prepareChildren();\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const len = this.dataItems.length;\r\n const startIndex = Math.max(0, this.startIndex() - 2);\r\n const endIndex = Math.min(this.endIndex() + 2, len - 1);\r\n if (xAxis.inited && yAxis.inited) {\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n this._createGraphics(dataItem);\r\n }\r\n }\r\n }\r\n _updateChildren() {\r\n const chart = this.chart;\r\n if (chart) {\r\n this._ph = chart.plotContainer.height();\r\n this._pw = chart.plotContainer.width();\r\n }\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const columnsTemplate = this.columns.template;\r\n if (this.isDirty(\"fill\")) {\r\n if (columnsTemplate.get(\"fill\") == null) {\r\n columnsTemplate.set(\"fill\", this.get(\"fill\"));\r\n }\r\n }\r\n if (this.isDirty(\"fillPattern\")) {\r\n if (columnsTemplate.get(\"fillPattern\") == null) {\r\n columnsTemplate.set(\"fillPattern\", this.get(\"fillPattern\"));\r\n }\r\n }\r\n if (this.isDirty(\"stroke\")) {\r\n if (columnsTemplate.get(\"stroke\") == null) {\r\n columnsTemplate.set(\"stroke\", this.get(\"stroke\"));\r\n }\r\n }\r\n let index = 0;\r\n let clusterCount = 0;\r\n let i = 0;\r\n $array.each(baseAxis.series, (series) => {\r\n if (series instanceof BaseColumnSeries) {\r\n const stacked = series.get(\"stacked\");\r\n if (stacked && i == 0) {\r\n clusterCount++;\r\n }\r\n if (!stacked && series.get(\"clustered\")) {\r\n clusterCount++;\r\n }\r\n }\r\n if (series === this) {\r\n index = clusterCount - 1;\r\n }\r\n i++;\r\n });\r\n if (!this.get(\"clustered\")) {\r\n index = 0;\r\n clusterCount = 1;\r\n }\r\n if (clusterCount === 0) {\r\n clusterCount = 1;\r\n index = 0;\r\n }\r\n const xRenderer = xAxis.get(\"renderer\");\r\n const yRenderer = yAxis.get(\"renderer\");\r\n const cellStartLocation = \"cellStartLocation\";\r\n const cellEndLocation = \"cellEndLocation\";\r\n const cellLocationX0 = xRenderer.get(cellStartLocation, 0);\r\n const cellLocationX1 = xRenderer.get(cellEndLocation, 1);\r\n const cellLocationY0 = yRenderer.get(cellStartLocation, 0);\r\n const cellLocationY1 = yRenderer.get(cellEndLocation, 1);\r\n this._aLocationX0 = cellLocationX0 + (index / clusterCount) * (cellLocationX1 - cellLocationX0);\r\n this._aLocationX1 = cellLocationX0 + (index + 1) / clusterCount * (cellLocationX1 - cellLocationX0);\r\n ;\r\n this._aLocationY0 = cellLocationY0 + (index / clusterCount) * (cellLocationY1 - cellLocationY0);\r\n this._aLocationY1 = cellLocationY0 + (index + 1) / clusterCount * (cellLocationY1 - cellLocationY0);\r\n if (xAxis.inited && yAxis.inited) {\r\n if (this._axesDirty || this._valuesDirty || this._stackDirty || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._sizeDirty) {\r\n const len = this.dataItems.length;\r\n let startIndex = Math.max(0, this.startIndex() - 2);\r\n let endIndex = Math.min(this.endIndex() + 2, len - 1);\r\n for (let i = 0; i < startIndex; i++) {\r\n this._toggleColumn(this.dataItems[i], false);\r\n }\r\n let previous = this.dataItems[startIndex];\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n if (i > 0 && startIndex > 0) {\r\n for (let j = i - 1; j >= 0; j--) {\r\n let dataItem = this.dataItems[j];\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n else {\r\n this._toggleColumn(dataItem, false);\r\n }\r\n }\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n let dataItem = this.dataItems[i];\r\n this._updateGraphics(dataItem, previous);\r\n if (dataItem.get(\"valueX\") != null && dataItem.get(\"valueY\") != null) {\r\n previous = dataItem;\r\n }\r\n }\r\n for (let i = endIndex + 1; i < len; i++) {\r\n this._toggleColumn(this.dataItems[i], false);\r\n }\r\n }\r\n }\r\n else {\r\n this._skipped = true;\r\n }\r\n this.updateLegendMarker(this.get(\"tooltipDataItem\"));\r\n super._updateChildren();\r\n }\r\n _createGraphics(dataItem) {\r\n let graphics = dataItem.get(\"graphics\");\r\n if (!graphics) {\r\n graphics = this._makeGraphics(this.columns, dataItem);\r\n dataItem.set(\"graphics\", graphics);\r\n graphics._setDataItem(dataItem);\r\n const legendDataItem = dataItem.get(\"legendDataItem\");\r\n if (legendDataItem) {\r\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n const ds = markerRectangle.states.lookup(\"default\");\r\n $array.each(visualSettings, (setting) => {\r\n const value = graphics.get(setting, this.get(setting));\r\n markerRectangle.set(setting, value);\r\n ds.set(setting, value);\r\n });\r\n }\r\n }\r\n let graphicsArray = dataItem.get(\"rangeGraphics\");\r\n if (graphicsArray) {\r\n $array.each(graphicsArray, (graphics) => {\r\n graphics.dispose();\r\n });\r\n }\r\n graphicsArray = [];\r\n dataItem.setRaw(\"rangeGraphics\", graphicsArray);\r\n this.axisRanges.each((axisRange) => {\r\n const container = axisRange.container;\r\n const rangeGraphics = this._makeGraphics(axisRange.columns, dataItem);\r\n if (graphicsArray) {\r\n graphicsArray.push(rangeGraphics);\r\n }\r\n rangeGraphics.setPrivate(\"list\", axisRange.columns);\r\n container.children.push(rangeGraphics);\r\n });\r\n }\r\n }\r\n createAxisRange(axisDataItem) {\r\n $array.each(this.dataItems, (dataItem) => {\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n graphics.dispose();\r\n dataItem.set(\"graphics\", undefined);\r\n }\r\n });\r\n return super.createAxisRange(axisDataItem);\r\n }\r\n _updateGraphics(dataItem, previousDataItem) {\r\n let graphics = dataItem.get(\"graphics\");\r\n //if (!graphics) {\r\n //\tthis._createGraphics(dataItem);\r\n //\tgraphics = dataItem.get(\"graphics\")!;\r\n //}\r\n const xField = this._xField;\r\n const yField = this._yField;\r\n const valueX = dataItem.get(xField);\r\n const valueY = dataItem.get(yField);\r\n if (valueX != null && valueY != null) {\r\n const xOpenField = this._xOpenField;\r\n const yOpenField = this._yOpenField;\r\n const locationX = this.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\r\n const locationY = this.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\r\n const openLocationX = this.get(\"openLocationX\", dataItem.get(\"openLocationX\", locationX));\r\n const openLocationY = this.get(\"openLocationY\", dataItem.get(\"openLocationY\", locationY));\r\n const width = graphics.get(\"width\");\r\n const height = graphics.get(\"height\");\r\n const stacked = this.get(\"stacked\");\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n const xStart = xAxis.get(\"start\");\r\n const xEnd = xAxis.get(\"end\");\r\n const yStart = yAxis.get(\"start\");\r\n const yEnd = yAxis.get(\"end\");\r\n let l;\r\n let r;\r\n let t;\r\n let b;\r\n let vcy = this.get(\"vcy\", 1);\r\n let vcx = this.get(\"vcx\", 1);\r\n let fitW = false;\r\n let fitH = false;\r\n if (yAxis.isType(\"CategoryAxis\") && xAxis.isType(\"CategoryAxis\")) {\r\n let startLocation = this._aLocationX0 + openLocationX - 0.5;\r\n let endLocation = this._aLocationX1 + locationX - 0.5;\r\n if (width instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - width.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, startLocation, vcx);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, endLocation, vcx);\r\n startLocation = this._aLocationY0 + openLocationY - 0.5;\r\n endLocation = this._aLocationY1 + locationY - 0.5;\r\n if (height instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - height.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = yAxis.getDataItemPositionY(dataItem, yOpenField, startLocation, vcy);\r\n b = yAxis.getDataItemPositionY(dataItem, yField, endLocation, vcy);\r\n dataItem.setRaw(\"point\", { x: l + (r - l) / 2, y: t + (b - t) / 2 });\r\n }\r\n else if (xAxis === baseAxis) {\r\n let startLocation = this._aLocationX0 + openLocationX - 0.5;\r\n let endLocation = this._aLocationX1 + locationX - 0.5;\r\n if (width instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - width.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, startLocation, vcx);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, endLocation, vcx);\r\n t = yAxis.getDataItemPositionY(dataItem, yField, locationY, vcy);\r\n if (this._yOpenField !== this._yField) {\r\n b = yAxis.getDataItemPositionY(dataItem, yOpenField, openLocationY, vcy);\r\n }\r\n else {\r\n if (stacked) {\r\n let stackToItemY = dataItem.get(\"stackToItemY\");\r\n if (stackToItemY) {\r\n b = yAxis.getDataItemPositionY(stackToItemY, yField, openLocationY, stackToItemY.component.get(\"vcy\"));\r\n }\r\n else {\r\n b = yAxis.basePosition();\r\n }\r\n }\r\n else {\r\n b = yAxis.basePosition();\r\n }\r\n }\r\n dataItem.setRaw(\"point\", { x: l + (r - l) / 2, y: t });\r\n fitH = true;\r\n }\r\n else if (yAxis === baseAxis) {\r\n let startLocation = this._aLocationY0 + openLocationY - 0.5;\r\n let endLocation = this._aLocationY1 + locationY - 0.5;\r\n if (height instanceof Percent) {\r\n let offset = (endLocation - startLocation) * (1 - height.value) / 2;\r\n startLocation += offset;\r\n endLocation -= offset;\r\n }\r\n t = yAxis.getDataItemPositionY(dataItem, yOpenField, startLocation, vcy);\r\n b = yAxis.getDataItemPositionY(dataItem, yField, endLocation, vcy);\r\n r = xAxis.getDataItemPositionX(dataItem, xField, locationX, vcx);\r\n if (this._xOpenField !== this._xField) {\r\n l = xAxis.getDataItemPositionX(dataItem, xOpenField, openLocationX, vcx);\r\n }\r\n else {\r\n if (stacked) {\r\n let stackToItemX = dataItem.get(\"stackToItemX\");\r\n if (stackToItemX) {\r\n l = xAxis.getDataItemPositionX(stackToItemX, xField, openLocationX, stackToItemX.component.get(\"vcx\"));\r\n }\r\n else {\r\n l = xAxis.basePosition();\r\n }\r\n }\r\n else {\r\n l = xAxis.basePosition();\r\n }\r\n }\r\n fitW = true;\r\n dataItem.setRaw(\"point\", { x: r, y: t + (b - t) / 2 });\r\n }\r\n this._updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH);\r\n if ((l < xStart && r < xStart) || (l > xEnd && r > xEnd) || (t < yStart && b <= yStart) || (t >= yEnd && b > yEnd) || $type.isNaN(l) || $type.isNaN(t)) {\r\n this._toggleColumn(dataItem, false);\r\n }\r\n else {\r\n this._toggleColumn(dataItem, true);\r\n }\r\n let rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n this._updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH);\r\n });\r\n }\r\n this._applyGraphicsStates(dataItem, previousDataItem);\r\n }\r\n }\r\n _updateSeriesGraphics(dataItem, graphics, l, r, t, b, fitW, fitH) {\r\n const width = graphics.get(\"width\");\r\n const height = graphics.get(\"height\");\r\n const maxWidth = graphics.get(\"maxWidth\");\r\n const maxHeight = graphics.get(\"maxHeight\");\r\n const ptl = this.getPoint(l, t);\r\n const pbr = this.getPoint(r, b);\r\n const tooltipPoint = dataItem.get(\"point\");\r\n if (tooltipPoint) {\r\n const point = this.getPoint(tooltipPoint.x, tooltipPoint.y);\r\n tooltipPoint.x = point.x + this._x;\r\n tooltipPoint.y = point.y + this._y;\r\n }\r\n l = ptl.x;\r\n r = pbr.x;\r\n t = ptl.y;\r\n b = pbr.y;\r\n if ($type.isNumber(width)) {\r\n const offset = ((r - l) - width) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n if ($type.isNumber(maxWidth) && maxWidth < Math.abs(r - l)) {\r\n const offset = ((r - l) - maxWidth) / 2;\r\n l += offset;\r\n r -= offset;\r\n }\r\n if ($type.isNumber(height)) {\r\n const offset = ((b - t) - height) / 2;\r\n t += offset;\r\n b -= offset;\r\n }\r\n if ($type.isNumber(maxHeight) && maxHeight < Math.abs(b - t)) {\r\n const offset = ((b - t) - maxHeight) / 2;\r\n t += offset;\r\n b -= offset;\r\n }\r\n if (this.get(\"adjustBulletPosition\")) {\r\n if (fitW) {\r\n r = Math.min(Math.max(0, r), this._pw);\r\n l = Math.min(Math.max(0, l), this._pw);\r\n }\r\n if (fitH) {\r\n t = Math.min(Math.max(0, t), this._ph);\r\n b = Math.min(Math.max(0, b), this._ph);\r\n }\r\n }\r\n dataItem.setRaw(\"left\", l);\r\n dataItem.setRaw(\"right\", r);\r\n dataItem.setRaw(\"top\", t);\r\n dataItem.setRaw(\"bottom\", b);\r\n graphics.setPrivate(\"width\", r - l);\r\n graphics.setPrivate(\"height\", b - t);\r\n graphics.set(\"x\", l);\r\n graphics.set(\"y\", b - (b - t));\r\n }\r\n _handleDataSetChange() {\r\n super._handleDataSetChange();\r\n $array.each(this._dataItems, (dataItem) => {\r\n this._toggleColumn(dataItem, false);\r\n });\r\n }\r\n _applyGraphicsStates(dataItem, previousDataItem) {\r\n const graphics = dataItem.get(\"graphics\");\r\n const dropFromOpen = graphics.states.lookup(\"dropFromOpen\");\r\n const riseFromOpen = graphics.states.lookup(\"riseFromOpen\");\r\n const dropFromPrevious = graphics.states.lookup(\"dropFromPrevious\");\r\n const riseFromPrevious = graphics.states.lookup(\"riseFromPrevious\");\r\n if (dropFromOpen || dropFromPrevious || riseFromOpen || riseFromPrevious) {\r\n const xAxis = this.get(\"xAxis\");\r\n const yAxis = this.get(\"yAxis\");\r\n const baseAxis = this.get(\"baseAxis\");\r\n let open;\r\n let close;\r\n let previousClose;\r\n if (baseAxis === xAxis && yAxis.isType(\"ValueAxis\")) {\r\n open = dataItem.get(this._yOpenField);\r\n close = dataItem.get(this._yField);\r\n previousClose = previousDataItem.get(this._yField);\r\n }\r\n else if (baseAxis === yAxis && xAxis.isType(\"ValueAxis\")) {\r\n open = dataItem.get(this._xOpenField);\r\n close = dataItem.get(this._xField);\r\n previousClose = previousDataItem.get(this._xField);\r\n }\r\n if ($type.isNumber(open) && $type.isNumber(close)) {\r\n if (close < open) {\r\n if (dropFromOpen) {\r\n dropFromOpen.apply();\r\n }\r\n }\r\n else {\r\n if (riseFromOpen) {\r\n riseFromOpen.apply();\r\n }\r\n }\r\n if ($type.isNumber(previousClose)) {\r\n if (close < previousClose) {\r\n if (dropFromPrevious) {\r\n dropFromPrevious.apply();\r\n }\r\n }\r\n else {\r\n if (riseFromPrevious) {\r\n riseFromPrevious.apply();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(dataItem) {\r\n super.disposeDataItem(dataItem);\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n this.columns.removeValue(graphics);\r\n graphics.dispose();\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n const list = graphics.getPrivate(\"list\");\r\n if (list) {\r\n list.removeValue(graphics);\r\n }\r\n graphics.dispose();\r\n });\r\n }\r\n }\r\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n hideDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n hideDataItem: { get: () => super.hideDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n promises.push(graphics.hide(duration));\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n promises.push(graphics.hide(duration));\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n _toggleColumn(dataItem, visible) {\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n graphics.setPrivate(\"visible\", visible);\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n graphics.setPrivate(\"visible\", visible);\r\n });\r\n }\r\n const bullets = dataItem.bullets;\r\n if (bullets) {\r\n $array.each(bullets, (bullet) => {\r\n bullet.setPrivate(\"hidden\", !visible);\r\n });\r\n }\r\n }\r\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\r\n showDataItem(dataItem, duration) {\r\n const _super = Object.create(null, {\r\n showDataItem: { get: () => super.showDataItem }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\r\n const graphics = dataItem.get(\"graphics\");\r\n if (graphics) {\r\n promises.push(graphics.show(duration));\r\n }\r\n const rangeGraphics = dataItem.get(\"rangeGraphics\");\r\n if (rangeGraphics) {\r\n $array.each(rangeGraphics, (graphics) => {\r\n promises.push(graphics.show(duration));\r\n });\r\n }\r\n yield Promise.all(promises);\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateLegendMarker(dataItem) {\r\n let legendDataItem = this.get(\"legendDataItem\");\r\n if (this.get(\"useLastColorForLegendMarker\")) {\r\n if (!dataItem) {\r\n const lastDataItem = this.dataItems[this.endIndex() - 1];\r\n if (lastDataItem) {\r\n dataItem = lastDataItem;\r\n }\r\n }\r\n }\r\n if (legendDataItem) {\r\n let graphics = this.columns.template;\r\n if (dataItem) {\r\n let column = dataItem.get(\"graphics\");\r\n if (column) {\r\n graphics = column;\r\n }\r\n }\r\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\r\n if (markerRectangle) {\r\n if (!legendDataItem.get(\"itemContainer\").get(\"disabled\")) {\r\n const ds = markerRectangle.states.lookup(\"default\");\r\n $array.each(visualSettings, (setting) => {\r\n const value = graphics.get(setting, this.get(setting));\r\n markerRectangle.set(setting, value);\r\n ds.set(setting, value);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n _getTooltipTarget(dataItem) {\r\n if (this.get(\"seriesTooltipTarget\") == \"bullet\") {\r\n return super._getTooltipTarget(dataItem);\r\n }\r\n let column = dataItem.get(\"graphics\");\r\n if (column) {\r\n return column;\r\n }\r\n return this;\r\n }\r\n}\r\nObject.defineProperty(BaseColumnSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"BaseColumnSeries\"\r\n});\r\nObject.defineProperty(BaseColumnSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: XYSeries.classNames.concat([BaseColumnSeries.className])\r\n});\r\n//# sourceMappingURL=BaseColumnSeries.js.map","import { BaseColumnSeries } from \"./BaseColumnSeries\";\r\nimport { Template } from \"../../../core/util/Template\";\r\nimport { ListTemplate } from \"../../../core/util/List\";\r\nimport { RoundedRectangle } from \"../../../core/render/RoundedRectangle\";\r\nimport * as $utils from \"../../../core/util/Utils\";\r\nexport class ColumnSeries extends BaseColumnSeries {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[TemplateList]] of all columns in series.\r\n *\r\n * `columns.template` can be used to set default settings for all columns,\r\n * or to change on existing ones.\r\n */\r\n Object.defineProperty(this, \"columns\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n position: \"absolute\",\r\n themeTags: $utils.mergeTags(this.columns.template.get(\"themeTags\", []), [\"series\", \"column\"])\r\n }, [this.columns.template])))\r\n });\r\n }\r\n /**\r\n * @ignore\r\n */\r\n makeColumn(dataItem, listTemplate) {\r\n const column = this.mainContainer.children.push(listTemplate.make());\r\n column._setDataItem(dataItem);\r\n listTemplate.push(column);\r\n return column;\r\n }\r\n _processAxisRange(axisRange) {\r\n super._processAxisRange(axisRange);\r\n axisRange.columns = new ListTemplate(Template.new({}), () => RoundedRectangle._new(this._root, {\r\n position: \"absolute\",\r\n themeTags: $utils.mergeTags(axisRange.columns.template.get(\"themeTags\", []), [\"series\", \"column\"]),\r\n }, [this.columns.template, axisRange.columns.template]));\r\n }\r\n}\r\nObject.defineProperty(ColumnSeries, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ColumnSeries\"\r\n});\r\nObject.defineProperty(ColumnSeries, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: BaseColumnSeries.classNames.concat([ColumnSeries.className])\r\n});\r\n//# sourceMappingURL=ColumnSeries.js.map","\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./ColumnChart.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/@vue/cli-plugin-babel/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!./ColumnChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ColumnChart.vue?vue&type=template&id=fc8a287a&scoped=true\"\nimport script from \"./ColumnChart.vue?vue&type=script&lang=js\"\nexport * from \"./ColumnChart.vue?vue&type=script&lang=js\"\nimport style0 from \"./ColumnChart.vue?vue&type=style&index=0&id=fc8a287a&prod&scoped=true&lang=css\"\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 \"fc8a287a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/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!./Refinery.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/@vue/cli-plugin-babel/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!./Refinery.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Refinery.vue?vue&type=template&id=4c044884&scoped=true\"\nimport script from \"./Refinery.vue?vue&type=script&lang=js\"\nexport * from \"./Refinery.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 \"4c044884\",\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('div',{staticClass:\"vx-row my-5 z-50\"},[_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"id\":\"searchVesselName\",\"label\":\"ชื่อเรือสถานีบริการน้ำมัน\",\"autocomplete\":\"\",\"placeholder\":\"กรุณาเลือกเรือสถานีบริการน้ำมัน\"},model:{value:(_vm.selectedTanker),callback:function ($$v) {_vm.selectedTanker=$$v},expression:\"selectedTanker\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"กรุณาเลือกเรือสถานีบริการน้ำมัน\"}}),_vm._l((_vm.optionsTanker),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"id\":\"searchVesselName\",\"label\":\"ชื่อเรือขนย้ายน้ำมัน\",\"autocomplete\":\"\"},model:{value:(_vm.selectedForwardTanker),callback:function ($$v) {_vm.selectedForwardTanker=$$v},expression:\"selectedForwardTanker\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"ทั้งหมด\"}}),_vm._l((_vm.optionsTanker),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\",staticStyle:{\"z-index\":\"50000\"}},[_c('v-date-picker',{attrs:{\"mode\":\"date\",\"is-range\":\"\",\"is24hr\":\"\",\"locale\":_vm.$i18n.locale,\"buddhist\":true,\"max-date\":new Date()},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar inputEvents = ref.inputEvents;\nreturn [_c('vs-input',_vm._g({staticClass:\"w-full\",attrs:{\"label\":\"วัน/เดือน/ปี\",\"value\":_vm.selectedDate.start &&\n ((_vm.selectedDate.start ? _vm.setDateFormatTh(_vm.selectedDate.start) : '') + \" - \" + (_vm.selectedDate.end ? _vm.setDateFormatTh(_vm.selectedDate.end) : '')),\"placeholder\":\"วัน/เดือน/ปี - วัน/เดือน/ปี\"}},inputEvents.start))]}}]),model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})],1),_c('div',{staticClass:\"vx-col md:w-1/5 w-full mt-6 text-center flex\"},[_c('div',[_c('vs-button',{attrs:{\"color\":\"primary\",\"type\":\"filled\",\"icon-pack\":\"feather\",\"icon\":\"icon-search\"},on:{\"click\":function($event){return _vm.getOilTransfers()}}},[_vm._v(\"ค้นหา\")])],1)])]),_c('vs-divider',{staticClass:\"mt-12\"}),(_vm.selectedTanker && _vm.transfers.length != 0)?_c('div',{staticClass:\"vx-row mt-10 z-50\"},[_c('div',{staticClass:\"vx-col w-full\"},[_c('vx-card',{staticStyle:{\"height\":\"370px\"}},[_c('DirectTree',{attrs:{\"tanker\":_vm.selectedTanker,\"transferDataForDirectTree\":_vm.transfers,\"config\":_vm.config,\"height\":350}})],1)],1)]):_vm._e(),_c('div',{staticClass:\"mt-12 z-0\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('h5',{staticClass:\"my-3\"},[_vm._v(\"ผลการค้นหา\")]),(_vm.transfers.length != 0)?_c('vs-button',{attrs:{\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print()}}},[_vm._v(\"\\n พิมพ์\\n \")]):_vm._e()],1),_c('vs-table',{staticClass:\"static text-center mt-3\",attrs:{\"maxHeight\":\"700px\",\"minHeight\":\"500px\",\"max-items\":_vm.descriptionItems[0],\"description\":\"\",\"description-items\":_vm.descriptionItems,\"description-title\":\"ลำดับ\",\"description-connector\":\"จาก\",\"description-body\":\"จำนวนต่อหน้า\",\"pagination\":\"\",\"data\":_vm.transfers},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var data = ref.data;\nreturn _vm._l((data),function(tr,indextr){return _c('vs-tr',{key:indextr},[_c('vs-td',[_vm._v(\"\\n \"+_vm._s(tr.index + 1)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].start_at}},[_vm._v(\"\\n \"+_vm._s(data[indextr].start_at)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].forwardTanker && data[indextr].forwardTanker.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].forwardTanker)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].forwardTanker && data[indextr].forwardTanker.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].tanker)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && data[indextr].tanker.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.capacity}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && _vm.getVolume(data[indextr].tanker.capacity))+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].vessel && data[indextr].vessel.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.vesselInfo(data[indextr].vessel)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].vessel && data[indextr].vessel.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].vessel && data[indextr].vessel.capacity}},[_vm._v(\"\\n \"+_vm._s(data[indextr].vessel && _vm.getVolume(data[indextr].vessel.capacity))+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr]}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.isActiveNotification(data[indextr])}}},[_vm._v(_vm._s(data[indextr].latitude)+\" , \"+_vm._s(data[indextr].longitude))])]),(data[indextr].station && !data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")]):(data[indextr].forwardTanker && data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].tanker.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")])]):(data[indextr].tanker && data[indextr].vessel)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].vessel.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")])]):_vm._e(),_c('vs-td',[_c('div',{staticClass:\"align-middle flex justify-center\"},[_c('vs-button',{attrs:{\"radius\":\"\",\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print(data[indextr].vessel_id)}}})],1)])],1)})}}])},[_c('template',{slot:\"thead\"},[_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ลำดับ\")])]),_c('vs-th',{attrs:{\"sort-key\":\"start_at\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"วัน เดือน ปี / เวลา\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือบรรทุกน้ำมัน\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือสถานีบริการน้ำมัน\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"\\n ความจุถังน้ำมันเรือสถานีบริการน้ำมัน\\n \")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือประมง\")])]),_c('vs-th',[_c('p',{staticClass:\"text-center\"},[_vm._v(\"ความจุถังน้ำมันเรือประมง\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ตำแหน่ง(Lat,Lon)\")])]),_c('vs-th',{attrs:{\"sort-key\":\"volume\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ปริมาณน้ำมัน (ล.)\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"พิมพ์\")])])],1)],2),(_vm.tanker)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveTankerInfo,\"buttons-hidden\":true,\"title\":((_vm.tanker.name) + \" : \" + (_vm.tanker.mmsi) + \" \")},on:{\"update:active\":function($event){_vm.isActiveTankerInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.tanker.name))]),_c('p',[_vm._v(\"ชื่อภาษาอังกฤษ : \"+_vm._s(_vm.tanker.name_en))]),_c('p',[_vm._v(\"MMSI : \"+_vm._s(_vm.tanker.mmsi))]),_c('p',[_vm._v(\"IMO : \"+_vm._s(_vm.tanker.imo ? _vm.tanker.imo : null))]),_c('p',[_vm._v(\"รหัสสมาชิก : \"+_vm._s(_vm.tanker.member_code))]),_c('p',[_vm._v(\"\\n ความจุถัง : \"+_vm._s(_vm.tanker.capacity ? _vm.formatNumber(_vm.tanker.capacity) : 0)+\"\\n \")]),_c('p',[_vm._v(\"\\n ประเภทเรือ :\\n \"+_vm._s(_vm.tanker.type == 'tanker' ? 'สถานีบริการน้ำมัน' : 'เรือบรรทุกน้ำมัน')+\"\\n \")]),(_vm.tanker.owner)?_c('div',[_c('vs-divider',{attrs:{\"border-style\":\"dashed\",\"position\":\"left\"}},[_c('b',[_vm._v(\"ข้อมูลเจ้าของเรือ\")])]),_c('p',[_vm._v(\"\\n ชื่อ :\\n \"+_vm._s(_vm.tanker.owner.personType == 'นิติบุคคล'\n ? _vm.tanker.owner.certificateOperateName\n : (\"\" + (_vm.tanker.owner.title) + (_vm.tanker.owner.firstName) + \" \" + (_vm.tanker.owner.lastName)))+\"\\n \")]),_c('p',[_vm._v(\"\\n โทรศัพท์ :\\n \"+_vm._s(_vm.tanker.owner.personType == 'นิติบุคคล'\n ? _vm.tanker.owner.certificatePhoneNumber\n : _vm.tanker.owner.phoneNumber)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทบุคคล : \"+_vm._s(_vm.tanker.owner.personType))])],1):_vm._e()])]):_vm._e(),(_vm.vessel)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveVesselInfo,\"buttons-hidden\":true,\"title\":((_vm.vessel.name) + \" \")},on:{\"update:active\":function($event){_vm.isActiveVesselInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.vessel.name))]),_c('p',[_vm._v(\"รหัสสมาชิก : \"+_vm._s(_vm.vessel.member_code))]),_c('p',[_vm._v(\"หมายเลขทะเบียนเรือ : \"+_vm._s(_vm.vessel.register_number))]),_c('p',[_vm._v(\"\\n ความจุถัง : \"+_vm._s(_vm.vessel.capacity ? _vm.formatNumber(_vm.vessel.capacity) : 0)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทเรือ : เรือประมง\")]),_c('p',[_vm._v(\"เมืองท่าที่ขึ้นทะเบียนเรือ : \"+_vm._s(_vm.vessel.portName || ''))]),(_vm.vessel.owner)?_c('div',[_c('vs-divider',{attrs:{\"border-style\":\"dashed\",\"position\":\"left\"}},[_c('b',[_vm._v(\"ข้อมูลเจ้าของเรือ\")])]),_c('p',[_vm._v(\"\\n ชื่อ :\\n \"+_vm._s(_vm.vessel.owner.personType == 'นิติบุคคล'\n ? _vm.vessel.owner.certificateOperateName\n : (\"\" + (_vm.vessel.owner.title) + (_vm.vessel.owner.firstName) + \" \" + (_vm.vessel.owner.lastName)))+\"\\n \")]),_c('p',[_vm._v(\"\\n โทรศัพท์ :\\n \"+_vm._s(_vm.vessel.owner.personType == 'นิติบุคคล'\n ? _vm.vessel.owner.certificatePhoneNumber\n : _vm.vessel.owner.phoneNumber)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทบุคคล : \"+_vm._s(_vm.vessel.owner.personType))])],1):_vm._e()])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/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!./Tanker.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/@vue/cli-plugin-babel/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!./Tanker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tanker.vue?vue&type=template&id=e4a77fb2&scoped=true\"\nimport script from \"./Tanker.vue?vue&type=script&lang=js\"\nexport * from \"./Tanker.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 \"e4a77fb2\",\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('div',{staticClass:\"vx-row my-5 z-50\"},[_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"id\":\"searchVesselName\",\"label\":\"ชื่อเรือขนย้ายน้ำมัน\",\"autocomplete\":\"\",\"placeholder\":\"กรุณาเลือกเรือขนย้ายน้ำมัน\"},model:{value:(_vm.selectedForwardTanker),callback:function ($$v) {_vm.selectedForwardTanker=$$v},expression:\"selectedForwardTanker\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"กรุณาเลือกเรือขนย้ายน้ำมัน\"}}),_vm._l((_vm.optionsTanker),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"label\":\"โรงกลั่น\",\"autocomplete\":\"\"},model:{value:(_vm.selectedRefinery),callback:function ($$v) {_vm.selectedRefinery=$$v},expression:\"selectedRefinery\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"ทั้งหมด\"}}),_vm._l((_vm.optionsRefinery),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"id\":\"searchVesselName\",\"label\":\"ชื่อเรือสถานีบริการน้ำมัน\",\"autocomplete\":\"\"},model:{value:(_vm.selectedTanker),callback:function ($$v) {_vm.selectedTanker=$$v},expression:\"selectedTanker\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"ทั้งหมด\"}}),_vm._l((_vm.optionsTanker),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\",staticStyle:{\"z-index\":\"50000\"}},[_c('v-date-picker',{attrs:{\"mode\":\"date\",\"is-range\":\"\",\"is24hr\":\"\",\"locale\":_vm.$i18n.locale,\"buddhist\":true,\"max-date\":new Date()},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar inputEvents = ref.inputEvents;\nreturn [_c('vs-input',_vm._g({staticClass:\"w-full\",attrs:{\"label\":\"วัน/เดือน/ปี\",\"value\":_vm.selectedDate.start &&\n ((_vm.selectedDate.start ? _vm.setDateFormatTh(_vm.selectedDate.start) : '') + \" - \" + (_vm.selectedDate.end ? _vm.setDateFormatTh(_vm.selectedDate.end) : '')),\"placeholder\":\"วัน/เดือน/ปี - วัน/เดือน/ปี\"}},inputEvents.start))]}}]),model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})],1),_c('div',{staticClass:\"vx-col md:w-1/5 w-full mt-6 text-center flex\"},[_c('div',[_c('vs-button',{attrs:{\"color\":\"primary\",\"type\":\"filled\",\"icon-pack\":\"feather\",\"icon\":\"icon-search\"},on:{\"click\":function($event){return _vm.getOilTransfers()}}},[_vm._v(\"ค้นหา\")])],1)])]),_c('vs-divider',{staticClass:\"mt-12\"}),(_vm.selectedForwardTanker && _vm.transfers.length != 0)?_c('div',{staticClass:\"vx-row mt-10 z-50\"},[_c('div',{staticClass:\"vx-col w-full\"},[_c('vx-card',{staticStyle:{\"height\":\"370px\"}},[_c('DirectTree',{attrs:{\"forwardTanker\":_vm.selectedForwardTanker,\"transferDataForDirectTree\":_vm.transfers,\"config\":_vm.config,\"height\":350}})],1)],1)]):_vm._e(),_c('div',{staticClass:\"mt-12 z-0\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('h5',{staticClass:\"my-3\"},[_vm._v(\"ผลการค้นหา\")]),(_vm.transfers.length != 0)?_c('vs-button',{attrs:{\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print()}}},[_vm._v(\"\\n พิมพ์\\n \")]):_vm._e()],1),_c('vs-table',{staticClass:\"static text-center mt-3\",attrs:{\"maxHeight\":\"700px\",\"minHeight\":\"500px\",\"max-items\":_vm.descriptionItems[0],\"description\":\"\",\"description-items\":_vm.descriptionItems,\"description-title\":\"ลำดับ\",\"description-connector\":\"จาก\",\"description-body\":\"จำนวนต่อหน้า\",\"pagination\":\"\",\"data\":_vm.transfers},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var data = ref.data;\nreturn _vm._l((data),function(tr,indextr){return _c('vs-tr',{key:indextr},[_c('vs-td',[_vm._v(\"\\n \"+_vm._s(tr.index + 1)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].start_at}},[_vm._v(\"\\n \"+_vm._s(data[indextr].start_at)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].station && data[indextr].station.name}},[_vm._v(\"\\n \"+_vm._s(data[indextr].station && data[indextr].station.name)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].forwardTanker && data[indextr].forwardTanker.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].forwardTanker)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].forwardTanker && data[indextr].forwardTanker.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].tanker)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && data[indextr].tanker.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.capacity}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && _vm.getVolume(data[indextr].tanker.capacity))+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr]}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.isActiveNotification(data[indextr])}}},[_vm._v(_vm._s(data[indextr].latitude)+\" , \"+_vm._s(data[indextr].longitude))])]),(data[indextr].station && !data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_vm._v(\"\\n \"+_vm._s(data[indextr].formatVolume)+\"\\n \")]):(data[indextr].forwardTanker && data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].tanker.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(data[indextr].formatVolume)+\"\\n \")])]):(data[indextr].tanker && data[indextr].vessel)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].vessel.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(data[indextr].formatVolume)+\"\\n \")])]):_vm._e(),_c('vs-td',[_c('div',{staticClass:\"align-middle flex justify-center\"},[_c('vs-button',{attrs:{\"radius\":\"\",\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print(data[indextr].tanker_id)}}})],1)])],1)})}}])},[_c('template',{slot:\"thead\"},[_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ลำดับ\")])]),_c('vs-th',{attrs:{\"sort-key\":\"start_at\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"วัน เดือน ปี / เวลา\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"โรงกลั่น\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือบรรทุกน้ำมัน\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือสถานีบริการน้ำมัน\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"\\n ความจุถังน้ำมันเรือสถานีบริการน้ำมัน\\n \")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ตำแหน่ง(Lat,Lon)\")])]),_c('vs-th',{attrs:{\"sort-key\":\"volume\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ปริมาณน้ำมัน (ล.)\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"พิมพ์\")])])],1)],2),(_vm.tanker)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveTankerInfo,\"buttons-hidden\":true,\"title\":((_vm.tanker.name) + \" : \" + (_vm.tanker.mmsi) + \" \")},on:{\"update:active\":function($event){_vm.isActiveTankerInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.tanker.name))]),_c('p',[_vm._v(\"ชื่อภาษาอังกฤษ : \"+_vm._s(_vm.tanker.name_en))]),_c('p',[_vm._v(\"MMSI : \"+_vm._s(_vm.tanker.mmsi))]),_c('p',[_vm._v(\"IMO : \"+_vm._s(_vm.tanker.imo ? _vm.tanker.imo : null))]),_c('p',[_vm._v(\"รหัสสมาชิก : \"+_vm._s(_vm.tanker.member_code))]),_c('p',[_vm._v(\"\\n ความจุถัง : \"+_vm._s(_vm.tanker.capacity ? _vm.formatNumber(_vm.tanker.capacity) : 0)+\"\\n \")]),_c('p',[_vm._v(\"\\n ประเภทเรือ :\\n \"+_vm._s(_vm.tanker.type == 'tanker' ? 'สถานีบริการน้ำมัน' : 'เรือบรรทุกน้ำมัน')+\"\\n \")]),(_vm.tanker.owner)?_c('div',[_c('vs-divider',{attrs:{\"border-style\":\"dashed\",\"position\":\"left\"}},[_c('b',[_vm._v(\"ข้อมูลเจ้าของเรือ\")])]),_c('p',[_vm._v(\"\\n ชื่อ :\\n \"+_vm._s(_vm.tanker.owner.personType == 'นิติบุคคล'\n ? _vm.tanker.owner.certificateOperateName\n : (\"\" + (_vm.tanker.owner.title) + (_vm.tanker.owner.firstName) + \" \" + (_vm.tanker.owner.lastName)))+\"\\n \")]),_c('p',[_vm._v(\"\\n โทรศัพท์ :\\n \"+_vm._s(_vm.tanker.owner.personType == 'นิติบุคคล'\n ? _vm.tanker.owner.certificatePhoneNumber\n : _vm.tanker.owner.phoneNumber)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทบุคคล : \"+_vm._s(_vm.tanker.owner.personType))])],1):_vm._e()])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/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!./ForwardTanker.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/@vue/cli-plugin-babel/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!./ForwardTanker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ForwardTanker.vue?vue&type=template&id=d8cecd72&scoped=true\"\nimport script from \"./ForwardTanker.vue?vue&type=script&lang=js\"\nexport * from \"./ForwardTanker.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 \"d8cecd72\",\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('div',{staticClass:\"vx-row my-5 z-50\"},[_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"id\":\"searchVesselName\",\"label\":\"ชื่อเรือประมง\",\"autocomplete\":\"\",\"placeholder\":\"กรุณาเลือกเรือประมง\"},model:{value:(_vm.selectedVessel),callback:function ($$v) {_vm.selectedVessel=$$v},expression:\"selectedVessel\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"กรุณาเลือกเรือประมง\"}}),_vm._l((_vm.optionsVessel),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\"},[_c('form',{staticClass:\"w-full\",attrs:{\"autocomplete\":\"off\"}},[_c('vs-select',{staticClass:\"w-full select-large\",attrs:{\"label\":\"ชื่อเรือสถานีบริการน้ำมัน\",\"autocomplete\":\"\"},model:{value:(_vm.selectedTanker),callback:function ($$v) {_vm.selectedTanker=$$v},expression:\"selectedTanker\"}},[_c('vs-select-item',{attrs:{\"value\":null,\"text\":\"ทั้งหมด\"}}),_vm._l((_vm.optionsTanker),function(item,index){return _c('vs-select-item',{key:index,staticClass:\"w-full\",attrs:{\"value\":item,\"text\":item.name}})})],2)],1)]),_c('div',{staticClass:\"vx-col md:w-1/5 w-full\",staticStyle:{\"z-index\":\"50000\"}},[_c('v-date-picker',{attrs:{\"mode\":\"date\",\"is-range\":\"\",\"is24hr\":\"\",\"locale\":_vm.$i18n.locale,\"buddhist\":true,\"max-date\":new Date()},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar inputEvents = ref.inputEvents;\nreturn [_c('vs-input',_vm._g({staticClass:\"w-full\",attrs:{\"label\":\"วัน/เดือน/ปี\",\"value\":_vm.selectedDate.start &&\n ((_vm.selectedDate.start ? _vm.setDateFormatTh(_vm.selectedDate.start) : '') + \" - \" + (_vm.selectedDate.end ? _vm.setDateFormatTh(_vm.selectedDate.end) : '')),\"placeholder\":\"วัน/เดือน/ปี - วัน/เดือน/ปี\"}},inputEvents.start))]}}]),model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})],1),_c('div',{staticClass:\"vx-col md:w-1/5 w-full mt-6 text-center flex\"},[_c('div',[_c('vs-button',{attrs:{\"color\":\"primary\",\"type\":\"filled\",\"icon-pack\":\"feather\",\"icon\":\"icon-search\"},on:{\"click\":function($event){return _vm.getOilTransfers()}}},[_vm._v(\"ค้นหา\")])],1)])]),_c('vs-divider',{staticClass:\"mt-12\"}),(_vm.selectedVessel && _vm.transfers.length != 0)?_c('div',{staticClass:\"vx-row mt-10 z-50\"},[_c('div',{staticClass:\"vx-col w-full\"},[_c('vx-card',{staticStyle:{\"height\":\"370px\"}},[_c('DirectTree',{attrs:{\"vessel\":_vm.selectedVessel,\"transferDataForDirectTree\":_vm.transfers,\"config\":_vm.config,\"height\":350}})],1)],1)]):_vm._e(),_c('div',{staticClass:\"mt-12 z-0\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('h5',{staticClass:\"my-3\"},[_vm._v(\"ผลการค้นหา\")]),(_vm.transfers.length != 0)?_c('vs-button',{attrs:{\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print()}}},[_vm._v(\"\\n พิมพ์\\n \")]):_vm._e()],1),_c('vs-table',{staticClass:\"static text-center mt-3\",attrs:{\"maxHeight\":\"700px\",\"minHeight\":\"500px\",\"max-items\":_vm.descriptionItems[0],\"description\":\"\",\"description-items\":_vm.descriptionItems,\"description-title\":\"ลำดับ\",\"description-connector\":\"จาก\",\"description-body\":\"จำนวนต่อหน้า\",\"pagination\":\"\",\"data\":_vm.transfers},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var data = ref.data;\nreturn _vm._l((data),function(tr,indextr){return _c('vs-tr',{key:indextr},[_c('vs-td',[_vm._v(\"\\n \"+_vm._s(tr.index + 1)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].start_at}},[_vm._v(\"\\n \"+_vm._s(data[indextr].start_at)+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].vessel && data[indextr].vessel.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.vesselInfo(data[indextr].vessel)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].vessel && data[indextr].vessel.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].vessel && data[indextr].vessel.capacity}},[_vm._v(\"\\n \"+_vm._s(data[indextr].vessel && _vm.getVolume(data[indextr].vessel.capacity))+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.name}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.tankerInfo(data[indextr].tanker)}}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && data[indextr].tanker.name)+\"\\n \")])]),_c('vs-td',{attrs:{\"data\":data[indextr].tanker && data[indextr].tanker.capacity}},[_vm._v(\"\\n \"+_vm._s(data[indextr].tanker && _vm.getVolume(data[indextr].tanker.capacity))+\"\\n \")]),_c('vs-td',{attrs:{\"data\":data[indextr]}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.isActiveNotification(data[indextr])}}},[_vm._v(_vm._s(data[indextr].latitude)+\" , \"+_vm._s(data[indextr].longitude))])]),(data[indextr].station && !data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")]):(data[indextr].forwardTanker && data[indextr].tanker)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].tanker.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")])]):(data[indextr].tanker && data[indextr].vessel)?_c('vs-td',{attrs:{\"data\":data[indextr].volume}},[_c('p',{style:(_vm.checkCapacityAndVolume(\n data[indextr].vessel.capacity,\n data[indextr].volume\n )\n ? 'color: red'\n : 'color: green')},[_vm._v(\"\\n \"+_vm._s(_vm.getVolume(data[indextr].volume))+\"\\n \")])]):_vm._e(),_c('vs-td',[_c('div',{staticClass:\"align-middle flex justify-center\"},[_c('vs-button',{attrs:{\"radius\":\"\",\"type\":\"gradient\",\"icon\":\"print\"},on:{\"click\":function($event){return _vm.print(data[indextr].tanker_id)}}})],1)])],1)})}}])},[_c('template',{slot:\"thead\"},[_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ลำดับ\")])]),_c('vs-th',{attrs:{\"sort-key\":\"start_at\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"วัน เดือน ปี / เวลา\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือประมง\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ความจุถังน้ำมันเรือประมง\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"เรือสถานีบริการน้ำมัน\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"\\n ความจุถังน้ำมันเรือสถานีบริการน้ำมัน\\n \")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ตำแหน่ง(Lat,Lon)\")])]),_c('vs-th',{attrs:{\"sort-key\":\"volume\"}},[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"ปริมาณน้ำมัน (ล.)\")])]),_c('vs-th',[_c('p',{staticClass:\"mx-auto text-center\"},[_vm._v(\"พิมพ์\")])])],1)],2),(_vm.tanker)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveTankerInfo,\"buttons-hidden\":true,\"title\":((_vm.tanker.name) + \" : \" + (_vm.tanker.mmsi) + \" \")},on:{\"update:active\":function($event){_vm.isActiveTankerInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.tanker.name))]),_c('p',[_vm._v(\"ชื่อภาษาอังกฤษ : \"+_vm._s(_vm.tanker.name_en))]),_c('p',[_vm._v(\"MMSI : \"+_vm._s(_vm.tanker.mmsi))]),_c('p',[_vm._v(\"IMO : \"+_vm._s(_vm.tanker.imo ? _vm.tanker.imo : null))]),_c('p',[_vm._v(\"รหัสสมาชิก : \"+_vm._s(_vm.tanker.member_code))]),_c('p',[_vm._v(\"\\n ความจุถัง :\\n \"+_vm._s(_vm.tanker.capacity ? _vm.formatNumber(_vm.tanker.capacity) : 0)+\"\\n \")]),_c('p',[_vm._v(\"\\n ประเภทเรือ :\\n \"+_vm._s(_vm.tanker.type == \"tanker\" ? \"สถานีบริการน้ำมัน\" : \"เรือบรรทุกน้ำมัน\")+\"\\n \")]),(_vm.tanker.owner)?_c('div',[_c('vs-divider',{attrs:{\"border-style\":\"dashed\",\"position\":\"left\"}},[_c('b',[_vm._v(\"ข้อมูลเจ้าของเรือ\")])]),_c('p',[_vm._v(\"\\n ชื่อ :\\n \"+_vm._s(_vm.tanker.owner.personType == \"นิติบุคคล\"\n ? _vm.tanker.owner.certificateOperateName\n : (\"\" + (_vm.tanker.owner.title) + (_vm.tanker.owner.firstName) + \" \" + (_vm.tanker.owner.lastName)))+\"\\n \")]),_c('p',[_vm._v(\"\\n โทรศัพท์ :\\n \"+_vm._s(_vm.tanker.owner.personType == \"นิติบุคคล\"\n ? _vm.tanker.owner.certificatePhoneNumber\n : _vm.tanker.owner.phoneNumber)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทบุคคล : \"+_vm._s(_vm.tanker.owner.personType))])],1):_vm._e()])]):_vm._e(),(_vm.vessel)?_c('vs-prompt',{attrs:{\"color\":\"primary\",\"active\":_vm.isActiveVesselInfo,\"buttons-hidden\":true,\"title\":((_vm.vessel.name) + \" \")},on:{\"update:active\":function($event){_vm.isActiveVesselInfo=$event}}},[_c('div',{staticClass:\"con-exemple-prompt pb-3\"},[_c('p',[_vm._v(\"ชื่อ : \"+_vm._s(_vm.vessel.name))]),_c('p',[_vm._v(\"รหัสสมาชิก : \"+_vm._s(_vm.vessel.member_code))]),_c('p',[_vm._v(\"หมายเลขทะเบียนเรือ : \"+_vm._s(_vm.vessel.register_number))]),_c('p',[_vm._v(\"\\n ความจุถัง :\\n \"+_vm._s(_vm.vessel.capacity ? _vm.formatNumber(_vm.vessel.capacity) : 0)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทเรือ : เรือประมง\")]),_c('p',[_vm._v(\"เมืองท่าที่ขึ้นทะเบียนเรือ : \"+_vm._s(_vm.vessel.portName || \"\"))]),(_vm.vessel.owner)?_c('div',[_c('vs-divider',{attrs:{\"border-style\":\"dashed\",\"position\":\"left\"}},[_c('b',[_vm._v(\"ข้อมูลเจ้าของเรือ\")])]),_c('p',[_vm._v(\"\\n ชื่อ :\\n \"+_vm._s(_vm.vessel.owner.personType == \"นิติบุคคล\"\n ? _vm.vessel.owner.certificateOperateName\n : (\"\" + (_vm.vessel.owner.title) + (_vm.vessel.owner.firstName) + \" \" + (_vm.vessel.owner.lastName)))+\"\\n \")]),_c('p',[_vm._v(\"\\n โทรศัพท์ :\\n \"+_vm._s(_vm.vessel.owner.personType == \"นิติบุคคล\"\n ? _vm.vessel.owner.certificatePhoneNumber\n : _vm.vessel.owner.phoneNumber)+\"\\n \")]),_c('p',[_vm._v(\"ประเภทบุคคล : \"+_vm._s(_vm.vessel.owner.personType))])],1):_vm._e()])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/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!./Vessel.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/@vue/cli-plugin-babel/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!./Vessel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Vessel.vue?vue&type=template&id=4f38c342&scoped=true\"\nimport script from \"./Vessel.vue?vue&type=script&lang=js\"\nexport * from \"./Vessel.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 \"4f38c342\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/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!./MonthlyOccurrence.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/@vue/cli-plugin-babel/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!./MonthlyOccurrence.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MonthlyOccurrence.vue?vue&type=template&id=69cf9a18&scoped=true\"\nimport script from \"./MonthlyOccurrence.vue?vue&type=script&lang=js\"\nexport * from \"./MonthlyOccurrence.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 \"69cf9a18\",\n null\n \n)\n\nexport default component.exports","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","/**\r\n * Functionality for adding images in SVG tree.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to add `` elements to SVG.\r\n *\r\n * @see {@link IImageEvents} for a list of available events\r\n * @see {@link IImageAdapters} for a list of available Adapters\r\n */\r\nvar Image = /** @class */ (function (_super) {\r\n __extends(Image, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Image() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Image\";\r\n _this.element = _this.paper.add(\"image\");\r\n _this.applyTheme();\r\n _this.width = 50;\r\n _this.height = 50;\r\n return _this;\r\n }\r\n /**\r\n * Draws an `` element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Image.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.href) {\r\n var width = this.innerWidth;\r\n var height = this.innerHeight;\r\n if ($type.isNumber(this.widthRatio)) {\r\n width = height * this.widthRatio;\r\n this.width = width;\r\n }\r\n if ($type.isNumber(this.heightRatio)) {\r\n height = width * this.heightRatio;\r\n this.height = height;\r\n }\r\n this.element.attr({\r\n \"width\": width,\r\n \"height\": height\r\n });\r\n this.element.attrNS($dom.XLINK, \"xlink:href\", this.href);\r\n }\r\n };\r\n Object.defineProperty(Image.prototype, \"href\", {\r\n /**\r\n * @return Image URI\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"href\");\r\n },\r\n /**\r\n * An image URI.\r\n *\r\n * @param value Image URI\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"href\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"widthRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"widthRatio\");\r\n },\r\n /**\r\n * Sets image `width` relatively to its `height`.\r\n *\r\n * If image's `height = 100` and `widthRatio = 0.5` the actual width will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"widthRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"heightRatio\", {\r\n /**\r\n * @return Ratio\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"heightRatio\");\r\n },\r\n /**\r\n * Sets image `height` relatively to its `width`.\r\n *\r\n * If image's `width = 100` and `heightRatio = 0.5` the actual height will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"heightRatio\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Image.prototype, \"bbox\", {\r\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n get: function () {\r\n return {\r\n x: 0,\r\n y: 0,\r\n width: this.pixelWidth,\r\n height: this.pixelHeight\r\n };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Image;\r\n}(Sprite));\r\nexport { Image };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Image\"] = Image;\r\n//# sourceMappingURL=Image.js.map","/**\r\n * Module for a multi-part arched line.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline } from \"./Polyline\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a multi-part arched line.\r\n *\r\n * @see {@link IPolyarcEvents} for a list of available events\r\n * @see {@link IPolyarcAdapters} for a list of available Adapters\r\n */\r\nvar Polyarc = /** @class */ (function (_super) {\r\n __extends(Polyarc, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polyarc() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polyarc\";\r\n _this.controlPointDistance = 0.5;\r\n _this.controlPointPosition = 0.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polyarc.prototype.makePath = function () {\r\n this._distance = 0;\r\n var segments = this.segments;\r\n if (segments && segments.length > 0) {\r\n var path = \"\";\r\n this._realSegments = [];\r\n for (var i = 0, len = segments.length; i < len; i++) {\r\n var points = segments[i];\r\n var realPoints = [];\r\n this._realSegments.push(realPoints);\r\n if (points.length > 0) {\r\n path += $path.moveTo(points[0]);\r\n for (var p = 1; p < points.length; p++) {\r\n var pointA = points[p - 1];\r\n var pointB = points[p];\r\n var distanceAB = $math.getDistance(pointB, pointA);\r\n var cpDistance = distanceAB * this.controlPointDistance;\r\n var controlPointPosition = this.controlPointPosition;\r\n var angle = -$math.getAngle(pointA, pointB);\r\n var cpx = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 0.5 - cpDistance * $math.sin(angle);\r\n var cpy = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 0.5 - cpDistance * $math.cos(angle);\r\n var controlPoint1 = { x: cpx, y: cpy };\r\n var cpx2 = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 1.5 - cpDistance * $math.sin(angle);\r\n var cpy2 = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 1.5 - cpDistance * $math.cos(angle);\r\n var controlPoint2 = { x: cpx2, y: cpy2 };\r\n path += $path.cubicCurveTo(pointB, controlPoint1, controlPoint2);\r\n // we add a lot of points in order to get the position/angle later\r\n var stepCount = Math.ceil(distanceAB);\r\n var prevPoint = pointA;\r\n if (stepCount > 0) {\r\n for (var i_1 = 0; i_1 <= stepCount; i_1++) {\r\n var point = $math.getPointOnCubicCurve(pointA, pointB, controlPoint1, controlPoint2, i_1 / stepCount);\r\n realPoints.push(point);\r\n this._distance += $math.getDistance(prevPoint, point);\r\n prevPoint = point;\r\n }\r\n }\r\n else {\r\n realPoints.push(pointA);\r\n }\r\n }\r\n }\r\n }\r\n this.path = path;\r\n }\r\n };\r\n Object.defineProperty(Polyarc.prototype, \"controlPointPosition\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointPosition\");\r\n },\r\n /**\r\n * Relative position along the line the control point is. (0-1)\r\n *\r\n * @default 0.5\r\n * @param value Position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointPosition\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polyarc.prototype, \"controlPointDistance\", {\r\n /**\r\n * @return Distance (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"controlPointDistance\");\r\n },\r\n /**\r\n * Relative distance of the control point. (0-1)\r\n *\r\n * Default is half the length of the line. (0.5)\r\n *\r\n * @default 0.5\r\n * @param value Distance (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"controlPointDistance\", value);\r\n this.makePath();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polyarc;\r\n}(Polyline));\r\nexport { Polyarc };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyarc\"] = Polyarc;\r\n//# sourceMappingURL=Polyarc.js.map","/**\r\n * Morpher module contains functionality that allows morphing one polygon to\r\n * another.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Animation, AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * Morpher can be used to morph one polygon to some other polygon.\r\n */\r\nvar Morpher = /** @class */ (function (_super) {\r\n __extends(Morpher, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param morphable An object to morph\r\n */\r\n function Morpher(morphable) {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A storage for measurements.\r\n */\r\n _this._bboxes = [];\r\n /**\r\n * Duration of the morphing animation in milliseconds.\r\n */\r\n _this.morphDuration = 800;\r\n /**\r\n * An easing function to use for morphing animation.\r\n *\r\n * @see {@link Ease}\r\n */\r\n _this.morphEasing = $ease.cubicOut;\r\n /**\r\n * If set to `true`, all separate parts of the multi-part polygon will\r\n * morph into a single circle or polygon when using built-in methods\r\n * `morphToCircle()` or `morphToPolygon()`.\r\n *\r\n * Otherwise each separate part of polygon will morph to individual target\r\n * circle or polgyon.\r\n */\r\n _this.morphToSingle = true;\r\n /**\r\n * A ratio to scale morphed object in relation to the source object.\r\n */\r\n _this.scaleRatio = 1;\r\n _this.className = \"Morpher\";\r\n _this.morphable = morphable;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Morphs a polygon to another polygon.\r\n *\r\n * @param toPoints Corner points of the target shape\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToPolygon = function (toPoints, duration, easing) {\r\n var points = this.morphable.currentPoints;\r\n if (points && toPoints) {\r\n this.sortPoints(points);\r\n this.sortPoints(toPoints);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n this._morphFromPointsReal = this.normalizePoints(toPoints, points);\r\n this._morphToPointsReal = this.normalizePoints(points, toPoints);\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n }\r\n };\r\n /**\r\n * [normalizePoints description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointsA Point A\r\n * @param pointsB Point B\r\n * @return Normalized points\r\n */\r\n Morpher.prototype.normalizePoints = function (pointsA, pointsB) {\r\n for (var i = 0, len = pointsA.length; i < len; i++) {\r\n var surfaceA = pointsA[i][0];\r\n var holeA = pointsA[i][1];\r\n var bboxA = $type.getValue($math.getBBox(surfaceA));\r\n var middleX = bboxA.x + bboxA.width;\r\n var middleY = bboxA.y + bboxA.height;\r\n // check if we have the same in PointsB\r\n if (!pointsB[i]) {\r\n pointsB[i] = [];\r\n }\r\n // check if we have surface in pointsB\r\n if (surfaceA && !pointsB[i][0]) {\r\n pointsB[i][0] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n if (pointsB[i][0]) {\r\n pointsB[i][0] = this.addPoints(pointsB[i][0], surfaceA.length);\r\n var distance = Infinity;\r\n var splitAt = 0;\r\n for (var a = 0; a < pointsB[i][0].length; a++) {\r\n var newDistance = $math.getDistance(pointsB[i][0][a], surfaceA[0]);\r\n if (newDistance < distance) {\r\n splitAt = a;\r\n distance = newDistance;\r\n }\r\n }\r\n var partA = pointsB[i][0].slice(0, splitAt);\r\n var partB = pointsB[i][0].slice(splitAt);\r\n pointsB[i][0] = partB.concat(partA);\r\n }\r\n if (holeA) {\r\n if (!pointsB[i][1]) {\r\n pointsB[i][1] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n }\r\n pointsB[i][1] = this.addPoints(pointsB[i][1], holeA.length);\r\n }\r\n }\r\n return pointsB;\r\n };\r\n /**\r\n * [sortPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @return common bbox of points\r\n */\r\n Morpher.prototype.sortPoints = function (points) {\r\n points.sort(function (a, b) {\r\n var bbox1 = $type.getValue($math.getBBox(a[0]));\r\n var bbox2 = $type.getValue($math.getBBox(b[0]));\r\n if (bbox1.width * bbox1.height > bbox2.width * bbox2.height) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n });\r\n var bboxes = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n if (surface) {\r\n bboxes.push($type.getValue($math.getBBox(surface)));\r\n }\r\n }\r\n return $math.getCommonRectangle(bboxes);\r\n };\r\n /**\r\n * Morphs polygon to a circle (it is actually a polygon which makes a circle).\r\n *\r\n * @param radius Target circle radius (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToCircle = function (radius, duration, easing) {\r\n var points = this.morphable.points;\r\n var commonBBox = this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = $type.getValue($math.getBBox(fromPoints)); // this._bboxes[i];\r\n if (this.morphToSingle) {\r\n bbox = $type.getValue(commonBBox);\r\n }\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n var realRadius = radius;\r\n if (!$type.isNumber(realRadius)) {\r\n realRadius = Math.min(bbox.width / 2, bbox.height / 2);\r\n }\r\n toPoints = [];\r\n // find angle for the first point\r\n var startAngle = $math.getAngle({ x: middleX, y: middleY }, surface[0]);\r\n var count = 100;\r\n if (surface.length > count) {\r\n count = surface.length;\r\n }\r\n fromPoints = this.addPoints(surface, count);\r\n count = fromPoints.length; // add Points might increase number a bit\r\n var angle = 360 / (count - 1);\r\n for (var a = 0; a < count; a++) {\r\n var realAngle = angle * a + startAngle;\r\n var pointOnCircle = { x: middleX + realRadius * $math.cos(realAngle), y: middleY + realRadius * $math.sin(realAngle) };\r\n toPoints[a] = pointOnCircle;\r\n }\r\n if (hole && hole.length > 0) {\r\n for (var i_1 = 0, hlen = hole.length; i_1 < hlen; i_1++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n /**\r\n * [addPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @param mustHaveCount [description]\r\n * @return [description]\r\n */\r\n Morpher.prototype.addPoints = function (points, mustHaveCount) {\r\n var addToSegmentCount = Math.round(mustHaveCount / points.length);\r\n var newPoints = [];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point0 = points[i];\r\n var point1 = void 0;\r\n if (i == points.length - 1) {\r\n point1 = points[0];\r\n }\r\n else {\r\n point1 = points[i + 1];\r\n }\r\n newPoints.push(point0);\r\n for (var p = 1; p < addToSegmentCount; p++) {\r\n var percent = p / addToSegmentCount;\r\n var extraPoint = { x: point0.x + (point1.x - point0.x) * percent, y: point0.y + (point1.y - point0.y) * percent };\r\n newPoints.push(extraPoint);\r\n }\r\n // stop adding in case we already added more than left in original\r\n if (newPoints.length + points.length - i == mustHaveCount) {\r\n addToSegmentCount = 0;\r\n }\r\n }\r\n if (newPoints.length < mustHaveCount && points.length > 0) {\r\n var lastPoint = points[points.length - 1];\r\n for (var p = newPoints.length; p < mustHaveCount; p++) {\r\n // add same as last\r\n newPoints.push({ x: lastPoint.x, y: lastPoint.y });\r\n }\r\n }\r\n return newPoints;\r\n };\r\n /**\r\n * Morphs polygon into a rectangular polygon.\r\n *\r\n * @param width Width of the target rectangle (px)\r\n * @param height Height of the target rectangle (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphToRectangle = function (width, height, duration, easing) {\r\n var points = this.morphable.points;\r\n this.sortPoints(points);\r\n this._morphFromPointsReal = [];\r\n this._morphToPointsReal = [];\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n //\t\tlet biggestBBox: IRectangle = this._bboxes[this._biggestIndex];\r\n // surface\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n this._morphFromPointsReal[i] = [];\r\n this._morphToPointsReal[i] = [];\r\n if (surface) {\r\n var toPoints = surface;\r\n var fromPoints = surface;\r\n var bbox = this._bboxes[i];\r\n // we only work with first area. TODO: maybe we should find the biggest one?\r\n if (this.morphToSingle) {\r\n //if (i != this._biggestIndex) {\r\n //\tbbox = { x: biggestBBox.x + biggestBBox.width / 2, y: biggestBBox.y + biggestBBox.height / 2, width: 0, height: 0 };\r\n //}\r\n }\r\n var x = bbox.x;\r\n var y = bbox.y;\r\n var realWidth = width;\r\n var realHeight = height;\r\n if (!$type.isNumber(realWidth)) {\r\n realWidth = bbox.width;\r\n }\r\n if (!$type.isNumber(realHeight)) {\r\n realHeight = bbox.height;\r\n }\r\n toPoints = [{ x: x, y: y }, { x: x + realWidth, y: y }, { x: x + realWidth, y: y + realHeight }, { x: x, y: y + realHeight }];\r\n toPoints = this.addPoints(toPoints, surface.length);\r\n // if polygon has less points then count, add\r\n if (surface.length < 4) {\r\n for (var i_2 = surface.length; i_2 < 4; i_2++) {\r\n toPoints.push({ x: surface[i_2].x, y: surface[i_2].y });\r\n }\r\n }\r\n if (hole && hole.length > 0) {\r\n var middleX = bbox.x + bbox.width / 2;\r\n var middleY = bbox.y + bbox.height / 2;\r\n for (var i_3 = 0, hlen = hole.length; i_3 < hlen; i_3++) {\r\n toPoints.push({ x: middleX, y: middleY });\r\n }\r\n }\r\n this._morphFromPointsReal[i][0] = fromPoints;\r\n this._morphToPointsReal[i][0] = toPoints;\r\n }\r\n }\r\n this.morphable.currentPoints = this._morphFromPointsReal;\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"morphProgress\", {\r\n /**\r\n * Returns the progress of morph transition.\r\n *\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this._morphProgress;\r\n },\r\n /**\r\n * Progress of the morph transition.\r\n *\r\n * Setting this will also trigger actual transformation.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n this._morphProgress = value;\r\n var currentPoints = [];\r\n if (value != null) {\r\n var fromPoints = this._morphFromPointsReal;\r\n var toPoints = this._morphToPointsReal;\r\n if (fromPoints != null && toPoints != null) {\r\n for (var i = 0, len = fromPoints.length; i < len; i++) {\r\n var currentArea = [];\r\n currentPoints.push(currentArea);\r\n var surfaceFrom = fromPoints[i][0];\r\n var holeFrom = fromPoints[i][1];\r\n var surfaceTo = toPoints[i][0];\r\n var holeTo = toPoints[i][1];\r\n if (surfaceFrom && surfaceFrom.length > 0 && surfaceTo && surfaceTo.length > 0) {\r\n var currentSurface = [];\r\n for (var i_4 = 0, slen = surfaceFrom.length; i_4 < slen; i_4++) {\r\n var point0 = surfaceFrom[i_4];\r\n var point1 = surfaceTo[i_4];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentSurface.push(currentPoint);\r\n }\r\n currentArea[0] = currentSurface;\r\n }\r\n if (holeFrom && holeFrom.length > 0 && holeTo && holeTo.length > 0) {\r\n var currentHole = [];\r\n for (var i_5 = 0, hlen = holeFrom.length; i_5 < hlen; i_5++) {\r\n var point0 = holeFrom[i_5];\r\n var point1 = holeTo[i_5];\r\n var currentPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value };\r\n currentHole.push(currentPoint);\r\n }\r\n currentArea[1] = currentHole;\r\n }\r\n }\r\n }\r\n }\r\n this.morphable.currentPoints = currentPoints;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Restores the polygon to its original appearance.\r\n *\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\r\n Morpher.prototype.morphBack = function (duration, easing) {\r\n this._morphToPointsReal = this._morphFromPointsReal;\r\n this._morphFromPointsReal = this.morphable.currentPoints;\r\n if (!$type.hasValue(duration)) {\r\n duration = this.morphDuration;\r\n }\r\n if (!$type.hasValue(easing)) {\r\n easing = this.morphEasing;\r\n }\r\n var animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n this._disposers.push(animation);\r\n animation.start();\r\n return animation;\r\n };\r\n Object.defineProperty(Morpher.prototype, \"animations\", {\r\n /**\r\n * Returns a list of morph animations currently being played.\r\n *\r\n * @return List of animations\r\n */\r\n get: function () {\r\n if (!this._animations) {\r\n this._animations = [];\r\n this._disposers.push(new AnimationDisposer(this._animations));\r\n }\r\n return this._animations;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Morpher;\r\n}(BaseObject));\r\nexport { Morpher };\r\n//# sourceMappingURL=Morpher.js.map","/**\r\n * Polygon module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Morpher } from \"../utils/Morpher\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link IPolygonEvents} for a list of available events\r\n * @see {@link IPolygonAdapters} for a list of available Adapters\r\n */\r\nvar Polygon = /** @class */ (function (_super) {\r\n __extends(Polygon, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Polygon() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Polygon\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.shapeRendering = \"auto\";\r\n _this._currentPoints = [];\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Polygon.prototype, \"points\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n var points = this.getPropertyValue(\"points\");\r\n var path = this.path;\r\n if (path && (!points || points.length == 0)) {\r\n var valueStr = path.slice(1, path.length - 1);\r\n var segments = valueStr.split(\"ZM\");\r\n for (var s = 0; s < segments.length; s++) {\r\n var segment = segments[s];\r\n if (segment.length > 0) {\r\n var areaHole = segment.split(\"M\");\r\n var areaArr = areaHole[0];\r\n var holeArr = areaHole[1];\r\n if (areaArr && areaArr.length > 0) {\r\n var pointsArr = areaArr.split(\"L\");\r\n if (pointsArr.length > 0) {\r\n var area = [];\r\n var areaAndHole = [area];\r\n points.push(areaAndHole);\r\n for (var p = 0; p < pointsArr.length; p++) {\r\n var coords = pointsArr[p].split(\",\");\r\n area.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n if (holeArr && holeArr.length > 0) {\r\n var pointsArr_1 = holeArr.split(\"L\");\r\n if (pointsArr_1.length > 0) {\r\n var hole = [];\r\n areaAndHole.push(hole);\r\n for (var p = pointsArr_1.length - 1; p >= 0; p--) {\r\n var coords = pointsArr_1[p].split(\",\");\r\n hole.push({ x: +coords[0], y: +coords[1] });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.setPropertyValue(\"points\", points);\r\n this._currentPoints = points;\r\n }\r\n return points;\r\n },\r\n /**\r\n * An array of X/Y coordinates for each elbow of the polygon.\r\n *\r\n * @todo Example\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n this.setPropertyValue(\"points\", points, true);\r\n this._currentPoints = points;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"currentPoints\", {\r\n /**\r\n * @return Polygon points\r\n */\r\n get: function () {\r\n if ((!this._currentPoints || this._currentPoints.length == 0) && this.path) {\r\n this._currentPoints = this.points;\r\n }\r\n return this._currentPoints;\r\n },\r\n /**\r\n * Current points. Used when morphing the element, so that original `points`\r\n * are not overwritten.\r\n *\r\n * @param points Polygon points\r\n */\r\n set: function (points) {\r\n if (this._currentPoints != points) {\r\n this._currentPoints = points;\r\n this.draw();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Polygon.prototype.draw = function () {\r\n var path = \"\";\r\n var points = this._currentPoints;\r\n var left;\r\n var right;\r\n var top;\r\n var bottom;\r\n if (points.length > 0) {\r\n // separate areas\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n // surface\r\n var surface = points[i][0];\r\n var hole = points[i][1];\r\n if (surface && surface.length > 0) {\r\n var point = surface[0];\r\n path += $path.moveTo(point);\r\n for (var s = 0; s < surface.length; s++) {\r\n point = surface[s];\r\n path += $path.lineTo(point);\r\n if (!$type.isNumber(right) || (right < point.x)) {\r\n right = point.x;\r\n }\r\n if (!$type.isNumber(left) || (left > point.x)) {\r\n left = point.x;\r\n }\r\n if (!$type.isNumber(top) || (top > point.y)) {\r\n top = point.y;\r\n }\r\n if (!$type.isNumber(bottom) || (bottom < point.y)) {\r\n bottom = point.y;\r\n }\r\n }\r\n }\r\n // hole\r\n if (hole && hole.length > 0) {\r\n var point = hole[0];\r\n path += $path.moveTo(point);\r\n for (var h = 0, hlen = hole.length; h < hlen; h++) {\r\n point = hole[h];\r\n path += $path.lineTo(point);\r\n }\r\n }\r\n }\r\n if (path) {\r\n path += $path.closePath();\r\n }\r\n this.bbox.x = left;\r\n this.bbox.y = top;\r\n this.bbox.width = right - left;\r\n this.bbox.height = bottom - top;\r\n _super.prototype.setPath.call(this, path);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n Polygon.prototype.setPath = function (value) {\r\n if (_super.prototype.setPath.call(this, value)) {\r\n this.points = [];\r\n this._bbox = this.group.getBBox();\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Measures element\r\n */\r\n Polygon.prototype.measureElement = function () {\r\n // Overriding to avoid extra measurement.\r\n };\r\n Object.defineProperty(Polygon.prototype, \"centerPoint\", {\r\n /**\r\n * A calculated center point for the shape.\r\n *\r\n * @readonly\r\n * @return Center\r\n */\r\n get: function () {\r\n return { x: this.bbox.x + this.bbox.width / 2, y: this.bbox.y + this.bbox.height / 2 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Polygon.prototype, \"morpher\", {\r\n /**\r\n * A [[Morpher]] instance that is used to morph polygon into some other\r\n * shape.\r\n *\r\n * @readonly\r\n * @return Morpher instance\r\n */\r\n get: function () {\r\n if (!this._morpher) {\r\n this._morpher = new Morpher(this);\r\n this._disposers.push(this._morpher);\r\n }\r\n return this._morpher;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Polygon;\r\n}(Sprite));\r\nexport { Polygon };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polygon\"] = Polygon;\r\n//# sourceMappingURL=Polygon.js.map","/**\r\n * Preloader module.\r\n *\r\n * Preloader is a progress indicator.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Slice } from \"./Slice\";\r\nimport { Label } from \"./Label\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IPreloaderEvents} for a list of available events\r\n * @see {@link IPreloaderAdapters} for a list of available Adapters\r\n */\r\nvar Preloader = /** @class */ (function (_super) {\r\n __extends(Preloader, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Preloader() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"Preloader\";\r\n // Set dimensions\r\n _this.width = percent(100);\r\n _this.height = percent(100);\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create main container\r\n var sliceContainer = _this.createChild(Container);\r\n sliceContainer.shouldClone = false;\r\n // Add background (100%) slice\r\n var backgroundSlice = sliceContainer.createChild(Slice);\r\n backgroundSlice.shouldClone = false;\r\n backgroundSlice.radius = 53;\r\n backgroundSlice.arc = 360;\r\n backgroundSlice.fill = interfaceColors.getFor(\"fill\");\r\n backgroundSlice.fillOpacity = 0.8;\r\n backgroundSlice.innerRadius = 42;\r\n backgroundSlice.isMeasured = false;\r\n _this.backgroundSlice = backgroundSlice;\r\n // Add progress slice\r\n var progressSlice = sliceContainer.createChild(Slice);\r\n progressSlice.shouldClone = false;\r\n progressSlice.radius = 50;\r\n progressSlice.innerRadius = 45;\r\n progressSlice.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n progressSlice.fillOpacity = 0.2;\r\n progressSlice.isMeasured = false;\r\n _this.progressSlice = progressSlice;\r\n // Add text label element\r\n var label = sliceContainer.createChild(Label);\r\n label.shouldClone = false;\r\n label.horizontalCenter = \"middle\";\r\n label.verticalCenter = \"middle\";\r\n label.isMeasured = false;\r\n label.fill = interfaceColors.getFor(\"text\");\r\n label.align = \"center\";\r\n label.valign = \"middle\";\r\n label.textAlign = \"middle\";\r\n label.fillOpacity = 0.4;\r\n _this.label = label;\r\n // Set defaults\r\n _this.background.opacity = 1;\r\n _this.background.fill = interfaceColors.getFor(\"background\");\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.delay = 300;\r\n // Create hidden state\r\n var hiddenState = _this.states.create(\"hidden\");\r\n hiddenState.properties.opacity = 0;\r\n // Hide by default\r\n _this.visible = false;\r\n _this.hide(0);\r\n _this.__disabled = true;\r\n // Make it disposable\r\n // @todo Maybe it's enough to just dispose `sliceContainer`?\r\n _this._disposers.push(_this.backgroundSlice);\r\n _this._disposers.push(_this.progressSlice);\r\n _this._disposers.push(_this.label);\r\n _this._disposers.push(sliceContainer);\r\n return _this;\r\n }\r\n Object.defineProperty(Preloader.prototype, \"progress\", {\r\n /**\r\n * @return Progress (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"progress\");\r\n },\r\n /**\r\n * Current preload progress. (0-1)\r\n *\r\n * * 0 - 0%\r\n * * 0.5 - 50%\r\n * * 1 - 100%\r\n *\r\n * Setting this to a value less than 1, will automatically reveal the\r\n * preloader, while setting it to 1 (100%) will hide it.\r\n *\r\n * @param value Progress (0-1)\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this.__disabled = false;\r\n this.validateLayout(); // show not in center without this\r\n this.setPropertyValue(\"progress\", value);\r\n /*if (!this.visible && value == 1) {\r\n return;\r\n }*/\r\n this.progressSlice.arc = 360 * value;\r\n if (this.label) {\r\n this.label.text = Math.round(value * 100) + \"%\";\r\n }\r\n if (value >= 1) {\r\n // Cancel the timeout\r\n if (this._started) {\r\n this._started = undefined;\r\n }\r\n // TODO remove closure ?\r\n registry.events.once(\"enterframe\", function () {\r\n var animation = _this.hide();\r\n if (animation && !animation.isFinished()) {\r\n animation.events.once(\"animationended\", function () {\r\n _this.__disabled = true;\r\n });\r\n }\r\n else {\r\n _this.__disabled = true;\r\n }\r\n });\r\n this.interactionsEnabled = false;\r\n this.setPropertyValue(\"progress\", 0);\r\n }\r\n else if (value > 0) {\r\n if (this.delay) {\r\n if (!this._started) {\r\n this._started = new Date().getTime();\r\n }\r\n else if ((this._started + this.delay) <= new Date().getTime()) {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n else {\r\n this.__disabled = false;\r\n this.show();\r\n this.interactionsEnabled = true;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Preloader.prototype, \"delay\", {\r\n /**\r\n * @return Delay (ms)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"delay\");\r\n },\r\n /**\r\n * Delay display of preloader by X milliseconds.\r\n *\r\n * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n * set to 1) before `delay` ms, the loader is never shown.\r\n *\r\n * This is used to avoid brief flashing of the preload for very quick loads.\r\n *\r\n * @default 1000\r\n * @param value Delay (ms)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"delay\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Preloader;\r\n}(Container));\r\nexport { Preloader };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Preloader\"] = Preloader;\r\n//# sourceMappingURL=Preloader.js.map","/**\r\n * Zoom out button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link ICloseButtonEvents} for a list of available events\r\n * @see {@link ICloseButtonAdapters} for a list of available Adapters\r\n */\r\nvar CloseButton = /** @class */ (function (_super) {\r\n __extends(CloseButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CloseButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"CloseButton\";\r\n _this.padding(8, 8, 8, 8);\r\n _this.showSystemTooltip = true;\r\n _this.width = 30;\r\n _this.height = 30;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.cursorOverStyle = MouseCursorStyle.pointer;\r\n var background = _this.background;\r\n background.cornerRadius(20, 20, 20, 20);\r\n var bgc = interfaceColors.getFor(\"background\");\r\n background.fill = bgc;\r\n background.stroke = interfaceColors.getFor(\"primaryButton\");\r\n background.strokeOpacity = 1;\r\n background.strokeWidth = 1;\r\n var downColor = interfaceColors.getFor(\"primaryButtonActive\");\r\n var bhs = background.states.getKey(\"hover\");\r\n bhs.properties.strokeWidth = 3;\r\n bhs.properties.fill = bgc;\r\n var bds = background.states.getKey(\"down\");\r\n bds.properties.stroke = downColor;\r\n bds.properties.fill = bgc;\r\n // Create an icon\r\n var icon = new Sprite();\r\n icon.element = _this.paper.add(\"path\");\r\n icon.stroke = background.stroke;\r\n _this.icon = icon;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n CloseButton.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n var w = this.pixelWidth / 3;\r\n var h = this.pixelHeight / 3;\r\n var path = $path.moveTo({ x: -w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: w / 2, y: h / 2 });\r\n path += $path.moveTo({ x: w / 2, y: -h / 2 });\r\n path += $path.lineTo({ x: -w / 2, y: h / 2 });\r\n this.icon.path = path;\r\n this.invalidateLayout();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n CloseButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Close\");\r\n }\r\n };\r\n return CloseButton;\r\n}(Button));\r\nexport { CloseButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CloseButton\"] = CloseButton;\r\n//# sourceMappingURL=CloseButton.js.map","/**\r\n * Functionality for drawing simple SwitchButtons.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Label } from \"./Label\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * SwitchButton class is capable of drawing a simple rectangular SwitchButton with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link ISwitchButtonEvents} for a list of available events\r\n * @see {@link ISwitchButtonAdapters} for a list of available Adapters\r\n */\r\nvar SwitchButton = /** @class */ (function (_super) {\r\n __extends(SwitchButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SwitchButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SwitchButton\";\r\n _this.tooltipY = 0;\r\n // Set defaults\r\n _this.layout = \"horizontal\";\r\n _this.contentAlign = \"center\";\r\n _this.contentValign = \"middle\";\r\n _this.padding(8, 16, 8, 16);\r\n _this.setStateOnChildren = true;\r\n _this.states.create(\"active\");\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create the label element\r\n var leftLabel = new Label();\r\n leftLabel.fillOpacity = 0.3;\r\n var llas = leftLabel.states.create(\"active\");\r\n llas.properties.fillOpacity = 1;\r\n leftLabel.isActive = true;\r\n _this.leftLabel = leftLabel;\r\n var button = new Button();\r\n var circle = new Circle();\r\n button.contentValign = \"none\";\r\n button.padding(0, 0, 0, 0);\r\n circle.radius = 10;\r\n button.icon = circle;\r\n button.icon.valign = \"middle\";\r\n button.label = undefined;\r\n var p100 = percent(100);\r\n button.background.cornerRadius(p100, p100, p100, p100);\r\n button.width = circle.radius * 3.5;\r\n button.height = circle.radius * 2.1;\r\n button.marginLeft = 8;\r\n button.marginRight = 8;\r\n button.togglable = true;\r\n circle.dx = -circle.radius * 0.7;\r\n circle.fill = interfaceColors.getFor(\"primaryButton\");\r\n var hs = circle.states.create(\"hover\");\r\n hs.properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n var as = circle.states.create(\"active\");\r\n as.properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n as.properties.dx = circle.radius * 0.7;\r\n _this.switchButton = button;\r\n _this.events.on(\"toggled\", function () {\r\n _this.leftLabel.isActive = !_this.isActive;\r\n _this.rightLabel.isActive = _this.isActive;\r\n });\r\n // Create the label element\r\n var rightLabel = new Label();\r\n rightLabel.fillOpacity = 0.3;\r\n var rlas = rightLabel.states.create(\"active\");\r\n rlas.properties.fillOpacity = 1;\r\n _this.rightLabel = rightLabel;\r\n // Set up accessibility\r\n // A Button should be always focusable\r\n _this.role = \"button\";\r\n _this.focusable = true;\r\n rightLabel.valign = \"middle\";\r\n leftLabel.valign = \"middle\";\r\n button.valign = \"middle\";\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(SwitchButton.prototype, \"leftLabel\", {\r\n /**\r\n * @return Left label element\r\n */\r\n get: function () {\r\n return this._leftLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param left label element\r\n */\r\n set: function (label) {\r\n if (this._leftLabel) {\r\n this.removeDispose(this._leftLabel);\r\n }\r\n this._leftLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._leftLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"rightLabel\", {\r\n /**\r\n * @return Rigth label element\r\n */\r\n get: function () {\r\n return this._rightLabel;\r\n },\r\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param rigth label element\r\n */\r\n set: function (label) {\r\n if (this._rightLabel) {\r\n this.removeDispose(this._rightLabel);\r\n }\r\n this._rightLabel = label;\r\n if (label) {\r\n label.parent = this;\r\n label.interactionsEnabled = false;\r\n label.shouldClone = false;\r\n this._disposers.push(this._rightLabel);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switch\", {\r\n /**\r\n * @ignore\r\n * @deprecated Use `switchButton` instead\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SwitchButton.prototype, \"switchButton\", {\r\n /**\r\n * @return Button\r\n */\r\n get: function () {\r\n return this._switchButton;\r\n },\r\n /**\r\n * A [[Button]] element for switch.\r\n *\r\n * @param Button\r\n */\r\n set: function (button) {\r\n if (this._switchButton) {\r\n this.removeDispose(this._switchButton);\r\n }\r\n this._switchButton = button;\r\n if (button) {\r\n button.parent = this;\r\n button.shouldClone = false;\r\n this._disposers.push(this._switchButton);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\r\n SwitchButton.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (source.leftLabel) {\r\n this.leftLabel.copyFrom(source.leftLabel);\r\n }\r\n if (source.rightLabel) {\r\n this.rightLabel.copyFrom(source.rightLabel);\r\n }\r\n if (source.switchButton) {\r\n this.switchButton.copyFrom(source.switchButton);\r\n }\r\n };\r\n return SwitchButton;\r\n}(Container));\r\nexport { SwitchButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SwitchButton\"] = SwitchButton;\r\n//# sourceMappingURL=SwitchButton.js.map","/**\r\n * Slider is a scrollbar with just one selection grip.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a slider - a version of scrollbar with just one grip.\r\n *\r\n * @see {@link ISliderEvents} for a list of available events\r\n * @see {@link ISliderAdapters} for a list of available Adapters\r\n */\r\nvar Slider = /** @class */ (function (_super) {\r\n __extends(Slider, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Slider() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"Slider\";\r\n _this.thumb.opacity = 0;\r\n _this.thumb.interactionsEnabled = false;\r\n _this.endGrip.opacity = 0;\r\n _this.endGrip.interactionsEnabled = false;\r\n _this.startGrip.events.on(\"drag\", function () {\r\n _this.endGrip.x = _this.startGrip.x;\r\n _this.endGrip.y = _this.startGrip.y;\r\n });\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(Slider.prototype, \"__end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"end\", {\r\n /**\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Slider.prototype, \"start\", {\r\n /**\r\n * @return Position (0-1)\r\n */\r\n get: function () {\r\n return this._start;\r\n },\r\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\r\n set: function (position) {\r\n if (!this._isBusy) {\r\n this.__start = position;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Slider;\r\n}(Scrollbar));\r\nexport { Slider };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slider\"] = Slider;\r\n//# sourceMappingURL=Slider.js.map","/**\r\n * Play button functionality.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button } from \"./Button\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Triangle } from \"./Triangle\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IPlayButtonEvents} for a list of available events\r\n * @see {@link IPlayButtonAdapters} for a list of available Adapters\r\n */\r\nvar PlayButton = /** @class */ (function (_super) {\r\n __extends(PlayButton, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PlayButton() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PlayButton\";\r\n _this.padding(12, 12, 12, 12);\r\n _this.showSystemTooltip = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n var background = _this.background;\r\n background.cornerRadius(25, 25, 25, 25);\r\n background.fill = interfaceColors.getFor(\"primaryButton\");\r\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n background.strokeOpacity = 0;\r\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n // Create a play icon\r\n var playIcon = new Triangle();\r\n playIcon.direction = \"right\";\r\n playIcon.width = 9;\r\n playIcon.height = 11;\r\n playIcon.marginLeft = 1;\r\n playIcon.marginRight = 1;\r\n playIcon.horizontalCenter = \"middle\";\r\n playIcon.verticalCenter = \"middle\";\r\n playIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n playIcon.fill = playIcon.stroke;\r\n _this.icon = playIcon;\r\n // Create a play icon\r\n var stopIcon = new RoundedRectangle();\r\n stopIcon.width = 11;\r\n stopIcon.height = 11;\r\n stopIcon.horizontalCenter = \"middle\";\r\n stopIcon.verticalCenter = \"middle\";\r\n stopIcon.cornerRadius(0, 0, 0, 0);\r\n stopIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n stopIcon.fill = playIcon.stroke;\r\n _this.togglable = true;\r\n var activeState = _this.states.create(\"active\");\r\n activeState.transitionDuration = 0;\r\n activeState.properties.icon = stopIcon;\r\n _this.defaultState.transitionDuration = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PlayButton.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Play\");\r\n }\r\n };\r\n return PlayButton;\r\n}(Button));\r\nexport { PlayButton };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PlayButton\"] = PlayButton;\r\n//# sourceMappingURL=PlayButton.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This class can be used to modify radial gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nvar RadialGradientModifier = /** @class */ (function (_super) {\r\n __extends(RadialGradientModifier, _super);\r\n /**\r\n * Constructor.\r\n */\r\n function RadialGradientModifier() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadialGradientModifier\";\r\n _this.gradient = new RadialGradient();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n RadialGradientModifier.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.gradient = source.gradient.clone();\r\n };\r\n return RadialGradientModifier;\r\n}(GradientModifier));\r\nexport { RadialGradientModifier };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradientModifier\"] = RadialGradientModifier;\r\n//# sourceMappingURL=RadialGradientModifier.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $path from \"../../rendering/Path\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Line pattern.\r\n */\r\nvar LinePattern = /** @class */ (function (_super) {\r\n __extends(LinePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function LinePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"gap\"] = 0;\r\n _this._line = _this.paper.add(\"path\");\r\n _this.addElement(_this._line);\r\n return _this;\r\n }\r\n /**\r\n * Draws the pattern.\r\n */\r\n LinePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n this.properties[\"shapeRendering\"] = \"auto\";\r\n }\r\n if (this._line) {\r\n var w = this.width;\r\n var h = this.height;\r\n var path = \"\";\r\n if (!this.gap) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path = $path.moveTo({ x: -w, y: h / 2 }) + $path.lineTo({ x: w * 2, y: h / 2 });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n }\r\n }\r\n else {\r\n var step = this.gap + this.strokeWidth;\r\n var count = this.height / step;\r\n for (var i = -count / 2; i < count * 1.5; i++) {\r\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n path += $path.moveTo({ x: -w, y: (i + 0.5) * step }) + $path.lineTo({ x: w * 2, y: (i + 0.5) * step });\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n }\r\n else {\r\n path += $path.moveTo({ x: -w, y: i * step }) + $path.lineTo({ x: w * 2, y: i * step });\r\n }\r\n }\r\n }\r\n this._line.attr({ \"d\": path });\r\n }\r\n };\r\n Object.defineProperty(LinePattern.prototype, \"gap\", {\r\n /**\r\n * @return gap\r\n */\r\n get: function () {\r\n return this.properties[\"gap\"];\r\n },\r\n /**\r\n * Number of pixels between pattern lines.\r\n *\r\n * The pattern will automatically draw required number of lines to fill\r\n * pattern area maintaining `gap` distance between them.\r\n *\r\n * 0 (zero) means only single line will be drawn.\r\n *\r\n * @default 0\r\n * @since 4.7.7\r\n */\r\n set: function (value) {\r\n this.properties[\"gap\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return LinePattern;\r\n}(Pattern));\r\nexport { LinePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinePattern\"] = LinePattern;\r\n//# sourceMappingURL=LinePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Circular pattern\r\n */\r\nvar CirclePattern = /** @class */ (function (_super) {\r\n __extends(CirclePattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function CirclePattern() {\r\n var _this = _super.call(this) || this;\r\n _this.properties[\"radius\"] = 2;\r\n _this._circle = _this.paper.add(\"circle\");\r\n _this.addElement(_this._circle);\r\n _this.shapeRendering = \"auto\";\r\n return _this;\r\n }\r\n /**\r\n * Draws the circle element.\r\n */\r\n CirclePattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this._circle) {\r\n this._circle.attr({ \"r\": this.radius, \"cx\": this.width / 2, \"cy\": this.height / 2 });\r\n }\r\n };\r\n Object.defineProperty(CirclePattern.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px)\r\n */\r\n get: function () {\r\n return this.properties[\"radius\"];\r\n },\r\n /**\r\n * Circle radius in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"radius\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CirclePattern;\r\n}(Pattern));\r\nexport { CirclePattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CirclePattern\"] = CirclePattern;\r\n//# sourceMappingURL=CirclePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern } from \"./Pattern\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Rectangular pattern\r\n */\r\nvar RectPattern = /** @class */ (function (_super) {\r\n __extends(RectPattern, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RectPattern() {\r\n var _this = _super.call(this) || this;\r\n _this.rectHeight = 1;\r\n _this.rectWidth = 1;\r\n _this._rect = _this.paper.add(\"rect\");\r\n _this.addElement(_this._rect);\r\n return _this;\r\n }\r\n /**\r\n * Draws the rectangular element.\r\n */\r\n RectPattern.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.properties[\"rotationX\"] = this.width / 2;\r\n this.properties[\"rotationY\"] = this.height / 2;\r\n if (this._rect) {\r\n this._rect.attr({ \"width\": this.rectWidth, \"height\": this.rectHeight, \"x\": (this.width - this.rectWidth) / 2, \"y\": (this.height - this.rectHeight) / 2 });\r\n }\r\n };\r\n Object.defineProperty(RectPattern.prototype, \"rectWidth\", {\r\n /**\r\n * @return Width (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectWidth\"];\r\n },\r\n /**\r\n * Rectangle width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectWidth\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RectPattern.prototype, \"rectHeight\", {\r\n /**\r\n * @return Height (px)\r\n */\r\n get: function () {\r\n return this.properties[\"rectHeight\"];\r\n },\r\n /**\r\n * Rectangle height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"rectHeight\"] = value;\r\n this.draw();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return RectPattern;\r\n}(Pattern));\r\nexport { RectPattern };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RectPattern\"] = RectPattern;\r\n//# sourceMappingURL=RectPattern.js.map","/**\r\n * Module for \"Colorize\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Colorize\" filter.\r\n */\r\nvar ColorizeFilter = /** @class */ (function (_super) {\r\n __extends(ColorizeFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ColorizeFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ColorizeFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n //this.feColorMatrix.setAttribute(\"in\", \"SourceAlpha\");\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n // Set default properties\r\n _this.intensity = 1;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)applies colors to the already existing filter by modifying filyer's\r\n * color matrix element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ColorizeFilter.prototype.applyFilter = function () {\r\n var i = this.intensity;\r\n var ii = 1 - i;\r\n var r;\r\n var g;\r\n var b;\r\n var color = this.color;\r\n if (color && color.rgb) {\r\n r = color.rgb.r / 255 * i;\r\n g = color.rgb.g / 255 * i;\r\n b = color.rgb.b / 255 * i;\r\n }\r\n else {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n }\r\n this.feColorMatrix.attr({ \"values\": ii + \" 0 0 0 \" + r + \" 0 \" + ii + \" 0 0 \" + g + \" 0 0 \" + ii + \" 0 \" + b + \" 0 0 0 1 0\" });\r\n };\r\n Object.defineProperty(ColorizeFilter.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"color\"];\r\n },\r\n /**\r\n * Target color to apply to the element.\r\n *\r\n * Depending on the `intensity`, all colors of the target element will steer\r\n * towards this color.\r\n *\r\n * E.g. setting to `am4core.color(\"greener\")` will make all colors greener.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"color\"] = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ColorizeFilter.prototype, \"intensity\", {\r\n /**\r\n * @return Intensity (0-1)\r\n */\r\n get: function () {\r\n return this.properties.intensity;\r\n },\r\n /**\r\n * Intensity of the color (0-1).\r\n *\r\n * The bigger the number the more of a `color` target's colors will become.\r\n *\r\n * 0 means the colors will remain as they are.\r\n * 1 means all colors will become the target `color`.\r\n *\r\n * @default 1\r\n * @param value Intensity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties.intensity = value;\r\n this.applyFilter();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ColorizeFilter;\r\n}(Filter));\r\nexport { ColorizeFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorizeFilter\"] = ColorizeFilter;\r\n//# sourceMappingURL=ColorizeFilter.js.map","/**\r\n * Module for \"Blur\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter } from \"./Filter\";\r\nimport { registry } from \"../../Registry\";\r\n;\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Blur\" filter.\r\n */\r\nvar BlurFilter = /** @class */ (function (_super) {\r\n __extends(BlurFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function BlurFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"BlurFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\r\n _this.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n _this.filterPrimitives.push(_this.feGaussianBlur);\r\n // Set default properties\r\n _this.width = 200;\r\n _this.height = 200;\r\n _this.blur = 1.5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(BlurFilter.prototype, \"blur\", {\r\n /**\r\n * @return Blur\r\n */\r\n get: function () {\r\n return this.properties.blur;\r\n },\r\n /**\r\n * Blur value.\r\n *\r\n * The bigger the value, the blurrier the target element will become.\r\n *\r\n * @default 1.5\r\n * @param value Blur\r\n */\r\n set: function (value) {\r\n this.properties.blur = value;\r\n this.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return BlurFilter;\r\n}(Filter));\r\nexport { BlurFilter };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"BlurFilter\"] = BlurFilter;\r\n//# sourceMappingURL=BlurFilter.js.map","/**\r\n * Module for \"Focus\" filter.\r\n */\r\nimport { __extends } from \"tslib\";\r\nimport { Filter } from \"./Filter\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a \"Focus\" filter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n */\r\nvar FocusFilter = /** @class */ (function (_super) {\r\n __extends(FocusFilter, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FocusFilter() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FocusFilter\";\r\n // Create elements\r\n // NOTE: we do not need to add each individual element to `_disposers`\r\n // because `filterPrimitives` has an event handler which automatically adds\r\n // anything added to it to `_disposers`\r\n _this.feFlood = _this.paper.add(\"feFlood\");\r\n _this.feFlood.attr({ \"flood-color\": new InterfaceColorSet().getFor(\"primaryButtonHover\"), \"result\": \"base\" });\r\n _this.filterPrimitives.push(_this.feFlood);\r\n _this.feMorphology = _this.paper.add(\"feMorphology\");\r\n _this.feMorphology.attr({ \"result\": \"bigger\", \"in\": \"SourceGraphic\", \"operator\": \"dilate\", \"radius\": \"2\" });\r\n _this.filterPrimitives.push(_this.feMorphology);\r\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\r\n _this.feColorMatrix.attr({ \"result\": \"mask\", \"in\": \"bigger\", \"type\": \"matrix\", \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\" });\r\n _this.filterPrimitives.push(_this.feColorMatrix);\r\n _this.feComposite = _this.paper.add(\"feComposite\");\r\n _this.feComposite.attr({ \"result\": \"drop\", \"in\": \"base\", \"in2\": \"mask\", \"operator\": \"in\" });\r\n _this.filterPrimitives.push(_this.feComposite);\r\n _this.feBlend = _this.paper.add(\"feBlend\");\r\n _this.feBlend.attr({ \"in\": \"SourceGraphic\", \"in2\": \"drop\", \"mode\": \"normal\" });\r\n _this.filterPrimitives.push(_this.feBlend);\r\n // Set default properties\r\n _this.width = 130;\r\n _this.height = 130;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FocusFilter.prototype, \"stroke\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n return this.properties[\"stroke\"];\r\n },\r\n /**\r\n * Stroke (outline) color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.properties[\"stroke\"] = value;\r\n this.feFlood.attr({ \"flood-color\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"strokeWidth\", {\r\n /**\r\n * @return Outline thickness (px)\r\n */\r\n get: function () {\r\n return this.properties[\"strokeWidth\"];\r\n },\r\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Outline thickness (px)\r\n */\r\n set: function (value) {\r\n this.properties[\"strokeWidth\"] = value;\r\n this.feMorphology.attr({ \"radius\": value });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FocusFilter.prototype, \"opacity\", {\r\n /**\r\n * @return Outline opacity (0-1)\r\n */\r\n get: function () {\r\n return this.properties[\"opacity\"];\r\n },\r\n /**\r\n * Opacity of the outline. (0-1)\r\n *\r\n * @param value Outline opacity (0-1)\r\n */\r\n set: function (value) {\r\n this.properties[\"opacity\"] = value;\r\n this.feColorMatrix.attr({ \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \" + value + \" 0\" });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets filter's target element.\r\n *\r\n * In addition it also disables built-in focus outline on element this\r\n * filter is applied to.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\r\n FocusFilter.prototype.setSprite = function (value) {\r\n if (this._sprite && this._sprite != value) {\r\n this._sprite.group.removeStyle(\"outline\");\r\n }\r\n value.group.addStyle({\r\n \"outline\": \"none\"\r\n });\r\n _super.prototype.setSprite.call(this, value);\r\n };\r\n return FocusFilter;\r\n}(Filter));\r\nexport { FocusFilter };\r\n//# sourceMappingURL=FocusFilter.js.map","/**\r\n * This module contains PatternSet object definition\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color } from \"./Color\";\r\nimport { InterfaceColorSet } from \"./InterfaceColorSet\";\r\nimport { LinePattern } from \"../rendering/fills/LinePattern\";\r\nimport { RectPattern } from \"../rendering/fills/RectPattern\";\r\nimport { CirclePattern } from \"../rendering/fills/CirclePattern\";\r\nimport { registry } from \"../Registry\";\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines an interable list of distinctive patterns that can be used in\r\n * conjunction to colors to generate various fill patterns.\r\n *\r\n * @important\r\n * @since 4.7.5\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nvar PatternSet = /** @class */ (function (_super) {\r\n __extends(PatternSet, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PatternSet() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\r\n _this._list = [];\r\n /**\r\n * Current step.\r\n */\r\n _this._currentStep = 0;\r\n /**\r\n * If set to non-zero value, the PatternSet will start iterating patterns from\r\n * that particular index, not the first pattern in the list.\r\n */\r\n _this._startIndex = 0;\r\n /**\r\n * Current pass in cycle. Once all patterns in the list are iterated,\r\n * iteration restarts from beginning and currentPass is incremented.\r\n */\r\n _this._currentPass = 0;\r\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\r\n _this.baseColor = new Color({\r\n r: 103,\r\n g: 183,\r\n b: 220\r\n });\r\n _this.className = \"PatternSet\";\r\n // Set base color to be used for pattern elements\r\n var interfaceColors = new InterfaceColorSet();\r\n // Set default patterns\r\n _this.list = [\r\n _this.getLinePattern(1000, 45, 1, 6),\r\n _this.getRectPattern(10, 0, 4),\r\n _this.getLinePattern(1000, -45, 1, 6),\r\n _this.getCirclePattern(11, 2, true),\r\n _this.getLinePattern(6, 90, 1),\r\n _this.getRectPattern(12, 45, 6, true),\r\n _this.getLinePattern(6, 0, 1),\r\n _this.getRectPattern(7, 0, 4),\r\n _this.getLinePattern(1000, 45, 2, 3, \"4,2\"),\r\n _this.getCirclePattern(9, 3, false),\r\n _this.getLinePattern(1000, -45, 2, 3, \"4,2\"),\r\n _this.getRectPattern(10, 45, Math.sqrt(50)),\r\n _this.getLinePattern(1000, -45, 2, 1),\r\n _this.getRectPattern(10, 0, 9),\r\n _this.getLinePattern(1000, 45, 2, 1),\r\n _this.getLinePattern(1000, 0, 3, 1),\r\n _this.getRectPattern(10, 45, 10),\r\n _this.getLinePattern(1000, 90, 3, 1)\r\n ];\r\n _this.baseColor = interfaceColors.getFor(\"stroke\");\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n PatternSet.prototype.getLinePattern = function (size, rotation, thickness, gap, strokeDashArray) {\r\n var pattern = new LinePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.stroke = this.baseColor;\r\n pattern.gap = gap;\r\n pattern.strokeDasharray = strokeDashArray;\r\n pattern.strokeWidth = thickness;\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getRectPattern = function (size, rotation, thickness, outline) {\r\n var pattern = new RectPattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.rectWidth = thickness;\r\n pattern.rectHeight = thickness;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n if (rotation != 0) {\r\n pattern.shapeRendering = \"auto\";\r\n }\r\n pattern.rotation = rotation;\r\n return pattern;\r\n };\r\n PatternSet.prototype.getCirclePattern = function (size, radius, outline) {\r\n var pattern = new CirclePattern();\r\n pattern.width = size;\r\n pattern.height = size;\r\n pattern.shapeRendering = \"auto\";\r\n pattern.radius = radius;\r\n if (outline) {\r\n pattern.stroke = this.baseColor;\r\n pattern.strokeWidth = 1;\r\n pattern.fillOpacity = 0;\r\n }\r\n else {\r\n pattern.fill = this.baseColor;\r\n pattern.strokeWidth = 0;\r\n }\r\n return pattern;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"list\", {\r\n /**\r\n * @return Pattern list\r\n */\r\n get: function () {\r\n return this._list;\r\n },\r\n /**\r\n * List of pre-defined patterns to be used in set.\r\n *\r\n * @param value Pattern list\r\n */\r\n set: function (value) {\r\n this._list = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the next pattern in list.\r\n *\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.next = function () {\r\n var pattern = this.getIndex(this.currentStep);\r\n this._currentStep++;\r\n return pattern;\r\n };\r\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Pattern\r\n */\r\n PatternSet.prototype.getIndex = function (i) {\r\n var pattern;\r\n while (this.list.length <= i) {\r\n this.generatePatterns();\r\n }\r\n pattern = this.list[i];\r\n return pattern.clone();\r\n };\r\n /**\r\n * Generates a new set of patterns.\r\n */\r\n PatternSet.prototype.generatePatterns = function () {\r\n var count = this.list.length / (this._currentPass + 1);\r\n this._currentPass++;\r\n for (var i = 0; i < count; i++) {\r\n this.list.push(this.list[i].clone());\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\r\n PatternSet.prototype.reset = function () {\r\n this._currentStep = this._startIndex;\r\n };\r\n Object.defineProperty(PatternSet.prototype, \"currentStep\", {\r\n /**\r\n * @return Step\r\n */\r\n get: function () {\r\n return this._currentStep;\r\n },\r\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\r\n set: function (value) {\r\n this._currentStep = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PatternSet.prototype, \"startIndex\", {\r\n /**\r\n * @return Index\r\n */\r\n get: function () {\r\n return this._startIndex;\r\n },\r\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @param value Index\r\n */\r\n set: function (value) {\r\n this._startIndex = value;\r\n this.reset();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n PatternSet.prototype.processConfig = function (config) {\r\n // if (config) {\r\n // \t// Set up axis ranges\r\n // \tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n // \t\tfor (let i = 0, len = config.list.length; i < len; i++) {\r\n // \t\t\tif (!(config.list[i] instanceof Color)) {\r\n // \t\t\t\tconfig.list[i] = color(config.list[i]);\r\n // \t\t\t}\r\n // \t\t}\r\n // \t}\r\n // }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n return PatternSet;\r\n}(BaseObject));\r\nexport { PatternSet };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PatternSet\"] = PatternSet;\r\n//# sourceMappingURL=PatternSet.js.map","/**\r\n * A plugin base class.\r\n */\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class that provides core functionality for plugins.\r\n *\r\n * The easiest way to start off with a new plugin is to extend this class.\r\n *\r\n * It will provide all the mandatory functionality, such as disposers.\r\n *\r\n * @since 4.2.2\r\n */\r\nvar Plugin = /** @class */ (function () {\r\n /**\r\n * Constructor\r\n */\r\n function Plugin() {\r\n /**\r\n * Is this object disposed?\r\n */\r\n this._disposed = false;\r\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n this._disposers = [];\r\n // Nothing to do here\r\n }\r\n /**\r\n * Decorates series with required events and adapters used to hijack its\r\n * data.\r\n */\r\n Plugin.prototype.init = function () {\r\n // Does nothing\r\n // Override it\r\n };\r\n /**\r\n * Returns if this element is already disposed.\r\n *\r\n * @return Is disposed?\r\n */\r\n Plugin.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n /**\r\n * Disposes this object and related stuff.\r\n */\r\n Plugin.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n var a = this._disposers;\r\n this._disposers = null;\r\n while (a.length !== 0) {\r\n var disposer = a.shift();\r\n disposer.dispose();\r\n }\r\n }\r\n };\r\n return Plugin;\r\n}());\r\nexport { Plugin };\r\n//# sourceMappingURL=Plugin.js.map","/**\r\n * AmChartsLogo module.\r\n *\r\n * AmChartsLogo shows amCharts logo for non-commercial users of a library.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Polyspline } from \"./Polyspline\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { DesaturateFilter } from \"../rendering/filters/DesaturateFilter\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IAmChartsLogoEvents} for a list of available events\r\n * @see {@link IAmChartsLogoAdapters} for a list of available Adapters\r\n * @ignore Exclude from docs\r\n */\r\nvar AmChartsLogo = /** @class */ (function (_super) {\r\n __extends(AmChartsLogo, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AmChartsLogo() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"AmChartsLogo\";\r\n _this.valign = \"bottom\";\r\n var d = 0.3;\r\n _this.opacity = 0.3;\r\n _this.defaultState.properties.opacity = 0.4;\r\n _this.url = \"https://www.amcharts.com/\";\r\n _this.urlTarget = \"_blank\";\r\n _this.showSystemTooltip = true;\r\n _this.readerTitle = \"Chart created using amCharts library\";\r\n _this.width = 220 * d;\r\n _this.height = 70 * d;\r\n _this.background.opacity = 0;\r\n var aColor = color(\"#474758\");\r\n if (new InterfaceColorSet().getFor(\"background\").alternative.hex == \"#ffffff\") {\r\n aColor = color(\"#ffffff\");\r\n }\r\n var aGradient = new LinearGradient();\r\n aGradient.addColor(aColor);\r\n aGradient.addColor(aColor, 1, 0.75);\r\n aGradient.addColor(color(\"#3cabff\"), 1, 0.755);\r\n aGradient.rotation = -10;\r\n var aStroke = aGradient;\r\n var m = _this.createChild(Polyspline);\r\n m.shouldClone = false;\r\n m.isMeasured = false;\r\n m.segments = [[{ x: 50 * d, y: 50 * d }, { x: 90 * d, y: 50 * d }, { x: 120 * d, y: 20 * d }, { x: 135 * d, y: 35 * d }, { x: 150 * d, y: 20 * d }, { x: 180 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n m.strokeWidth = 6 * d;\r\n m.tensionX = 0.8;\r\n m.tensionY = 1;\r\n m.stroke = color(\"#3cabff\");\r\n var a = _this.createChild(Polyspline);\r\n a.shouldClone = false;\r\n a.isMeasured = false;\r\n a.segments = [[{ x: 20 * d, y: 50 * d }, { x: 50 * d, y: 50 * d }, { x: 90 * d, y: 12 * d }, { x: 133 * d, y: 50 * d }, { x: 170 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]];\r\n a.strokeWidth = 6 * d;\r\n a.tensionX = 0.75;\r\n a.tensionY = 1;\r\n a.stroke = aStroke;\r\n _this._disposers.push(a);\r\n var desaturateFilter = new DesaturateFilter();\r\n _this.filters.push(desaturateFilter);\r\n var desaturateFilterHover = new DesaturateFilter();\r\n desaturateFilterHover.saturation = 1;\r\n var hoverState = _this.states.create(\"hover\");\r\n hoverState.properties.opacity = 1;\r\n hoverState.filters.push(desaturateFilterHover);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return AmChartsLogo;\r\n}(Container));\r\nexport { AmChartsLogo };\r\n//# sourceMappingURL=AmChartsLogo.js.map","import { __read, __spread } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { system } from \"../System\";\r\nimport { registry } from \"../Registry\";\r\nimport { Container } from \"../Container\";\r\nimport { Component } from \"../Component\";\r\nimport { Paper } from \"../rendering/Paper\";\r\nimport { SVGContainer, svgContainers } from \"../rendering/SVGContainer\";\r\nimport { FocusFilter } from \"../rendering/filters/FocusFilter\";\r\nimport { Preloader } from \"../elements/Preloader\";\r\nimport { AmChartsLogo } from \"../elements/AmChartsLogo\";\r\nimport { Tooltip } from \"../elements/Tooltip\";\r\nimport { Disposer, MultiDisposer } from \"../utils/Disposer\";\r\nimport { percent } from \"./Percent\";\r\nimport { options } from \"../Options\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport * as $dom from \"./DOM\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $log from \"./Log\";\r\n/**\r\n * ============================================================================\r\n * INSTANTIATION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates all HTML and SVG containers needed for the chart instance, as well\r\n * as the new [[Sprite]] (as specified in `classType` parameter).\r\n *\r\n * @param htmlElement A container to creat elements in\r\n * @param classType A class definition of the new element to create\r\n * @return Newly-created Sprite object\r\n */\r\nfunction createChild(htmlElement, classType) {\r\n var htmlContainer = $dom.getElement(htmlElement);\r\n // If there's no container available yet, we create a fake one\r\n var tmpContainer = false;\r\n if (!htmlContainer) {\r\n htmlContainer = document.createElement(\"div\");\r\n htmlContainer.style.width = \"200px\";\r\n htmlContainer.style.height = \"200px\";\r\n htmlContainer.style.top = \"0\";\r\n htmlContainer.style.left = \"0\";\r\n htmlContainer.style.visibility = \"hidden\";\r\n htmlContainer.style.position = \"absolute\";\r\n document.body.appendChild(htmlContainer);\r\n tmpContainer = true;\r\n }\r\n if (htmlContainer) {\r\n htmlContainer.innerHTML = \"\";\r\n //htmlContainer.style.overflow = \"hidden\";\r\n var svgDiv_1 = new SVGContainer(htmlContainer);\r\n var paper = new Paper(svgDiv_1.SVGContainer, \"svg-\" + (svgContainers.length - 1));\r\n // the approach with masks is chosen because overflow:visible is set on SVG element in order tooltips could go outside\r\n // svg area - this is often needed when working with small charts.\r\n // main container which holds content container and tooltips container\r\n var container_1 = new Container();\r\n container_1.htmlContainer = htmlContainer;\r\n container_1.svgContainer = svgDiv_1;\r\n container_1.width = percent(100);\r\n container_1.height = percent(100);\r\n container_1.background.fillOpacity = 0;\r\n container_1.paper = paper;\r\n paper.append(container_1.group);\r\n // Set up moving to proper element container if it's not yet ready at call time\r\n if (tmpContainer) {\r\n $dom.ready(function () {\r\n container_1.moveHtmlContainer(htmlElement);\r\n });\r\n }\r\n // this is set from parent container, but this one doesn't have, so do it manually.\r\n container_1.relativeWidth = 1;\r\n container_1.relativeHeight = 1;\r\n svgDiv_1.container = container_1;\r\n // creating classType instance\r\n var sprite_1 = container_1.createChild(classType);\r\n sprite_1.topParent = container_1;\r\n var uid = sprite_1.uid;\r\n registry.invalidSprites[uid] = [];\r\n registry.invalidDatas[uid] = [];\r\n registry.invalidPositions[uid] = [];\r\n registry.invalidLayouts[uid] = [];\r\n container_1.baseId = uid;\r\n sprite_1.isBaseSprite = true;\r\n sprite_1.focusFilter = new FocusFilter();\r\n registry.baseSprites.push(sprite_1);\r\n registry.baseSpritesByUid[uid] = sprite_1;\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n // this solves issues with display:none, as all children are measured as 0x0\r\n container_1.events.on(\"maxsizechanged\", function (event) {\r\n if (event.previousWidth == 0 || event.previousHeight == 0) {\r\n container_1.deepInvalidate();\r\n }\r\n if (sprite_1.maskRectangle) {\r\n sprite_1.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv_1.width || 0, 0), height: Math.max(svgDiv_1.height || 0, 0) };\r\n }\r\n });\r\n var loopTimer_1 = null;\r\n // Checks to see whether the chart was properly disposed or not\r\n var loop_1 = function () {\r\n if (!sprite_1.isDisposed()) {\r\n if ($dom.getRoot(sprite_1.dom) == null) {\r\n if (options.autoDispose) {\r\n container_1.htmlContainer = undefined;\r\n svgDiv_1.htmlElement = undefined;\r\n sprite_1.dispose();\r\n }\r\n else {\r\n $log.warn(\"Chart was not disposed\", sprite_1.uid);\r\n }\r\n loopTimer_1 = null;\r\n }\r\n else {\r\n loopTimer_1 = window.setTimeout(loop_1, 1000);\r\n }\r\n }\r\n else {\r\n loopTimer_1 = null;\r\n }\r\n };\r\n loop_1();\r\n sprite_1.addDisposer(new Disposer(function () {\r\n if (loopTimer_1 !== null) {\r\n clearTimeout(loopTimer_1);\r\n }\r\n $array.remove(registry.baseSprites, sprite_1);\r\n registry.baseSpritesByUid[sprite_1.uid] = undefined;\r\n }));\r\n // TODO figure out a better way of doing this\r\n sprite_1.addDisposer(container_1);\r\n // tooltip container\r\n var tooltipContainer_1 = container_1.createChild(Container);\r\n tooltipContainer_1.topParent = container_1;\r\n tooltipContainer_1.width = percent(100);\r\n tooltipContainer_1.height = percent(100);\r\n tooltipContainer_1.isMeasured = false;\r\n container_1.tooltipContainer = tooltipContainer_1;\r\n sprite_1.tooltip = new Tooltip();\r\n sprite_1.tooltip.hide(0);\r\n sprite_1.tooltip.setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function () {\r\n $type.getValue(sprite_1.tooltip).setBounds({ x: 0, y: 0, width: tooltipContainer_1.maxWidth, height: tooltipContainer_1.maxHeight });\r\n }, undefined, false);\r\n //@todo: maybe we don't need to create one by default but only on request?\r\n var preloader_1 = new Preloader();\r\n preloader_1.events.on(\"inited\", function () {\r\n preloader_1.__disabled = true;\r\n }, undefined, false);\r\n container_1.preloader = preloader_1;\r\n //if (!options.commercialLicense) {\r\n if (sprite_1 instanceof Container && !sprite_1.hasLicense()) {\r\n var logo_1 = tooltipContainer_1.createChild(AmChartsLogo);\r\n tooltipContainer_1.events.on(\"maxsizechanged\", function (ev) {\r\n if ((tooltipContainer_1.maxWidth <= 100) || (tooltipContainer_1.maxHeight <= 50)) {\r\n logo_1.hide();\r\n }\r\n else if (logo_1.isHidden || logo_1.isHiding) {\r\n logo_1.show();\r\n }\r\n }, undefined, false);\r\n sprite_1.logo = logo_1;\r\n logo_1.align = \"left\";\r\n logo_1.valign = \"bottom\";\r\n }\r\n $utils.used(sprite_1.numberFormatter); // need to create one.\r\n // Set this as an autonomouse instance\r\n // Controls like Preloader, Export will use this.\r\n container_1.isStandaloneInstance = true;\r\n if (options.onlyShowOnViewport) {\r\n if (!$dom.isElementInViewport(htmlContainer, options.viewportTarget)) {\r\n sprite_1.__disabled = true;\r\n sprite_1.tooltipContainer.__disabled = true;\r\n var disposers = [\r\n $dom.addEventListener(window, \"DOMContentLoaded\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"load\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"resize\", function () { viewPortHandler(sprite_1); }),\r\n $dom.addEventListener(window, \"scroll\", function () { viewPortHandler(sprite_1); })\r\n ];\r\n if (options.viewportTarget) {\r\n var targets = $type.isArray(options.viewportTarget) ? options.viewportTarget : options.viewportTarget ? [options.viewportTarget] : [];\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n disposers.push($dom.addEventListener(target, \"resize\", function () { viewPortHandler(sprite_1); }));\r\n disposers.push($dom.addEventListener(target, \"scroll\", function () { viewPortHandler(sprite_1); }));\r\n }\r\n }\r\n var disposer = new MultiDisposer(disposers);\r\n sprite_1.addDisposer(disposer);\r\n sprite_1.vpDisposer = disposer;\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n }\r\n else if (options.queue) {\r\n addToQueue(sprite_1);\r\n }\r\n return sprite_1;\r\n }\r\n else {\r\n system.log(\"html container not found\");\r\n throw new Error(\"html container not found\");\r\n }\r\n}\r\n/**\r\n * Disposes all of the currently active charts.\r\n */\r\nexport function disposeAllCharts() {\r\n while (registry.baseSprites.length !== 0) {\r\n registry.baseSprites.pop().dispose();\r\n }\r\n}\r\nexport function addToQueue(sprite) {\r\n if (registry.queue.indexOf(sprite) == -1) {\r\n sprite.__disabled = true;\r\n sprite.tooltipContainer.__disabled = true;\r\n sprite.events.disableType(\"appeared\");\r\n if (registry.queue.length == 0) {\r\n registry.events.once(\"exitframe\", function () {\r\n queueHandler(sprite);\r\n });\r\n system.requestFrame();\r\n }\r\n sprite.addDisposer(new Disposer(function () {\r\n removeFromQueue(sprite);\r\n }));\r\n registry.queue.push(sprite);\r\n }\r\n}\r\nexport function removeFromQueue(sprite) {\r\n var index = registry.queue.indexOf(sprite);\r\n if (index >= 0) {\r\n registry.queue.splice(registry.queue.indexOf(sprite), 1);\r\n var nextSprite = registry.queue[index];\r\n if (nextSprite) {\r\n queueHandler(nextSprite);\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the chart was not initialized fully due to setting\r\n * of `onlyShowOnViewport`. If it hasn't and is now in the viewport\r\n * the chart will be initialized.\r\n *\r\n * @since 4.9.12\r\n * @param sprite Top-level chart object\r\n */\r\nexport function viewPortHandler(sprite) {\r\n if (sprite.__disabled && $dom.isElementInViewport(sprite.htmlContainer, options.viewportTarget)) {\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n addToQueue(sprite);\r\n }\r\n}\r\nexport function queueHandler(sprite) {\r\n if (sprite && sprite.tooltipContainer) {\r\n sprite.__disabled = false;\r\n sprite.tooltipContainer.__disabled = false;\r\n sprite.events.enableType(\"appeared\");\r\n sprite.dispatch(\"removedfromqueue\");\r\n if (sprite.showOnInit) {\r\n sprite.events.on(\"appeared\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n }\r\n if (sprite.vpDisposer) {\r\n sprite.vpDisposer.dispose();\r\n }\r\n if (sprite instanceof Container) {\r\n sprite.invalidateLabels();\r\n }\r\n if (sprite.tooltipContainer) {\r\n sprite.tooltipContainer.invalidateLayout();\r\n }\r\n if (sprite instanceof Component) {\r\n sprite.invalidateData();\r\n sprite.reinit();\r\n sprite.events.once(\"datavalidated\", function () {\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n else {\r\n removeFromQueue(sprite);\r\n }\r\n });\r\n }\r\n else {\r\n sprite.reinit();\r\n sprite.events.once(\"inited\", function () {\r\n removeFromQueue(sprite);\r\n });\r\n if (sprite.showOnInit) {\r\n sprite.appear();\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * A shortcut to creating a chart instance.\r\n *\r\n * The first argument is either a reference to or an id of a DOM element to be\r\n * used as a container for the chart.\r\n *\r\n * The second argument is the type reference of the chart type. (for plain\r\n * JavaScript users this can also be a string indicating chart type)\r\n *\r\n * ```TypeScript\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n * ```\r\n * ```JavaScript\r\n * // Can pass in chart type reference like this:\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // ... or chart class type as a string:\r\n * var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @param htmlElement Reference or id of the target container element\r\n * @param classType Class type of the target chart type\r\n * @return Chart instance\r\n */\r\nexport function create(htmlElement, classType) {\r\n // This is a nasty hack for the benefit of vanilla JS users, who do not\r\n // enjoy benefits of type-check anyway.\r\n // We're allowing passing in a name of the class rather than type reference\r\n // itself.\r\n var classError;\r\n if ($type.isString(classType)) {\r\n if ($type.hasValue(registry.registeredClasses[classType])) {\r\n classType = registry.registeredClasses[classType];\r\n }\r\n else {\r\n classType = registry.registeredClasses[\"Container\"];\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, classType);\r\n // Error?\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n return chart;\r\n}\r\n/**\r\n * A shortcut to creating a chart from a config object.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * let chart am4core.createFromConfig({ ... }, \"chartdiv\", am4charts.XYChart );\r\n * ```\r\n * ```JavaScript\r\n * var chart am4core.createFromConfig({ ... }, \"chartdiv\", \"XYChart\" );\r\n * ```\r\n *\r\n * If `chartType` parameter is not supplied it must be set in a config object,\r\n * via reference to chart type, e.g.:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * Or via string: (if you are using JavaScript)\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * A `container` can either be a reference to an HTML container to put chart\r\n * in, or it's unique id.\r\n *\r\n * If `container` is not specified, it must be included in the config object:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @param config Config object in property/value pairs\r\n * @param htmlElement Container reference or ID\r\n * @param objectType Chart type\r\n * @return A newly created chart instance\r\n * @todo Throw exception if type is not correct\r\n */\r\nexport function createFromConfig(config, htmlElement, classType) {\r\n // Extract chart type from config if necessary\r\n if (!$type.hasValue(classType)) {\r\n classType = config.type;\r\n delete config.type;\r\n }\r\n // Extract element from config if necessary\r\n if (!$type.hasValue(htmlElement)) {\r\n htmlElement = config.container;\r\n delete config.container;\r\n }\r\n // Check if we need to extract actual type reference\r\n var finalType;\r\n var classError;\r\n if ($type.isString(classType) && $type.hasValue(registry.registeredClasses[classType])) {\r\n finalType = registry.registeredClasses[classType];\r\n }\r\n else if (typeof classType !== \"function\") {\r\n finalType = Container;\r\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n }\r\n else {\r\n finalType = classType;\r\n }\r\n // Create the chart\r\n var chart = createChild(htmlElement, finalType);\r\n // Set config\r\n if (classError) {\r\n chart.raiseCriticalError(classError);\r\n }\r\n else {\r\n chart.config = config;\r\n }\r\n return chart;\r\n}\r\n/**\r\n * Useful in creating real queues form mult-chart creation.\r\n *\r\n * Accepts a reference to a function which crates and returns actual chart\r\n * object.\r\n *\r\n * It returns a `Promise` which you can use to catch chart instance once it's\r\n * created.\r\n *\r\n * ```TypeScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * let chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * let chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * var chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * var chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n * @param callback Callback function that creates chart\r\n * @param scope Scope to call callback in\r\n * @param ...rest Parameters to pass into callback\r\n * @return Promise with chart instance\r\n */\r\nexport function createDeferred(callback, scope) {\r\n var rest = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n rest[_i - 2] = arguments[_i];\r\n }\r\n return new Promise(function (resolve, reject) {\r\n registry.deferred.push({\r\n scope: scope,\r\n callback: callback,\r\n args: rest,\r\n resolve: resolve\r\n });\r\n if (registry.deferred.length == 1) {\r\n processNextDeferred();\r\n }\r\n });\r\n}\r\nfunction processNextDeferred() {\r\n var _a;\r\n var next = registry.deferred[0];\r\n if (next) {\r\n var sprite_2 = (_a = next.callback).call.apply(_a, __spread([next.scope], next.args));\r\n sprite_2.events.on(\"ready\", function () {\r\n next.resolve(sprite_2);\r\n registry.deferred.shift();\r\n if (options.deferredDelay) {\r\n setTimeout(processNextDeferred, options.deferredDelay);\r\n }\r\n else {\r\n processNextDeferred();\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Applies a theme to System, and subsequently all chart instances created\r\n * from that point forward.\r\n *\r\n * amCharts supports multiple themes. Calling `useTheme` multiple times will\r\n * make the System apply multiple themes, rather than overwrite previously\r\n * set one.\r\n *\r\n * This enables combining features from multiple themes on the same chart.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n * ```JavaScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n *\r\n * The above will apply both the Material color and animation options to all\r\n * charts created.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function useTheme(value) {\r\n if (registry.themes.indexOf(value) === -1) {\r\n registry.themes.push(value);\r\n }\r\n}\r\n/**\r\n * Removes a theme from \"active themes\" list, so it won't get applied to any\r\n * charts created subsequently.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function unuseTheme(value) {\r\n $array.remove(registry.themes, value);\r\n}\r\n/**\r\n * Removes all \"active\" themes. Any charts created subsequently will not have\r\n * any theme applied to them.\r\n */\r\nexport function unuseAllThemes() {\r\n registry.themes = [];\r\n}\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @since 4.5.16\r\n * @param license License key\r\n */\r\nexport function addLicense(license) {\r\n options.licenses.push(license);\r\n}\r\n//# sourceMappingURL=Instance.js.map","export * from \"-!../../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=3ef829ab&prod&lang=css\"","/** @ignore */ /** */\r\nimport * as $math from \"./Math\";\r\n/**\r\n * @ignore\r\n */\r\nexport function segmentedLine(display, segments) {\r\n for (let s = 0, len = segments.length; s < len; s++) {\r\n const groups = segments[s];\r\n if (groups.length > 0) {\r\n let firstGroup = groups[0];\r\n if (firstGroup.length > 0) {\r\n let firstPoint = firstGroup[0];\r\n display.moveTo(firstPoint.x, firstPoint.y);\r\n for (let g = 0, len = groups.length; g < len; g++) {\r\n line(display, groups[g]);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function line(display, points) {\r\n for (let p = 0, len = points.length; p < len; p++) {\r\n const point = points[p];\r\n display.lineTo(point.x, point.y);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function moveTo(display, point) {\r\n display.moveTo(point.x, point.y);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function clear(display) {\r\n display.clear();\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function smoothedSegmentedline(display, segments, tensionX, tensionY) {\r\n for (let s = 0, len = segments.length; s < len; s++) {\r\n const groups = segments[s];\r\n if (groups.length > 0) {\r\n let firstGroup = groups[0];\r\n if (firstGroup.length > 0) {\r\n let firstPoint = firstGroup[0];\r\n display.moveTo(firstPoint.x, firstPoint.y);\r\n for (let g = 0, len = groups.length; g < len; g++) {\r\n const points = groups[g];\r\n if (points.length > 0) {\r\n display.lineTo(points[0].x, points[0].y);\r\n }\r\n smoothedLine(display, points, tensionX, tensionY);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function smoothedLine(display, points, tensionX, tensionY) {\r\n for (let i = points.length - 1; i > 0; i--) {\r\n let p0 = points[i];\r\n let p1 = points[i - 1];\r\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\r\n points.splice(i - 1, 1);\r\n }\r\n }\r\n if (points.length < 3 || (tensionX >= 1 && tensionY >= 1)) {\r\n line(display, points);\r\n return;\r\n }\r\n tensionX = 1 - tensionX + 0.00001;\r\n tensionY = 1 - tensionY + 0.00001;\r\n let first = points[0];\r\n let last = points[points.length - 1];\r\n let closed = false;\r\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n closed = true;\r\n }\r\n // Can't moveTo here, as it wont be possible to have fill then.\r\n let path = \"\";\r\n for (let i = 0, len = points.length - 1; i < len; i++) {\r\n let p0 = points[i - 1];\r\n let p1 = points[i];\r\n let p2 = points[i + 1];\r\n let p3 = points[i + 2];\r\n if (i === 0) {\r\n if (closed) {\r\n p0 = points[len - 2];\r\n }\r\n else {\r\n p0 = points[0];\r\n }\r\n }\r\n else if (i == len - 1) {\r\n if (closed) {\r\n p3 = points[1];\r\n }\r\n else {\r\n p3 = p2;\r\n }\r\n }\r\n let controlPointA = $math.getCubicControlPointA(p0, p1, p2, tensionX, tensionY);\r\n let controlPointB = $math.getCubicControlPointB(p1, p2, p3, tensionX, tensionY);\r\n display.bezierCurveTo(controlPointA.x, controlPointA.y, controlPointB.x, controlPointB.y, p2.x, p2.y);\r\n }\r\n return path;\r\n}\r\n//# sourceMappingURL=Draw.js.map","import { Graphics } from \"./Graphics\";\r\nimport * as $draw from \"../util/Draw\";\r\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\r\nexport class Line extends Graphics {\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"points\") || this.isDirty(\"segments\") || this._sizeDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const points = this.get(\"points\");\r\n const segments = this.get(\"segments\");\r\n if (points && points.length > 0) {\r\n let point = points[0];\r\n this._display.moveTo(point.x, point.y);\r\n $draw.segmentedLine(this._display, [[points]]);\r\n }\r\n else if (segments) {\r\n $draw.segmentedLine(this._display, segments);\r\n }\r\n else if (!this.get(\"draw\")) {\r\n let w = this.width();\r\n let h = this.height();\r\n this._display.moveTo(0, 0);\r\n this._display.lineTo(w, h);\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Line, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Line\"\r\n});\r\nObject.defineProperty(Line, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Line.className])\r\n});\r\n//# sourceMappingURL=Line.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:((\"height: \" + _vm.height + \"px\")),attrs:{\"id\":\"chartdiv\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.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/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=template&id=da4b5562\"\nimport script from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nexport * from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nimport style0 from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=da4b5562&prod&lang=css\"\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 null,\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',{ref:\"chartdiv\",staticClass:\"highlightingChart\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./HighlightingChart.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/@vue/cli-plugin-babel/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!./HighlightingChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HighlightingChart.vue?vue&type=template&id=4297340f&scoped=true\"\nimport script from \"./HighlightingChart.vue?vue&type=script&lang=js\"\nexport * from \"./HighlightingChart.vue?vue&type=script&lang=js\"\nimport style0 from \"./HighlightingChart.vue?vue&type=style&index=0&id=4297340f&prod&scoped=true&lang=css\"\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 \"4297340f\",\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',{style:((\"height: \" + _vm.height + \"px\")),attrs:{\"id\":\"chartdiv\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.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/@vue/cli-plugin-babel/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!./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=template&id=3ef829ab\"\nimport script from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nexport * from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=script&lang=js\"\nimport style0 from \"./DirectedTreeMonthlyOccurrence.vue?vue&type=style&index=0&id=3ef829ab&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HighlightingChart.vue?vue&type=style&index=0&id=4297340f&prod&scoped=true&lang=css\"","import { Line } from \"./Line\";\r\n/**\r\n * Draws a tick element (mostly used on axes).\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n */\r\nexport class Tick extends Line {\r\n}\r\nObject.defineProperty(Tick, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Tick\"\r\n});\r\nObject.defineProperty(Tick, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Line.classNames.concat([Tick.className])\r\n});\r\n//# sourceMappingURL=Tick.js.map","import { Series } from \"./Series\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\r\nimport { Template } from \"../../core/util/Template\";\r\nimport { ListTemplate } from \"../../core/util/List\";\r\nimport * as $utils from \"../../core/util/Utils\";\r\n/**\r\n * A universal legend control.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/legend/} for more info\r\n */\r\nexport class Legend extends Series {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * List of all [[Container]] elements for legend items.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"itemContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"]),\r\n background: RoundedRectangle.new(this._root, {\r\n themeTags: $utils.mergeTags(this.itemContainers.template.get(\"themeTags\", []), [\"legend\", \"item\", \"background\"]),\r\n themeTagsSelf: $utils.mergeTags(this.itemContainers.template.get(\"themeTagsSelf\", []), [\"itemcontainer\"])\r\n })\r\n }, [this.itemContainers.template])))\r\n });\r\n /**\r\n * List of legend marker elements.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"markers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => Container._new(this._root, {\r\n themeTags: $utils.mergeTags(this.markers.template.get(\"themeTags\", []), [\"legend\", \"marker\"])\r\n }, [this.markers.template])))\r\n });\r\n /**\r\n * List of legend label elements.\r\n *\r\n * @default new ListTemplate