{"version":3,"sources":["webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Object.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/InterfaceColors.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Color.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ResizeSensor.js","webpack:///./node_modules/@amcharts/amcharts5/locales/en.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Language.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Root.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Component.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Theme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Array.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Order.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/HorizontalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/Pattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Math.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Ease.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ColorSet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DateFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Rectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Sprite.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/PopulateString.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/AnimatedTheme.js","webpack:///./node_modules/@amcharts/amcharts5/themes/Animated.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/EventDispatcher.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/HierarchyDefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/HierarchyNode.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/Hierarchy.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/LinkedHierarchyNode.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/HierarchyLink.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/LinkedHierarchy.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/hierarchy/ForceDirected.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Animation.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Data.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/PicturePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/States.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Entity.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/Renderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Graphics.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Utils.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Layout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/NumberFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Disposer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Text.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Children.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Container.js","webpack:///./node_modules/@amcharts/amcharts5/index.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Timezone.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Registry.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/VerticalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/PointedRectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Label.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Percent.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Matrix.js","webpack:///./node_modules/svg-arc-to-cubic-bezier/modules/index.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/CanvasRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/List.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Template.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Time.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DurationFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Series.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/DefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Type.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Circle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/TextFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tooltip.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/GridLayout.js"],"names":["keys","object","Object","keysOrdered","order","sort","copy","assign","each","f","forEach","key","eachContinue","fn","hasKey","hasOwnProperty","call","InterfaceColors","defineProperty","enumerable","configurable","writable","value","classNames","concat","className","string2hex","string","substr","length","repeat","parseInt","rgba2hex","color","replace","matches","match","push","hex","i","val","toString","input","Color","fromAny","this","_hex","g","alpha","r","b","a","h","s","l","rgb","fromRGB","toCSSHex","fromString","fromCSS","fromHex","Error","lightAlternative","darkAlternative","undefined","diff","from","to","mode","fromHSL","toHSL","percent","_observer","ResizeObserver","entries","entry","_targets","x","target","callback","observe","box","unobserve","_timer","lastTime","loop","currentTime","Date","now","delay","newSize","getBoundingClientRect","width","size","height","requestAnimationFrame","left","right","top","bottom","y","cancelAnimationFrame","observer","makeSensor","element","_sensor","_element","_listener","addTarget","_disposed","removeTarget","dispose","day","res","Entity","setPrivate","en","super","_setDefaults","prompt","locale","rest","_root","getPrivate","translation","translate","len","split","join","localeTarget","translations","setTranslationAny","translateFunc","list","isDefault","rAF","fps","setTimeout","id","settings","isReal","EventDispatcher","new","NumberFormatter","DateFormatter","DurationFormatter","VerticalLayout","HorizontalLayout","GridLayout","resolution","dom","_settings","accessible","_a11yD","useSafeResolution","_renderer","CanvasRenderer","HTMLElement","document","getElementById","rootElements","root","interfaceColors","inner","createElement","style","position","appendChild","tooltipContainerBounds","_tooltipContainerSettings","_inner","_updateComputedStyles","_init","childNodes","_initResizeSensor","resize","_logo","w","offsetWidth","offsetHeight","hide","show","logo","tooltipContainer","children","Container","interactive","interactiveChildren","setStateOnChildren","paddingTop","paddingRight","paddingBottom","paddingLeft","scale","centerY","tooltipText","tooltipX","cursorOverStyle","background","Rectangle","fill","fillOpacity","tooltipY","tooltip","Tooltip","pointerOrientation","label","setAll","fontSize","get","stroke","strokeOpacity","set","events","on","window","open","states","create","m","Graphics","strokeWidth","svgPath","_handleLogo","rect","calculateSize","focusable","setAttribute","tabindex","ariaLabel","role","renderer","_getRealSize","_getCalculatedSize","Math","floor","realWidth","realHeight","rootContainer","visible","_rootContainer","_defaultThemes","DefaultTheme","container","view","htmlElementContainer","_htmlElementContainer","pointerEvents","overflow","readerAlertElement","clip","_readerAlertElement","focusElementContainer","_focusElementContainer","tooltipElementContainer","_tooltipElementContainer","_disposers","ev","eventKey","_isShift","shiftKey","focusedSprite","_focusedSprite","downEvent","getEvent","MouseEvent","dispatch","type","originalEvent","event","point","simulated","dragOffsetX","dragOffsetY","preventDefault","isDragging","_keyboardDragPoint","clientX","clientY","isEnabled","dragPoint","moveEvent","upEvent","group","items","_tabindexes","filter","item","isVisibleDeep","index","indexOf","lastIndex","_startTicker","setThemes","_addTooltip","_hasLicense","_showBranding","_resizeSensorDisposer","autoResize","_render","render","_display","_focusElementDirty","_updateCurrentFocus","_tickers","running","_animations","animation","state","_runAnimation","Animation","Stopped","Playing","_isDirtyAnimation","allParents","_isDirtyParents","_dirtyParents","parent","isDisposed","uid","_prepareChildren","_updateChildren","objects","_dirty","entity","_beforeChanged","_changed","_clearDirty","_isDirty","depths","bounds","_dirtyBounds","depth","_positionHTMLElements","_updateBounds","dirtyPositions","_dirtyPositions","sprite","_updatePosition","_afterChanged","_updateTick","timestamp","_checkComputedStyles","_runTickers","animationDone","_runAnimations","_runDirties","resetImageArray","animationTime","done","_renderFrame","_ticker","_paused","timeout","endTime","performance","_runTicker","once","Disposer","walkChildren","child","markDirtyGlobal","markDirty","markDirtyBounds","_isDisposed","horizontalLayout","verticalLayout","text","innerHTML","themes","_applyThemes","tooltipContainerSettings","isMeasured","layer","layerMargin","_tooltip","_invalidateTabindexes","aindex","bindex","groups","_moveFocusElement","_makeFocusElement","_decorateFocusElement","_positionFocusElement","focusElement","removeAttribute","ariaLive","ariaChecked","ariaCurrent","ariaSelected","ariaOrientation","ariaValueNow","ariaValueMin","ariaValueMax","ariaValueText","ariaControls","isHidden","getAttribute","tabIndex","disposers","_handleFocus","_handleBlur","removeChild","display","next","insertBefore","append","globalBounds","padding","focusPadding","abs","found","_index","focused","_getSpriteByFocusElement","_focusNext","el","direction","focusableElements","Array","querySelectorAll","focus","_getText","tooltipElement","_makeTooltipElement","remove","removePrivate","parentElement","_removeFocusElement","scaleWidth","scaleHeight","disposer","styles","getComputedStyle","fontHash","changed","_fontHash","_invalidateLabelBounds","Text","licenses","debugGhostView","tapToActivate","tapToActivateTimeout","htmlElement","boxSizing","_positionHTMLElement","_htmlEnabledContainers","visualSettings","setting","compositeScale","rotation","compositeRotation","transform","transformOrigin","opacity","compositeOpacity","pos","toGlobal","bbox","lw","lh","cx","cy","ll","lr","lt","lb","Percent","_localBounds","previousBounds","_adjustedLocalBounds","newBounds","getAdjustedBounds","minWidth","minHeight","originX","originY","html","_makeHTMLElement","DataItem","component","dataContext","_checkDirty","markDirtyValues","_addAnimation","disposeDataItem","_dispose","duration","setRaw","showDataItem","hideDataItem","Component","arguments","_dataItems","data","incrementRef","_data","decrementRef","_afterNew","_updateFields","onAll","change","dataItems","_mainDataItems","_markDirtyGroup","_dataChanged","dataItem","_onDataClear","newValue","_makeDataItem","processDataItem","properties","bullets","animate","easing","splice","oldIndex","newIndex","_afterDataChange","valueFields","_valueFields","_valueFieldsF","field","fieldKey","workingKey","fields","_fields","_fieldsF","_dataItem","output","makeDataItem","_duration","_valuesDirty","inited","_dataGrouped","_sizeDirty","Theme","setupDefaultRules","themeClass","_rules","themeTags","rules","tags","template","ruleRaw","array","any","test","map","eachReverse","shiftLeft","last","first","insert","max","min","setIndex","pushAll","removeFirst","move","toIndex","removeIndex","insertIndex","add","unshift","pushOne","ind","toArray","isArray","has","slice","start","end","findIndex","findIndexReverse","find","findReverse","findMap","shuffle","temporaryValue","randomIndex","currentIndex","random","getSortedIndex","ordering","pivot","getFirstSortedIndex","keepIf","keep","compare","compareArray","leftLength","rightLength","compareNumber","availableWidth","innerWidth","totalPercent","isVisible","childWidth","Infinity","maxWidth","privateWidth","_prevSettings","prevX","adjustedLocalBounds","marginLeft","marginRight","Pattern","makeGraphics","_afterNewApplyThemes","_pattern","isDirty","_clear","_checkDirtyFill","repetition","backgroundDisplay","_backgroundDisplay","clear","beginFill","drawRect","endFill","angle","_draw","createPattern","PI","HALFPI","RADIANS","DEGREES","round","precision","rounded","d","pow","ceil","getCubicControlPointA","p0","p1","p2","tensionX","tensionY","getCubicControlPointB","p3","fitToRange","sin","cos","normalizeAngle","getArcBounds","startAngle","endAngle","radius","minX","Number","MAX_VALUE","minY","maxX","maxY","bpoints","getArcPoint","fromAngle","toAngle","pt","arc","inBounds","linear","t","cubic","out","ease","tau","amplitude","period","asin","ColorSet","reset","pass","colors","passOptions","reuse","hsl","hue","saturation","lightness","generateColors","getIndex","saturate","currentStep","_setDefault","source","format","ignoreTimezone","formatted","date","locales","Intl","DateTimeFormat","e","info","parseFormat","timezone","utc","convertLocal","getTime","applyFormat","toUpperCase","fullYear","month","weekday","hours","minutes","seconds","milliseconds","getUTCFullYear","getUTCMonth","getUTCDay","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getFullYear","getMonth","getDay","getDate","getHours","getMinutes","getSeconds","getMilliseconds","parts","_t","year","_getMonth","_getShortMonth","language","_getShortWeekday","_getWeekday","firstDayOfWeek","name","offset","getTimezoneOffset","tz","tzh","tzm","toISOString","toUTCString","chunks","chunk","dateFormat","_months","_shortMonths","_weekdays","_shortWeekdays","reg","parsedIndexes","resValues","indexAdjust","year3","year2","year1","getStringList","monthLong","monthShort","week","yearDay","weekdayLong","weekdayShort","am","hour12Base1","hourBase0","hour12Base0","hourBase1","minute","second","millisecond","millisecondDigits","zone","iso","regex","RegExp","resolveMonth","resolveShortMonth","hour","isAm","ts","resolveTimezoneOffset","UTC","dir","originalOffset","translateAll","setPrivateRaw","isPrivateDirty","SpriteEventDispatcher","_sprite","native","_rendererDisposers","increment","context","shouldClone","_on","rendererEvent","RENDERER_EVENTS","_onRenderer","_dispatchParents","old","dispatchParents","_hasDown","_hasMoved","_makePointerEvent","_getBounds","isType","removeHovering","Sprite","_markDirtyKey","_addPercentagePositionChildren","markDirtyPosition","_markDirtyPrivateKey","_templateField","_removeObjectTemplate","_removeTemplateField","_setObjectTemplate","_applyTemplates","oldDataItem","_processTemplateField","eventType","newDataItem","_setDataItem","_parent","_percentageSizeChildren","_percentagePositionChildren","_addDirtyPosition","centerX","_handleStates","previous","setLayer","markDirtyLayer","tooltipMoveDp","_tooltipMoveDp","tooltipPointerDp","_tooltipPointerDp","isHover","showTooltip","_statesHandled","applyAnimate","markDirtyAccessibility","draggable","_dragDp","dragStart","dragMove","dragStop","cancelTouch","tooltipHTML","showTooltipOn","_tooltipDp","getTooltip","hideTooltip","_ev","toggleKey","_toggleDp","_isDragging","updatePivotPoint","_addPercentageSizeChildren","_prevWidth","_updateSize","wheelable","_registerTabindexOrder","_unregisterTabindexOrder","blur","brightness","contrast","sepia","invert","_focusDp","exportable","_hoverDp","_handleOver","_handleOut","_isDown","_handleUp","_handleDown","inactive","_dragEvent","stopParentDispatch","_dragPoint","lookup","_downPoint","pointerId","_downPoints","downPoint","dragEvent","hypot","getLocalBounds","self","_addDirtyBounds","invalidateBounds","isFocus","_invalidateAccessibility","oldBounds","_fixMinBounds","privateHeight","removeValue","tooltipPosition","tooltipTarget","_setMatrix","_getTooltipPoint","markDirtyText","promise","dx","dy","_x","xx","yy","_y","innerHeight","_removeParent","localBounds","Promise","success","_error","_isShowing","_isHidden","_isHiding","_onShow","animations","_onHide","hovering","maxHeight","_findStaticTemplate","_walkParent","updateChildren","prevParent","numberFormatter","dateFormatter","durationFormatter","toLocal","_getDownPointId","moveValue","populateString","escape","tag","getTagValue","unescape","tagName","exec","prop","dateFields","getDateFormatter","numericFields","getNumberFormatter","durationFields","getDurationFormatter","method","params","matches2","reg2","getTagValueFromObject","getCustomDataValue","customData","current","formatApplied","part","tmp","numberValue","dateValue","durationValue","encodeURIComponent","apply","formatParts","formatterType","rule","interpolationDuration","stateAnimationDuration","animationDuration","_listeners","_killed","_disabled","_iterating","_enabled","killed","amount","listener","_eachListener","hasListenersByType","count","_removeListener","_shouldDispatch","_removeExistingListener","_type","ic","gridLayout","bind","legendLabelText","legendValueText","step","downDepth","initialDepth","singleBranchOnly","maskContent","animationEasing","populateText","oversizedBehavior","minScale","strength","distance","strokeDasharray","layout","fontWeight","upDepth","cornerRadiusBR","cornerRadiusTR","cornerRadiusBL","cornerRadiusTL","cornerRadius","textType","baseRadius","minRadius","maxRadius","initialFrames","centerStrength","manyBodyStrength","velocityDecay","linkWithStrength","showOnFrame","topDepth","orientation","nodePadding","layoutAlgorithm","minWeightRatio","convergenceRatio","maxIterationCount","disabled","series","disableDataItem","enableDataItem","_clickDisposer","selectDataItem","node","sum","eachAfter","that","nodes","pop","n","eachBefore","ancestor","leastCommonAncestor","k","aNodes","ancestors","bNodes","c","leaves","links","reverse","hierarchy","Map","mapChildren","objectChildren","childs","Node","computeHeight","node_copy","copyData","prototype","constructor","path","descendants","Symbol","iterator","Series","addDisposer","List","Template","_tag","Label","labels","childData","make","addTag","nodesContainer","bulletsContainer","_treeData","_makeHierarchyData","_rootNode","_updateValues","_updateVisuals","_zoom","_selectDataItem","_updateNodes","hierarchyNode","_updateNode","_makeBullets","hierarchyChildren","hierarchyChild","_getDataItemById","di","childDataItem","bullet","_handleBullets","patterns","makeNode","_processDataItem","childDataField","d3HierarchyNode","dataValue","valuePercent","valueLow","valueHigh","updateLegendValue","d3HierarchyChild","childrenDataArray","_super","promises","hiddenState","stateAnimationEasing","waitForStop","all","maxDepth","disabledField","skipDisptach","currentDepth","_currentDownDepth","_handleSingle","bulletFunction","_makeBullet","_positionBullet","locationX","locationY","hover","unhover","link","_updateLinks","newBullet","linksContainer","_a","_b","sourceNode","targetNode","x0","y0","x1","y1","moveTo","lineTo","sourceRadius","targetRadius","trueDistance","location","atan2","_new","Circle","circles","outerCircles","linkBullets","circle","outerCircle","_handleRadiusChange","parentDataItem","linkDataItems","updateLinkWith","linkWith","linkWithDataItem","_getPoint","_animatePositions","fillPattern","sourceLinks","lnk","targetLinks","_processLink","_disposeLink","_handleUnlink","linked","_link","_source","_target","d3forceSimulation","_tick","updateNodePositions","alphaDecay","restart","_updateForces","d3ForceNode","_nodes","fx","fy","_nodesDirty","force","collisionForce","linkForce","_links","restartSimulation","pl","d3node","linkDatum","getDistance","getStrength","d3Nodes","d3Node","sourceDataItem","targetDataItem","_updateRadius","valueWorking","d3Link","AnimationState","waitForAnimations","_","range","defaultInterpolate","percentInterpolate","colorInterpolate","interpolate","getInterpolate","ListData","processor","processRow","_onPush","_onInsertIndex","oldValue","_onSetIndex","PicturePattern","_load","canvas","image","_image","patternWidth","patternHeight","fit","centered","src","Image","decode","then","catch","_entity","_userSettings","fallback","seen","defaultState","_eachSetting","States","_states","newState","_applyState","_applyStateAnimated","callbacks","_callbacks","loops","startingTime","_animation","_from","_to","_easing","_loops","_interpolate","_oldTime","_playing","_stopped","_startAnimation","_time","resolve","_reject","stopped","counter","_userProperties","playing","paused","_animatingSettings","_stopAnimation","_run","percentage","_checkEnded","_value","_reset","_set","_animatingPrivateSettings","_stopAnimationPrivate","_setPrivate","Paused","_key","_settingEvents","_privateSettingEvents","getRaw","_sendKeyEvent","_setRaw","stop","_privateSettings","_prevPrivateSettings","_sendPrivateKeyEvent","_setPrivateRaw","options","_animationTime","enableDispose","templates","_createEvents","_internalTemplates","_registerId","_template","shouldApply","_dirtyPrivate","_disposerProperties","_addDirtyEntity","_name","adapters","fold","_removeTemplateProperty","_userPrivateProperties","_removeTemplatePrivateProperty","_findTemplateByKey","_findTemplateByPrivateKey","other","_eachTemplate","_apply","_templateDisposers","privateSettings","_runSetup","setup","_templates","_disposeTemplates","_applyTemplate","_findTemplate","isConnected","defaults","Set","_walkParents","theme","_removeTemplates","allRules","_lookupRules","every","result","prevId","entitiesById","removeDispose","clearTimeout","hasTag","BlendMode","crisp","gradient","gradientTarget","setLineDash","strokeDashoffset","setLineDashOffset","blendMode","NORMAL","draw","fillGradient","strokeGradient","strokePattern","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","shadowOpacity","shadow","stops","colorInherited","opacityInherited","getFill","pattern","lineJoin","lineStyle","endStroke","ready","readyState","removeEventListener","addEventListener","removeElement","parentNode","onZoom","supports","cap","getPointerId","activeElement","body","getRendererEvent","isTouchEvent","Touch","PointerEvent","pointerType","setStyle","property","getStyle","getEventTarget","composedPath","contains","cursor","host","isLocalEvent","setInteractive","getEventKey","keyCode","iOS","navigator","vendor","getSafeResolution","relativeToValue","full","decimalPlaces","number","padString","char","trimLeft","trimRight","trim","truncateTextWithEllipsis","maxLength","breakWords","ellipsis","lastNonAlphanumericIndex","charAt","substring","getFormat","toLowerCase","hints","cleanFormat","stripTags","escapeForRgex","splitString","rtlChar","splitPattern","segments","segment","getYearDay","oneDay","getWeek","_utc","setUTCDate","firstDay","getWeekYear","getMonthWeek","firstWeek","currentWeek","getDayFromWeek","setUTCFullYear","get12Hours","base","getTimeZone","long","savings","d1","toLocaleString","timeZone","d2","timeZoneName","wotz","wtz","utcDate","tzDate","capitalizeFirst","hslToRgb","hue2rgb","p","q","rgbToHsl","lighten","getLightnessStep","brighten","isLight","alternativeColor","light","dark","mergeTags","tags1","tags2","sameBounds","eachChildren","Layout","bns","sns","bs","suffix","NumberFormat","details","positive","negative","zero","mod","decimals","active","thousandSeparator","translateEmpty","decimalSeparator","_part","parsed","partFormat","mods","modSpacing","thousands","passive","interval","prefix","applyPrefix","ol","parseFloat","toPrecision","exp","toExponential","toFixed","ints","ip","intsr","separator","decs","prefixes","newvalue","applied","DisposerClass","ArrayDisposer","MultiDisposer","CounterDisposer","_counter","makeTextStyle","makeText","textStyle","updateTooltip","_removeTooltipElement","wordWrapWidth","ignoreFormatting","_textStyles","styleName","_container","_events","oldValues","_onRemoved","_onInserted","_setParent","childrenDisplay","_childrenDisplay","addChild","addChildAt","values","makeContainer","allChildren","_removeHTMLContent","_prevHeight","contentMask","_contentMask","mask","updateBackground","verticalScrollbar","_contentHeight","bg","_contentWidth","pWidth","pHeight","horizontal","vertical","childBounds","childX","childY","cl","cr","ct","cb","updateContainer","_addDirtyParent","_setHTMLContent","ch","contentH","_updateHTMLContent","startGrip","endGrip","_vsbd0","wheelEvent","shiftY","deltaY","_vsbd1","updated","parseDate","formatToParts","toUTCDate","Timezone","hour12","fractionalSecondDigits","_dtf","offsetUTC","userOffset","setUTCMinutes","newUserOffset","dtf","Registry","registry","availableHeight","childHeight","prevY","marginTop","marginBottom","PointedRectangle","bwh","xtl","ytl","xtr","ytr","xbr","ybr","xbl","ybl","stemX","arcTo","stemY","closePath","_text","_makeText","_textKeys","propValue","onPrivate","_setMaxDimentions","_maybeUpdateHTMLColor","textAlign","textVisible","_getAccessibleText","p100","p50","isPercent","Matrix","tx","ty","pivotX","pivotY","origin","matrix","a1","b1","c1","tx1","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","err","TypeError","TAU","mapToEllipse","_ref","rx","ry","cosphi","sinphi","centerx","centery","xp","yp","approxUnitArc","ang1","ang2","tan","x2","y2","vectorAngle","ux","uy","vx","vy","sign","dot","acos","getArcCenter","px","py","largeArcFlag","sweepFlag","pxp","pyp","rxsq","rysq","pxpsq","pypsq","radicant","sqrt","centerxp","centeryp","vx1","vy1","vx2","vy2","arcToBezier","_ref2","_ref2$xAxisRotation","xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","lambda","_getArcCenter","_getArcCenter2","ratio","curve","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","checkArgs","actual","expected","checkMinArgs","checkEvenArgs","splitArcFlags","args","flag","assertBinary","distributeId","eachTargets","hitTarget","onPointerEvent","touches","changedTouches","isTainted","getContext","willReadFrequently","drawImage","getImageData","console","warn","clearCanvas","CanvasPivot","status","_layer","_removeObject","getLayer","dirty","defaultLayer","margin","_ghostLayer","setMargin","layers","registerChildLayer","resizeLayer","resizeGhost","_bounds","_colorId","paintId","_forceInteractive","_isInteractive","_matrix","applyInverse","_uMatrix","setTransform","bn","_addBounds","getLocalMatrix","_addEvent","_localMatrix","copyFrom","prepend","_transformMargin","_transform","_omitTainted","subStatus","ghostLayer","ghostContext","save","_transformLayer","_runPath","globalAlpha","compoundAlpha","_isInteractiveMask","restore","tainted","_hovering","_dragging","some","_touchActive","shouldCancelTouch","_children","_childLayers","deep","setPoint","Op","_context","_forceColor","forceColor","colorize","BeginPath","beginPath","BeginFill","fillStyle","EndFill","clearShadow","EndStroke","LineStyle","strokeStyle","lineWidth","LineDash","dash","LineDashOffset","dashOffset","lineDashOffset","DrawRect","DrawCircle","DrawEllipse","radiusX","radiusY","ellipse","anticlockwise","arcBounds","ArcTo","LineTo","MoveTo","ClosePath","BezierCurveTo","cpX","cpY","cpX2","cpY2","toX","toY","bezierCurveTo","QuadraticCurveTo","quadraticCurveTo","Shadow","offsetX","offsetY","GraphicsImage","_operations","op","_fillAlpha","_pushOp","toCSS","_hasShadows","_strokeAlpha","cpx","cpy","qcpx","qcpy","SEGMENTS_REGEXP","ARGS_REGEXP","relative","layerDirty","globalCompositeOperation","_getColorId","pathGhost","colorizeGhost","addBounds","_textInfo","textBaseline","ignoreGhost","ignoreFontWeight","fontStyle","_getFontStyle","font","_shared","style2","fontVariant","fontFamily","_measure","_prerender","line","textChunks","fillText","textDecoration","thickness","metrics","_measureText","actualBoundingBoxLeft","actualBoundingBoxRight","TextFormatter","getTextStyle","rtl","truncate","wrap","_ignoreFontWeight","refText","lines","currentStyle","styleRestored","lineInfo","ascent","actualBoundingBoxAscent","actualBoundingBoxDescent","currentFormat","currentFill","currentChunkWidth","currentVerticalAlign","currentDecoration","skipFurtherText","firstTextChunk","leftoverChunks","verticalAlign","chunkWidth","ellipsisMetrics","ellipsisWidth","excessWidth","_truncateText","tmpText","leftBoundMod","rightBoundMod","boundsMod","chunkHeight","lineHeight","currentChunkOffset","baselineRatio","_fitRatio","_originalScale","maxW","maxH","fallbackBreakWords","measureText","fakeMetrics","div","innerText","visibility","fontBoundingBoxAscent","fontBoundingBoxDescent","_renderCircular","deltaAngle","inward","inside","align","kerning","clockwise","shouldReverse","_textReversed","maxAngle","midAngle","textHeight","lineStartAngle","rotate","angleShift","charWidth","_measureCircular","totalWidth","chars","CanvasImage","_imageMask","naturalWidth","naturalHeight","_getMask","imageSmoothingEnabled","fillRect","originalPoint","identifier","_patternCanvas","devicePixelRatio","_layerDom","exportableView","_touchActiveTimeout","_delayTouchDeactivate","prevent","obj","imageArray","createLinearGradient","radius1","radius2","createRadialGradient","graphics","_patternContext","clearRect","renderDetached","_calculatedWidth","_calculatedHeight","calculatedWidth","calculatedHeight","_realWidth","_realHeight","CanvasLayer","existingLayer","getLayerByOrder","createDetachedLayer","layerIndex","_dirtyLayers","_lastPointerMoveEvent","_dispatchGlobalMousemove","_colorMap","DOMRect","adjustPoint","widthScale","heightScale","_adjustBoundingBox","pixel","colorId","hit","getImageArray","dispatching","cleanup","disposed","interactionsEnabled","_withEvents","dispatched","originalTarget","button","_getHitTarget","dragged","_mousedown","_dispatchEvent","delete","_replacedCursorStyle","_dispatchEventAll","clickevent","timer","_makeSharedEvent","_onPointerEvent","mouseup","_dispatchGlobalMouseup","pointercancel","mousedown","_dispatchMousedown","mousemove","_dispatchDragMove","_dispatchDragEnd","_dispatchDoubleClick","_dispatchWheel","_initEvent","canvasWidth","canvasHeight","maxScale","maintainPixelRatio","canvases","forceRender","needRerender","exportableContext","extraX","extraY","clientWidth","clientHeight","domWidth","domHeight","_resolution","_width","_height","checkBounds","initial","_values","value_a","value_b","_onRemoveIndex","_onMoveIndex","newArray","_onClear","ListAutoDispose","autoDispose","ListTemplate","disposeSettings","TemplateState","_stateChanged","TemplateStates","TemplateAdapters","_entities","_checkDisposed","_setTemplateProperty","_setTemplatePrivateProperty","_applyStateByKey","sleep","ms","timeUnitDurations","getDuration","unit","firstDateOfWeek","firstDate","timeZoneOffset","difference","unitCount","setTime","setUTCHours","setUTCSeconds","setUTCMilliseconds","setUTCMonth","wday","weekDay","newTimeZoneOffset","isNaN","tzoffset","parsedDate","offsetDif","newTzoffset","newDiff","dmillisecond","dsecond","dminute","dhour","dday","dweek","dmonth","dyear","asecond","aminute","ahour","aday","aweek","amonth","ayear","baseUnit","dirs","absolute","_unitAliases","tstamp","toTimeStamp","_toTimeUnit","digits","unitValue","_getUnitValue","code","maxValue","maxUnit","getValueUnit","currentUnit","_getUnitValues","num","timeUnit","_shouldMakeBullet","_makeBulletReal","_aggregatesCalculated","_selectionAggregatesCalculated","startIndex","endIndex","baseValueSeries","calculateAggregates","_dataProcessed","_calculateAggregates","_psi","_pei","markerRectangle","legendDataItem","updateLegendMarker","absSum","low","high","close","average","changePercent","changePrevious","changePreviousPercent","changeSelection","changeSelectionPercent","openKey","adjustedStartIndex","_getBase","minValue","dataField","neutral","customFunction","propertyValue","logarithmic","log","LOG10E","_hideBullets","_positionBullets","markDirtySize","_bullet","chart","realDuration","valueLabel","txt","setColor","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonDisabled","primaryButtonTextDisabled","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","grid","alternativeBackground","alternativeText","interpolationEasing","pinchZoom","maxZoomLevel","minZoomLevel","zoomStep","maxPanOut","gap","colorOpacity","checkered","horizontalGap","verticalGap","density","minOpacity","maxOpacity","fillField","strokeField","nameField","clickTarget","stepCount","editOn","multiLine","pointerBaseWidth","pointerLength","shiftRadius","dRadius","dInnerRadius","getFillFromSprite","getStrokeFromSprite","autoTextColor","forceInactive","labelText","spikes","innerRadius","rotationStep","getType","toNumber","isNumber","converted","isString","toDate","isDate","numberToString","exponent","zeros","isObject","PLACEHOLDER","PLACEHOLDER2","drawCircle","quotedBlocks","noFormatting","chunks2","i2","chunk2","cleanUp","isImage","_setDefaultFn","_label","_updateBackground","_updateTextColor","_htmlContentHovered","_handleReaderAnnouncement","_tooltips","readerAlert","getAccessibleText","labelHTML","labelAriaLabel","updateBackgroundColor","keephover","_keepHoverDp","outEvent","_fillDp","_strokeDp","_labelDp","alternative","cw","parentW","parentH","_w","_h","pointTo","bgStrokeSizeY","bgStrokeSizeX","pointerX","pointerY","boundsW","boundsH","_fx","_fy","_setRawDefault","minCellWidth","maxCellWidth","columnCount","columnWidths","getColumnWidths","column","maxColumnHeight"],"mappings":"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","file":"js/chunk-0dcfee8c.67e3f306.js","sourcesContent":["import * as $array from \"./Array\";\r\nexport function keys(object) {\r\n return Object.keys(object);\r\n}\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered(object, order) {\r\n return keys(object).sort(order);\r\n}\r\nexport function copy(object) {\r\n return Object.assign({}, object);\r\n}\r\nexport function each(object, f) {\r\n keys(object).forEach((key) => {\r\n f(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(object, fn) {\r\n for (let key in object) {\r\n if (hasKey(object, key)) {\r\n if (!fn(key, object[key])) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered(object, fn, ord) {\r\n $array.each(keysOrdered(object, ord), (key) => {\r\n fn(key, object[key]);\r\n });\r\n}\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey(object, key) {\r\n return {}.hasOwnProperty.call(object, key);\r\n}\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source, target) {\r\n each(source, (key, value) => {\r\n // only if value is set\r\n //if ($type.hasValue(value) && !($type.hasValue((target)[key]))) {\r\n if (value != null && target[key] == null) {\r\n target[key] = value;\r\n }\r\n });\r\n return target;\r\n}\r\n//# sourceMappingURL=Object.js.map","import { Entity } from \"./Entity\";\r\n/**\r\n * Presets for common UI elements.\r\n */\r\nexport class InterfaceColors extends Entity {\r\n}\r\nObject.defineProperty(InterfaceColors, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"InterfaceColors\"\r\n});\r\nObject.defineProperty(InterfaceColors, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([InterfaceColors.className])\r\n});\r\n//# sourceMappingURL=InterfaceColors.js.map","import { range } from \"./Animation\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * @ignore\r\n */\r\nfunction string2hex(string) {\r\n //string = cssColorNames[string.toLowerCase()] || string;\r\n if (string[0] === \"#\") {\r\n string = string.substr(1);\r\n }\r\n if (string.length == 3) {\r\n string = string[0].repeat(2) + string[1].repeat(2) + string[2].repeat(2);\r\n }\r\n return parseInt(string, 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function rgba2hex(color) {\r\n color = color.replace(/[ ]/g, \"\");\r\n // Init\r\n let matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n // Try rgb() format\r\n if (matches) {\r\n matches.push(\"1\");\r\n }\r\n else {\r\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n if (!matches) {\r\n return 0x000000;\r\n }\r\n }\r\n let hex = \"\";\r\n for (let i = 1; i <= 3; i++) {\r\n let val = parseInt(matches[i]).toString(16);\r\n if (val.length == 1) {\r\n val = \"0\" + val;\r\n }\r\n hex += val;\r\n }\r\n return string2hex(hex);\r\n}\r\n/**\r\n * Returns a new [[Color]] object base on input.\r\n *\r\n * Accepts parameters in CSS hex or rgb/rtba strings, or hex numbers.\r\n *\r\n * * `\"#f00\"`\r\n * * `\"#ff0000\"`\r\n * * `\"rgb(255, 0, 0)\"`\r\n * * `\"rgba(255, 0, 0, 1)\"`\r\n * * `0xff0000`\r\n *\r\n * @param input Input color\r\n * @return Color\r\n */\r\nexport function color(input) {\r\n return Color.fromAny(input);\r\n}\r\n/**\r\n * Wherever color needs to be specified in amCharts 5, `Color` object needs to\r\n * be used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/} for more info\r\n * @important\r\n */\r\nexport class Color {\r\n constructor(hex) {\r\n Object.defineProperty(this, \"_hex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._hex = hex | 0;\r\n }\r\n /**\r\n * Color numeric value.\r\n */\r\n get hex() {\r\n return this._hex;\r\n }\r\n /**\r\n * Value of color's R channel.\r\n * @return R value\r\n */\r\n get r() {\r\n return this._hex >>> 16;\r\n }\r\n /**\r\n * Value of color's G channel.\r\n * @return G value\r\n */\r\n get g() {\r\n return (this._hex >> 8) & 0xFF;\r\n }\r\n /**\r\n * Value of color's B channel.\r\n * @return B value\r\n */\r\n get b() {\r\n return this._hex & 0xFF;\r\n }\r\n /**\r\n * Returns color CSS representation in form of `rgba(r, g, b, a)` string.\r\n *\r\n * @param alpha Opacity\r\n * @return CSS string\r\n */\r\n toCSS(alpha = 1) {\r\n return \"rgba(\" + this.r + \", \" + this.g + \", \" + this.b + \", \" + alpha + \")\";\r\n }\r\n /**\r\n * Returns color CSS representation in form of `#rgb` string.\r\n *\r\n * @return CSS string\r\n */\r\n toCSSHex() {\r\n return \"#\" + $utils.padString(this.r.toString(16), 2) + $utils.padString(this.g.toString(16), 2) + $utils.padString(this.b.toString(16), 2);\r\n }\r\n /**\r\n * Returns color's HSL info.\r\n * @param alpha Opacity\r\n * @return HSL info\r\n */\r\n toHSL(alpha = 1) {\r\n return $utils.rgbToHsl({\r\n r: this.r,\r\n g: this.g,\r\n b: this.b,\r\n a: alpha\r\n });\r\n }\r\n /**\r\n * Converts HSL values into a new [[Color]] object.\r\n *\r\n * @param h H value\r\n * @param s S value\r\n * @param l L value\r\n * @return Color object\r\n */\r\n static fromHSL(h, s, l) {\r\n const rgb = $utils.hslToRgb({\r\n h: h,\r\n s: s,\r\n l: l\r\n });\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n toString() {\r\n return this.toCSSHex();\r\n }\r\n /**\r\n * Converts hex number into a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n *\r\n * @param hex Hex color\r\n * @return Color\r\n */\r\n static fromHex(hex) {\r\n return new Color(hex);\r\n }\r\n /**\r\n * Converts RGB values to a new [[Color]] object.\r\n *\r\n * @param r R value\r\n * @param g G value\r\n * @param b B value\r\n * @return Color\r\n */\r\n static fromRGB(r, g, b) {\r\n return new Color((b | 0) + (g << 8) + (r << 16));\r\n }\r\n /**\r\n * Converts RGB string to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n *\r\n * @param s RGB string\r\n * @return Color\r\n */\r\n static fromString(s) {\r\n return new Color(string2hex(s));\r\n }\r\n /**\r\n * Converts CSS rgba() syntax to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n *\r\n * @param {string} s [description]\r\n * @return {Color} [description]\r\n */\r\n static fromCSS(s) {\r\n return new Color(rgba2hex(s));\r\n }\r\n /**\r\n * Convert to color from virtually anything.\r\n *\r\n * Will throw an exception if unable to resolve the color.\r\n *\r\n * @param s Source\r\n * @return Color\r\n */\r\n static fromAny(s) {\r\n if ($type.isString(s)) {\r\n if (s[0] == \"#\") {\r\n return Color.fromString(s);\r\n }\r\n else if (s.substr(0, 3) == \"rgb\") {\r\n return Color.fromCSS(s);\r\n }\r\n }\r\n else if ($type.isNumber(s)) {\r\n return Color.fromHex(s);\r\n }\r\n else if (s instanceof Color) {\r\n return Color.fromHex(s.hex);\r\n }\r\n throw new Error(\"Unknown color syntax: \" + s);\r\n }\r\n /**\r\n * Returns a new [[Color]] object based on either `lightAlternative` or\r\n * `darkAlternative` depending on which one is more contrasting with\r\n * the `color`.\r\n *\r\n * @param color Reference color\r\n * @param lightAlternative Light color\r\n * @param darkAlternative Dark color\r\n * @return Alternative color\r\n */\r\n static alternative(color, lightAlternative, darkAlternative) {\r\n const rgb = $utils.alternativeColor({ r: color.r, g: color.g, b: color.b }, lightAlternative ? { r: lightAlternative.r, g: lightAlternative.g, b: lightAlternative.b } : undefined, darkAlternative ? { r: darkAlternative.r, g: darkAlternative.g, b: darkAlternative.b } : undefined);\r\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns an intermediate Color between two reference colors depending on\r\n * the progress (`diff`) between the two.\r\n *\r\n * @param diff Progress\r\n * @param from Source color\r\n * @param to Target color\r\n * @param mode Interpolation mode\r\n * @return Color\r\n */\r\n static interpolate(diff, from, to, mode = \"rgb\") {\r\n if (mode == \"hsl\") {\r\n const fromHSL = from.toHSL();\r\n const toHSL = to.toHSL();\r\n return Color.fromHSL(range(diff, fromHSL.h, toHSL.h), range(diff, fromHSL.s, toHSL.s), range(diff, fromHSL.l, toHSL.l));\r\n }\r\n else {\r\n return Color.fromRGB(range(diff, from.r, to.r), range(diff, from.g, to.g), range(diff, from.b, to.b));\r\n }\r\n }\r\n /**\r\n * Returns a new [[Color]] lightened by `percent` value.\r\n *\r\n * Use negative value to darken the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static lighten(color, percent) {\r\n const rgb = $utils.lighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] brightened by `percent` value.\r\n *\r\n * Use negative value to dim the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static brighten(color, percent) {\r\n const rgb = $utils.brighten({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n /**\r\n * Returns a new [[Color]] saturated by `percent` value.\r\n *\r\n * Value range is between `0` (fully desaturated), to `1` (full color).\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\r\n static saturate(color, percent) {\r\n const rgb = $utils.saturate({ r: color.r, g: color.g, b: color.b }, percent);\r\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\r\n }\r\n}\r\n//# sourceMappingURL=Color.js.map","/** @ignore */ /** */\r\nimport * as $array from \"./Array\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * @ignore\r\n */\r\nclass Native {\r\n constructor() {\r\n Object.defineProperty(this, \"_observer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n this._observer = new ResizeObserver((entries) => {\r\n $array.each(entries, (entry) => {\r\n $array.each(this._targets, (x) => {\r\n if (x.target === entry.target) {\r\n x.callback();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n addTarget(target, callback) {\r\n this._observer.observe(target, { box: \"border-box\" });\r\n this._targets.push({ target, callback });\r\n }\r\n removeTarget(target) {\r\n this._observer.unobserve(target);\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nclass Raf {\r\n constructor() {\r\n Object.defineProperty(this, \"_timer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_targets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n }\r\n addTarget(target, callback) {\r\n if (this._timer === null) {\r\n let lastTime = null;\r\n const loop = () => {\r\n const currentTime = Date.now();\r\n if (lastTime === null || currentTime > (lastTime + Raf.delay)) {\r\n lastTime = currentTime;\r\n $array.each(this._targets, (x) => {\r\n let newSize = x.target.getBoundingClientRect();\r\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\r\n x.size = newSize;\r\n x.callback();\r\n }\r\n });\r\n }\r\n if (this._targets.length === 0) {\r\n this._timer = null;\r\n }\r\n else {\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n };\r\n this._timer = requestAnimationFrame(loop);\r\n }\r\n // We start off with fake bounds so that sensor always kicks in\r\n let size = { width: 0, height: 0, left: 0, right: 0, top: 0, bottom: 0, x: 0, y: 0 };\r\n this._targets.push({ target, callback, size });\r\n }\r\n removeTarget(target) {\r\n $array.keepIf(this._targets, (x) => {\r\n return x.target !== target;\r\n });\r\n if (this._targets.length === 0) {\r\n if (this._timer !== null) {\r\n cancelAnimationFrame(this._timer);\r\n this._timer = null;\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(Raf, \"delay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 200\r\n});\r\n/**\r\n * @ignore\r\n */\r\nlet observer = null;\r\n/**\r\n * @ignore\r\n */\r\nfunction makeSensor() {\r\n if (observer === null) {\r\n if (typeof ResizeObserver !== \"undefined\") {\r\n observer = new Native();\r\n }\r\n else {\r\n observer = new Raf();\r\n }\r\n }\r\n return observer;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport class ResizeSensor {\r\n constructor(element, callback) {\r\n Object.defineProperty(this, \"_sensor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_element\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_listener\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n this._sensor = makeSensor();\r\n this._element = element;\r\n // This is needed because we need to know when the window is zoomed\r\n this._listener = $utils.onZoom(callback);\r\n this._sensor.addTarget(element, callback);\r\n }\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n this._sensor.removeTarget(this._element);\r\n this._listener.dispose();\r\n }\r\n }\r\n get sensor() {\r\n return this._sensor;\r\n }\r\n}\r\n//# sourceMappingURL=ResizeSensor.js.map","/**\r\n * amCharts 5 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v5/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\r\nexport default {\r\n \"firstDayOfWeek\": 1,\r\n // Number formatting options.\r\n // \r\n // Please check with the local standards which separator is accepted to be\r\n // used for separating decimals, and which for thousands.\r\n \"_decimalSeparator\": \".\",\r\n \"_thousandSeparator\": \",\",\r\n // Position of the percent sign in numbers\r\n \"_percentPrefix\": null,\r\n \"_percentSuffix\": \"%\",\r\n // Suffixes for numbers\r\n // When formatting numbers, big or small numers might be reformatted to\r\n // shorter version, by applying a suffix.\r\n // \r\n // For example, 1000000 might become \"1m\".\r\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\r\n // \r\n // This section defines such suffixes for all such cases.\r\n \"_big_number_suffix_3\": \"k\",\r\n \"_big_number_suffix_6\": \"M\",\r\n \"_big_number_suffix_9\": \"G\",\r\n \"_big_number_suffix_12\": \"T\",\r\n \"_big_number_suffix_15\": \"P\",\r\n \"_big_number_suffix_18\": \"E\",\r\n \"_big_number_suffix_21\": \"Z\",\r\n \"_big_number_suffix_24\": \"Y\",\r\n \"_small_number_suffix_3\": \"m\",\r\n \"_small_number_suffix_6\": \"μ\",\r\n \"_small_number_suffix_9\": \"n\",\r\n \"_small_number_suffix_12\": \"p\",\r\n \"_small_number_suffix_15\": \"f\",\r\n \"_small_number_suffix_18\": \"a\",\r\n \"_small_number_suffix_21\": \"z\",\r\n \"_small_number_suffix_24\": \"y\",\r\n \"_byte_suffix_B\": \"B\",\r\n \"_byte_suffix_KB\": \"KB\",\r\n \"_byte_suffix_MB\": \"MB\",\r\n \"_byte_suffix_GB\": \"GB\",\r\n \"_byte_suffix_TB\": \"TB\",\r\n \"_byte_suffix_PB\": \"PB\",\r\n // Default date formats for various periods.\r\n // \r\n // This should reflect official or de facto formatting universally accepted\r\n // in the country translation is being made for\r\n // Available format codes here:\r\n // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#Format_codes\r\n // \r\n // This will be used when formatting date/time for particular granularity,\r\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\r\n // \r\n // \"date\" is used as in default date format when showing standalone dates.\r\n \"_date\": \"yyyy-MM-dd\",\r\n \"_date_millisecond\": \"mm:ss SSS\",\r\n \"_date_millisecond_full\": \"HH:mm:ss SSS\",\r\n \"_date_second\": \"HH:mm:ss\",\r\n \"_date_second_full\": \"HH:mm:ss\",\r\n \"_date_minute\": \"HH:mm\",\r\n \"_date_minute_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_hour\": \"HH:mm\",\r\n \"_date_hour_full\": \"HH:mm - MMM dd, yyyy\",\r\n \"_date_day\": \"MMM dd\",\r\n \"_date_day_full\": \"MMM dd, yyyy\",\r\n \"_date_week\": \"ww\",\r\n \"_date_week_full\": \"MMM dd, yyyy\",\r\n \"_date_month\": \"MMM\",\r\n \"_date_month_full\": \"MMM, yyyy\",\r\n \"_date_year\": \"yyyy\",\r\n // Default duration formats for various base units.\r\n // \r\n // This will be used by DurationFormatter to format numeric values into\r\n // duration.\r\n // \r\n // Notice how each duration unit comes in several versions. This is to ensure\r\n // that each base unit is shown correctly.\r\n // \r\n // For example, if we have baseUnit set to \"second\", meaning our duration is\r\n // in seconds.\r\n // \r\n // If we pass in `50` to formatter, it will know that we have just 50 seconds\r\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\r\n // and the formatted result will be in like `\"50\"`.\r\n // \r\n // If we pass in `70`, which is more than a minute, the formatter will switch\r\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\r\n // text.\r\n // \r\n // Available codes here:\r\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\r\n \"_duration_millisecond\": \"SSS\",\r\n \"_duration_millisecond_second\": \"ss.SSS\",\r\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\r\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\r\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\r\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\r\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\r\n \"_duration_second\": \"ss\",\r\n \"_duration_second_minute\": \"mm:ss\",\r\n \"_duration_second_hour\": \"hh:mm:ss\",\r\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\r\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\r\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\r\n \"_duration_minute\": \"mm\",\r\n \"_duration_minute_hour\": \"hh:mm\",\r\n \"_duration_minute_day\": \"d'd' hh:mm\",\r\n \"_duration_minute_week\": \"d'd' hh:mm\",\r\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\r\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\r\n \"_duration_hour\": \"hh'h'\",\r\n \"_duration_hour_day\": \"d'd' hh'h'\",\r\n \"_duration_hour_week\": \"d'd' hh'h'\",\r\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\r\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\r\n \"_duration_day\": \"d'd'\",\r\n \"_duration_day_week\": \"d'd'\",\r\n \"_duration_day_month\": \"M'm' dd'd'\",\r\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\r\n \"_duration_week\": \"w'w'\",\r\n \"_duration_week_month\": \"w'w'\",\r\n \"_duration_week_year\": \"w'w'\",\r\n \"_duration_month\": \"M'm'\",\r\n \"_duration_month_year\": \"y'y' MM'm'\",\r\n \"_duration_year\": \"y'y'\",\r\n // Era translations\r\n \"_era_ad\": \"AD\",\r\n \"_era_bc\": \"BC\",\r\n // Day part, used in 12-hour formats, e.g. 5 P.M.\r\n // Please note that these come in 3 variants:\r\n // * one letter (e.g. \"A\")\r\n // * two letters (e.g. \"AM\")\r\n // * two letters with dots (e.g. \"A.M.\")\r\n // \r\n // All three need to to be translated even if they are all the same. Some\r\n // users might use one, some the other.\r\n \"A\": \"\",\r\n \"P\": \"\",\r\n \"AM\": \"\",\r\n \"PM\": \"\",\r\n \"A.M.\": \"\",\r\n \"P.M.\": \"\",\r\n // Date-related stuff.\r\n // \r\n // When translating months, if there's a difference, use the form which is\r\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\r\n // \r\n // Note that May is listed twice. This is because in English May is the same\r\n // in both long and short forms, while in other languages it may not be the\r\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\r\n // version.\r\n // \r\n // Should month names and weekdays be capitalized or not?\r\n // \r\n // Rule of thumb is this: if the names should always be capitalized,\r\n // regardless of name position within date (\"January\", \"21st January 2018\",\r\n // etc.) use capitalized names. Otherwise enter all lowercase.\r\n // \r\n // The date formatter will automatically capitalize names if they are the\r\n // first (or only) word in resulting date.\r\n \"January\": \"\",\r\n \"February\": \"\",\r\n \"March\": \"\",\r\n \"April\": \"\",\r\n \"May\": \"\",\r\n \"June\": \"\",\r\n \"July\": \"\",\r\n \"August\": \"\",\r\n \"September\": \"\",\r\n \"October\": \"\",\r\n \"November\": \"\",\r\n \"December\": \"\",\r\n \"Jan\": \"\",\r\n \"Feb\": \"\",\r\n \"Mar\": \"\",\r\n \"Apr\": \"\",\r\n \"May(short)\": \"May\",\r\n \"Jun\": \"\",\r\n \"Jul\": \"\",\r\n \"Aug\": \"\",\r\n \"Sep\": \"\",\r\n \"Oct\": \"\",\r\n \"Nov\": \"\",\r\n \"Dec\": \"\",\r\n // Weekdays.\r\n \"Sunday\": \"\",\r\n \"Monday\": \"\",\r\n \"Tuesday\": \"\",\r\n \"Wednesday\": \"\",\r\n \"Thursday\": \"\",\r\n \"Friday\": \"\",\r\n \"Saturday\": \"\",\r\n \"Sun\": \"\",\r\n \"Mon\": \"\",\r\n \"Tue\": \"\",\r\n \"Wed\": \"\",\r\n \"Thu\": \"\",\r\n \"Fri\": \"\",\r\n \"Sat\": \"\",\r\n // Date ordinal function.\r\n // \r\n // This is used when adding number ordinal when formatting days in dates.\r\n // \r\n // E.g. \"January 1st\", \"February 2nd\".\r\n // \r\n // The function accepts day number, and returns a string to be added to the\r\n // day, like in default English translation, if we pass in 2, we will receive\r\n // \"nd\" back.\r\n \"_dateOrd\": function (day) {\r\n let res = \"th\";\r\n if ((day < 11) || (day > 13)) {\r\n switch (day % 10) {\r\n case 1:\r\n res = \"st\";\r\n break;\r\n case 2:\r\n res = \"nd\";\r\n break;\r\n case 3:\r\n res = \"rd\";\r\n break;\r\n }\r\n }\r\n return res;\r\n },\r\n // Various chart controls.\r\n // Shown as a tooltip on zoom out button.\r\n \"Zoom Out\": \"\",\r\n // Timeline buttons\r\n \"Play\": \"\",\r\n \"Stop\": \"\",\r\n // Chart's Legend screen reader title.\r\n \"Legend\": \"\",\r\n // Legend's item screen reader indicator.\r\n \"Press ENTER to toggle\": \"\",\r\n // Shown when the chart is busy loading something.\r\n \"Loading\": \"\",\r\n // Shown as the first button in the breadcrumb navigation, e.g.:\r\n // Home > First level > ...\r\n \"Home\": \"\",\r\n // Chart types.\r\n // Those are used as default screen reader titles for the main chart element\r\n // unless developer has set some more descriptive title.\r\n \"Chart\": \"\",\r\n \"Serial chart\": \"\",\r\n \"X/Y chart\": \"\",\r\n \"Pie chart\": \"\",\r\n \"Gauge chart\": \"\",\r\n \"Radar chart\": \"\",\r\n \"Sankey diagram\": \"\",\r\n \"Flow diagram\": \"\",\r\n \"Chord diagram\": \"\",\r\n \"TreeMap chart\": \"\",\r\n \"Force directed tree\": \"\",\r\n \"Sliced chart\": \"\",\r\n // Series types.\r\n // Used to name series by type for screen readers if they do not have their\r\n // name set.\r\n \"Series\": \"\",\r\n \"Candlestick Series\": \"\",\r\n \"OHLC Series\": \"\",\r\n \"Column Series\": \"\",\r\n \"Line Series\": \"\",\r\n \"Pie Slice Series\": \"\",\r\n \"Funnel Series\": \"\",\r\n \"Pyramid Series\": \"\",\r\n \"X/Y Series\": \"\",\r\n // Map-related stuff.\r\n \"Map\": \"\",\r\n \"Press ENTER to zoom in\": \"\",\r\n \"Press ENTER to zoom out\": \"\",\r\n \"Use arrow keys to zoom in and out\": \"\",\r\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\r\n // Export-related stuff.\r\n // These prompts are used in Export menu labels.\r\n // \r\n // \"Export\" is the top-level menu item.\r\n // \r\n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\r\n // operation.\r\n // \r\n // Leave actual format untranslated, unless you absolutely know that they\r\n // would convey more meaning in some other way.\r\n \"Export\": \"\",\r\n \"Image\": \"\",\r\n \"Data\": \"\",\r\n \"Print\": \"\",\r\n \"Press ENTER or use arrow keys to navigate\": \"\",\r\n \"Press ENTER to open\": \"\",\r\n \"Press ENTER to print.\": \"\",\r\n \"Press ENTER to export as %1.\": \"\",\r\n \"(Press ESC to close this message)\": \"\",\r\n \"Image Export Complete\": \"\",\r\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\r\n \"Saved from\": \"\",\r\n \"PNG\": \"\",\r\n \"JPG\": \"\",\r\n \"GIF\": \"\",\r\n \"SVG\": \"\",\r\n \"PDF\": \"\",\r\n \"JSON\": \"\",\r\n \"CSV\": \"\",\r\n \"XLSX\": \"\",\r\n \"HTML\": \"\",\r\n // Scrollbar-related stuff.\r\n // \r\n // Scrollbar is a control which can zoom and pan the axes on the chart.\r\n // \r\n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\r\n // upper and lower (for vertical one).\r\n // \r\n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\r\n // \r\n // The final section is used to indicate the current range of selection.\r\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\r\n \"Use left and right arrows to move selection\": \"\",\r\n \"Use left and right arrows to move left selection\": \"\",\r\n \"Use left and right arrows to move right selection\": \"\",\r\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\r\n \"Use up and down arrows to move selection\": \"\",\r\n \"Use up and down arrows to move lower selection\": \"\",\r\n \"Use up and down arrows to move upper selection\": \"\",\r\n \"From %1 to %2\": \"\",\r\n \"From %1\": \"\",\r\n \"To %1\": \"\",\r\n // Data loader-related.\r\n \"No parser available for file: %1\": \"\",\r\n \"Error parsing file: %1\": \"\",\r\n \"Unable to load file: %1\": \"\",\r\n \"Invalid date\": \"\",\r\n // Common actions\r\n \"Close\": \"\",\r\n \"Minimize\": \"\"\r\n};\r\n//# sourceMappingURL=en.js.map","import { Entity } from \"./Entity\";\r\nimport * as $array from \"./Array\";\r\nimport * as $object from \"./Object\";\r\nimport en from \"../../../locales/en\";\r\n;\r\n/**\r\n * Add localization functionality.\r\n */\r\nexport class Language extends Entity {\r\n _setDefaults() {\r\n this.setPrivate(\"defaultLocale\", en);\r\n super._setDefaults();\r\n }\r\n /**\r\n * Returns a prompt translation.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translate(prompt, locale, ...rest) {\r\n // Get langauge\r\n if (!locale) {\r\n locale = this._root.locale || this.getPrivate(\"defaultLocale\");\r\n }\r\n // Init translation\r\n let translation = prompt;\r\n let value = locale[prompt];\r\n // Try to look for the translation\r\n if (value === null) {\r\n translation = \"\";\r\n }\r\n else if (value != null) {\r\n // It might be an empty string\r\n if (value) {\r\n translation = value;\r\n }\r\n }\r\n else if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n // Try to look in default language\r\n return this.translate(prompt, this.getPrivate(\"defaultLocale\"), ...rest);\r\n }\r\n // Replace %1, %2, etc params\r\n if (rest.length) {\r\n for (let len = rest.length, i = 0; i < len; ++i) {\r\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n }\r\n }\r\n // Return the translation\r\n return translation;\r\n }\r\n /**\r\n * Returns a prompt translation, including custom prompts.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\r\n translateAny(prompt, locale, ...rest) {\r\n return this.translate(prompt, locale, ...rest);\r\n }\r\n /**\r\n * Add a custom prompt to locale.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param prompt Source prompt\r\n * @param translation Tanslation\r\n * @param locale Target locale\r\n */\r\n setTranslationAny(prompt, translation, locale) {\r\n const localeTarget = locale || this._root.locale;\r\n localeTarget[prompt] = translation;\r\n }\r\n /**\r\n * Add a batch of custom prompts.\r\n *\r\n * @since 5.3.3\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param translations Translations\r\n * @param locale Target locale\r\n */\r\n setTranslationsAny(translations, locale) {\r\n $object.each(translations, (key, val) => {\r\n this.setTranslationAny(key, val, locale);\r\n });\r\n }\r\n translateEmpty(prompt, locale, ...rest) {\r\n let translation = this.translate(prompt, locale, ...rest);\r\n return translation == prompt ? \"\" : translation;\r\n }\r\n translateFunc(prompt, locale) {\r\n if (this._root.locale[prompt]) {\r\n return this._root.locale[prompt];\r\n }\r\n // Try to look in default language\r\n if (locale !== this.getPrivate(\"defaultLocale\")) {\r\n return this.translateFunc(prompt, this.getPrivate(\"defaultLocale\"));\r\n }\r\n // Fail - return empty function\r\n return () => {\r\n return \"\";\r\n };\r\n }\r\n /**\r\n * Translates a btach of prompts.\r\n *\r\n * @param list Array of prompts to translate\r\n * @param locale Target locale\r\n * @return Array of translations\r\n */\r\n translateAll(list, locale) {\r\n // Translate all items in the list\r\n if (!this.isDefault()) {\r\n return $array.map(list, (x) => this.translate(x, locale));\r\n }\r\n else {\r\n return list;\r\n }\r\n }\r\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\r\n isDefault() {\r\n return this.getPrivate(\"defaultLocale\") === this._root.locale;\r\n }\r\n}\r\n//# sourceMappingURL=Language.js.map","import { AnimationState } from \"./util/Animation\";\r\nimport { Container } from \"./render/Container\";\r\nimport { Text } from \"./render/Text\";\r\nimport { HorizontalLayout } from \"./render/HorizontalLayout\";\r\nimport { VerticalLayout } from \"./render/VerticalLayout\";\r\nimport { GridLayout } from \"./render/GridLayout\";\r\nimport { Disposer } from \"./util/Disposer\";\r\nimport { ResizeSensor } from \"./util/ResizeSensor\";\r\nimport { InterfaceColors } from \"./util/InterfaceColors\";\r\nimport { Graphics } from \"./render/Graphics\";\r\nimport { Rectangle } from \"./render/Rectangle\";\r\nimport { Tooltip } from \"./render/Tooltip\";\r\nimport { NumberFormatter } from \"./util/NumberFormatter\";\r\nimport { DateFormatter } from \"./util/DateFormatter\";\r\nimport { DurationFormatter } from \"./util/DurationFormatter\";\r\nimport { Language } from \"./util/Language\";\r\nimport { EventDispatcher } from \"./util/EventDispatcher\";\r\nimport { DefaultTheme } from \"../themes/DefaultTheme\";\r\nimport { CanvasRenderer } from \"./render/backend/CanvasRenderer\";\r\nimport { p100, percent, isPercent, Percent } from \"./util/Percent\";\r\nimport { color } from \"./util/Color\";\r\nimport { populateString } from \"./util/PopulateString\";\r\nimport { registry } from \"./Registry\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\nimport * as $object from \"./util/Object\";\r\nimport * as $utils from \"./util/Utils\";\r\nimport * as $type from \"./util/Type\";\r\nimport en from \"../../locales/en\";\r\nfunction rAF(fps, callback) {\r\n if (fps == null) {\r\n requestAnimationFrame(callback);\r\n }\r\n else {\r\n setTimeout(() => {\r\n requestAnimationFrame(callback);\r\n }, 1000 / fps);\r\n }\r\n}\r\n// TODO implement Disposer\r\n/**\r\n * Root element of the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#Root_element} for more info\r\n */\r\nexport class Root {\r\n constructor(id, settings = {}, isReal) {\r\n /**\r\n * A reference to original chart container (div element).\r\n */\r\n Object.defineProperty(this, \"dom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_inner\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_settings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDirtyAnimation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dirtyPositions\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_ticker\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_tickers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_updateTick\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n /**\r\n * Root's event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\n Object.defineProperty(this, \"events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new EventDispatcher()\r\n });\r\n /**\r\n * @ignore\r\n * @todo needs description\r\n */\r\n Object.defineProperty(this, \"animationTime\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(this, \"_animations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rootContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Main content container.\r\n */\r\n Object.defineProperty(this, \"container\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A [[Container]] used to display tooltips in.\r\n */\r\n Object.defineProperty(this, \"tooltipContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipContainerSettings\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltip\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // Locale-related\r\n /**\r\n * @ignore\r\n */\r\n Object.defineProperty(this, \"language\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Language.new(this, {})\r\n });\r\n /**\r\n * Locale used by the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/}\r\n */\r\n Object.defineProperty(this, \"locale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: en\r\n });\r\n // Date-time related\r\n /**\r\n * Use UTC when formatting date/time.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#utc-and-time-zones} for more info\r\n */\r\n Object.defineProperty(this, \"utc\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * NOTE: Using time zone feature may noticeable affect performance of the\r\n * chart, especially with large data sets, since every single date will need\r\n * to be recalculated.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#time-zone} for more info\r\n * @since 5.1.0\r\n */\r\n Object.defineProperty(this, \"timezone\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * The maximum FPS that the Root will run at.\r\n *\r\n * If `undefined` it will run at the highest FPS.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Performance} for more info\r\n */\r\n Object.defineProperty(this, \"fps\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Number formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n */\r\n Object.defineProperty(this, \"numberFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: NumberFormatter.new(this, {})\r\n });\r\n /**\r\n * Date/time formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"dateFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DateFormatter.new(this, {})\r\n });\r\n /**\r\n * Duration formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\r\n Object.defineProperty(this, \"durationFormatter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: DurationFormatter.new(this, {})\r\n });\r\n // Accessibility\r\n /**\r\n * Global tab index for using for the whole chart\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n */\r\n Object.defineProperty(this, \"tabindex\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n //@todo maybe make this better\r\n Object.defineProperty(this, \"_tabindexes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_a11yD\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_focusElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusedSprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isShift\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_keyboardDragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_readerAlertElement\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_logo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDiv\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Used for dynamically-created CSS and JavaScript with strict source policies.\r\n */\r\n Object.defineProperty(this, \"nonce\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * Special color set to be used for various controls.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors} for more info\r\n */\r\n Object.defineProperty(this, \"interfaceColors\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * An instance of vertical layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"verticalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: VerticalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of horizontal layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default HorizontalLayout.new()\r\n */\r\n Object.defineProperty(this, \"horizontalLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: HorizontalLayout.new(this, {})\r\n });\r\n /**\r\n * An instance of grid layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\r\n Object.defineProperty(this, \"gridLayout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: GridLayout.new(this, {})\r\n });\r\n Object.defineProperty(this, \"_paused\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates whether chart should resized automatically when parent container\r\n * width and/or height changes.\r\n *\r\n * If disabled (`autoResize = false`) you can make the chart resize manually\r\n * by calling root element's `resize()` method.\r\n */\r\n Object.defineProperty(this, \"autoResize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"_fontHash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"\"\r\n });\r\n Object.defineProperty(this, \"_isDisposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_disposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_resizeSensorDisposer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltips\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_htmlElementContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_htmlEnabledContainers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n this._settings = settings;\r\n if (settings.accessible == false) {\r\n this._a11yD = true;\r\n }\r\n if (settings.useSafeResolution == null) {\r\n settings.useSafeResolution = true;\r\n }\r\n let resolution;\r\n if (settings.useSafeResolution) {\r\n resolution = $utils.getSafeResolution();\r\n }\r\n this._renderer = new CanvasRenderer(resolution);\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n $array.each(registry.rootElements, (root) => {\r\n if (root.dom === dom) {\r\n throw new Error(\"You cannot have multiple Roots on the same DOM node\");\r\n }\r\n });\r\n this.interfaceColors = InterfaceColors.new(this, {});\r\n if (dom === null) {\r\n throw new Error(\"Could not find HTML element with id `\" + id + \"`\");\r\n }\r\n this.dom = dom;\r\n let inner = document.createElement(\"div\");\r\n inner.style.position = \"relative\";\r\n inner.style.width = \"100%\";\r\n inner.style.height = \"100%\";\r\n dom.appendChild(inner);\r\n const tooltipContainerBounds = settings.tooltipContainerBounds;\r\n if (tooltipContainerBounds) {\r\n this._tooltipContainerSettings = tooltipContainerBounds;\r\n }\r\n this._inner = inner;\r\n this._updateComputedStyles();\r\n registry.rootElements.push(this);\r\n }\r\n static new(id, settings) {\r\n const root = new Root(id, settings, true);\r\n root._init();\r\n return root;\r\n }\r\n moveDOM(id) {\r\n let dom;\r\n if (id instanceof HTMLElement) {\r\n dom = id;\r\n }\r\n else {\r\n dom = document.getElementById(id);\r\n }\r\n if (dom) {\r\n while (this.dom.childNodes.length > 0) {\r\n dom.appendChild(this.dom.childNodes[0]);\r\n }\r\n this.dom = dom;\r\n this._initResizeSensor();\r\n this.resize();\r\n }\r\n }\r\n _handleLogo() {\r\n if (this._logo) {\r\n const w = this.dom.offsetWidth;\r\n const h = this.dom.offsetHeight;\r\n if ((w <= 150) || (h <= 60)) {\r\n this._logo.hide();\r\n }\r\n else {\r\n this._logo.show();\r\n }\r\n }\r\n }\r\n _showBranding() {\r\n if (!this._logo) {\r\n const logo = this.tooltipContainer.children.push(Container.new(this, {\r\n interactive: true,\r\n interactiveChildren: false,\r\n position: \"absolute\",\r\n setStateOnChildren: true,\r\n paddingTop: 9,\r\n paddingRight: 9,\r\n paddingBottom: 9,\r\n paddingLeft: 9,\r\n scale: .6,\r\n y: percent(100),\r\n centerY: p100,\r\n tooltipText: \"Created using amCharts 5\",\r\n tooltipX: p100,\r\n cursorOverStyle: \"pointer\",\r\n background: Rectangle.new(this, {\r\n fill: color(0x474758),\r\n fillOpacity: 0,\r\n tooltipY: 5\r\n })\r\n }));\r\n const tooltip = Tooltip.new(this, {\r\n pointerOrientation: \"horizontal\",\r\n paddingTop: 4,\r\n paddingRight: 7,\r\n paddingBottom: 4,\r\n paddingLeft: 7\r\n });\r\n tooltip.label.setAll({\r\n fontSize: 12\r\n });\r\n tooltip.get(\"background\").setAll({\r\n fill: this.interfaceColors.get(\"background\"),\r\n stroke: this.interfaceColors.get(\"grid\"),\r\n strokeOpacity: 0.3\r\n });\r\n logo.set(\"tooltip\", tooltip);\r\n logo.events.on(\"click\", () => {\r\n window.open(\"https://www.amcharts.com/\", \"_blank\");\r\n });\r\n logo.states.create(\"hover\", {});\r\n const m = logo.children.push(Graphics.new(this, {\r\n stroke: color(0xcccccc),\r\n strokeWidth: 3,\r\n svgPath: \"M5 25 L13 25h13.6c3.4 0 6 0 10.3-4.3s5.2-12 8.6-12c3.4 0 4.3 8.6 7.7 8.6M83.4 25H79.8c-3.4 0-6 0-10.3-4.3s-5.2-12-8.6-12-4.3 8.6-7.7 8.6\"\r\n }));\r\n m.states.create(\"hover\", { stroke: color(0x3CABFF) });\r\n const a = logo.children.push(Graphics.new(this, {\r\n stroke: color(0x888888),\r\n strokeWidth: 3,\r\n svgPath: \"M83.4 25h-31C37 25 39.5 4.4 28.4 4.4S18.9 24.2 4.3 25H0\"\r\n }));\r\n a.states.create(\"hover\", { stroke: color(0x474758) });\r\n //logo.set(\"tooltip\", this._tooltip);\r\n //logo.setPrivate(\"tooltipTarget\", logo.get(\"background\"));\r\n this._logo = logo;\r\n this._handleLogo();\r\n }\r\n }\r\n _getRealSize() {\r\n return this.dom.getBoundingClientRect();\r\n }\r\n _getCalculatedSize(rect) {\r\n if (this._settings.calculateSize) {\r\n return this._settings.calculateSize(rect);\r\n }\r\n else {\r\n return {\r\n width: rect.width,\r\n height: rect.height,\r\n };\r\n }\r\n }\r\n _init() {\r\n const settings = this._settings;\r\n if (settings.accessible !== false) {\r\n if (settings.focusable) {\r\n this._inner.setAttribute(\"focusable\", \"true\");\r\n this._inner.setAttribute(\"tabindex\", this.tabindex + \"\");\r\n }\r\n if (settings.ariaLabel) {\r\n this._inner.setAttribute(\"aria-label\", settings.ariaLabel);\r\n }\r\n if (settings.role) {\r\n this._inner.setAttribute(\"role\", settings.role);\r\n }\r\n }\r\n const renderer = this._renderer;\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const width = Math.floor(size.width);\r\n const height = Math.floor(size.height);\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const rootContainer = Container.new(this, {\r\n visible: true,\r\n width: width,\r\n height: height,\r\n });\r\n this._rootContainer = rootContainer;\r\n this._rootContainer._defaultThemes.push(DefaultTheme.new(this));\r\n const container = rootContainer.children.push(Container.new(this, { visible: true, width: p100, height: p100 }));\r\n this.container = container;\r\n renderer.resize(realWidth, realHeight, width, height);\r\n //@todo: better appendChild - refer\r\n this._inner.appendChild(renderer.view);\r\n // TODO: TMP TMP TMP for testing only, remove\r\n //renderer.debugGhostView = true;\r\n this._initResizeSensor();\r\n // HTML content holder\r\n const htmlElementContainer = document.createElement(\"div\");\r\n this._htmlElementContainer = htmlElementContainer;\r\n htmlElementContainer.className = \"am5-html-container\";\r\n htmlElementContainer.style.position = \"absolute\";\r\n htmlElementContainer.style.pointerEvents = \"none\";\r\n if (!this._tooltipContainerSettings) {\r\n htmlElementContainer.style.overflow = \"hidden\";\r\n }\r\n this._inner.appendChild(htmlElementContainer);\r\n if (this._a11yD !== true) {\r\n // Create element which is used to make announcements to screen reader\r\n const readerAlertElement = document.createElement(\"div\");\r\n readerAlertElement.className = \"am5-reader-container\";\r\n readerAlertElement.setAttribute(\"role\", \"alert\");\r\n // readerAlertElement.style.zIndex = \"-100000\";\r\n // readerAlertElement.style.opacity = \"0\";\r\n // readerAlertElement.style.top = \"0\";\r\n readerAlertElement.style.position = \"absolute\";\r\n readerAlertElement.style.width = \"1px\";\r\n readerAlertElement.style.height = \"1px\";\r\n readerAlertElement.style.overflow = \"hidden\";\r\n readerAlertElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n this._readerAlertElement = readerAlertElement;\r\n this._inner.appendChild(this._readerAlertElement);\r\n const focusElementContainer = document.createElement(\"div\");\r\n focusElementContainer.className = \"am5-focus-container\";\r\n focusElementContainer.style.position = \"absolute\";\r\n focusElementContainer.style.pointerEvents = \"none\";\r\n focusElementContainer.style.top = \"0px\";\r\n focusElementContainer.style.left = \"0px\";\r\n focusElementContainer.style.overflow = \"hidden\";\r\n focusElementContainer.style.width = width + \"px\";\r\n focusElementContainer.style.height = height + \"px\";\r\n focusElementContainer.setAttribute(\"role\", \"graphics-document\");\r\n $utils.setInteractive(focusElementContainer, false);\r\n this._focusElementContainer = focusElementContainer;\r\n this._inner.appendChild(this._focusElementContainer);\r\n const tooltipElementContainer = document.createElement(\"div\");\r\n this._tooltipElementContainer = tooltipElementContainer;\r\n tooltipElementContainer.className = \"am5-tooltip-container\";\r\n this._inner.appendChild(tooltipElementContainer);\r\n // Add keyboard events for accessibility, e.g. simulating drag with arrow\r\n // keys and click with ENTER\r\n if ($utils.supports(\"keyboardevents\")) {\r\n this._disposers.push($utils.addEventListener(window, \"keydown\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = true;\r\n }\r\n else if (eventKey == \"Tab\") {\r\n this._isShift = ev.shiftKey;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(window, \"keyup\", (ev) => {\r\n const eventKey = $utils.getEventKey(ev);\r\n if (eventKey == \"Shift\") {\r\n this._isShift = false;\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"click\", () => {\r\n // Some screen readers convert ENTER (and some SPACE) press whil on\r\n // focused element to a \"click\" event, preventing actual \"keydown\"\r\n // event from firing. We're using this \"click\" event to still\r\n // generate internal click events.\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n const downEvent = renderer.getEvent(new MouseEvent(\"click\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keydown\", (ev) => {\r\n const focusedSprite = this._focusedSprite;\r\n if (focusedSprite) {\r\n if (ev.key == \"Escape\") {\r\n // ESC pressed - lose current focus\r\n $utils.blur();\r\n this._focusedSprite = undefined;\r\n }\r\n let dragOffsetX = 0;\r\n let dragOffsetY = 0;\r\n // TODO: figure out if using bogus MouseEvent is fine, or it will\r\n // fail on some platforms\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"Enter\":\r\n case \" \":\r\n if (eventKey == \" \" && focusedSprite.get(\"role\") != \"checkbox\") {\r\n return;\r\n }\r\n ev.preventDefault();\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mouse\"));\r\n focusedSprite.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n return;\r\n case \"ArrowLeft\":\r\n dragOffsetX = -6;\r\n break;\r\n case \"ArrowRight\":\r\n dragOffsetX = 6;\r\n break;\r\n case \"ArrowUp\":\r\n dragOffsetY = -6;\r\n break;\r\n case \"ArrowDown\":\r\n dragOffsetY = 6;\r\n break;\r\n default:\r\n return;\r\n }\r\n if (dragOffsetX != 0 || dragOffsetY != 0) {\r\n ev.preventDefault();\r\n if (!focusedSprite.isDragging()) {\r\n // Start dragging\r\n this._keyboardDragPoint = {\r\n x: 0,\r\n y: 0\r\n };\r\n const downEvent = renderer.getEvent(new MouseEvent(\"mousedown\", {\r\n clientX: 0,\r\n clientY: 0\r\n }));\r\n downEvent.point = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (focusedSprite.events.isEnabled(\"pointerdown\")) {\r\n focusedSprite.events.dispatch(\"pointerdown\", {\r\n type: \"pointerdown\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n else {\r\n // Move focus marker\r\n //this._positionFocusElement(focusedSprite);\r\n }\r\n // Move incrementally\r\n const dragPoint = this._keyboardDragPoint;\r\n dragPoint.x += dragOffsetX;\r\n dragPoint.y += dragOffsetY;\r\n const moveEvent = renderer.getEvent(new MouseEvent(\"mousemove\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }), false);\r\n if (focusedSprite.events.isEnabled(\"globalpointermove\")) {\r\n focusedSprite.events.dispatch(\"globalpointermove\", {\r\n type: \"globalpointermove\",\r\n originalEvent: moveEvent.event,\r\n point: moveEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n }\r\n }\r\n }));\r\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keyup\", (ev) => {\r\n if (this._focusedSprite) {\r\n const focusedSprite = this._focusedSprite;\r\n const eventKey = $utils.getEventKey(ev);\r\n switch (eventKey) {\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n case \"ArrowTop\":\r\n case \"ArrowDown\":\r\n if (focusedSprite.isDragging()) {\r\n // Simulate drag stop\r\n const dragPoint = this._keyboardDragPoint;\r\n const upEvent = renderer.getEvent(new MouseEvent(\"mouseup\", {\r\n clientX: dragPoint.x,\r\n clientY: dragPoint.y\r\n }));\r\n if (focusedSprite.events.isEnabled(\"globalpointerup\")) {\r\n focusedSprite.events.dispatch(\"globalpointerup\", {\r\n type: \"globalpointerup\",\r\n originalEvent: upEvent.event,\r\n point: upEvent.point,\r\n simulated: true,\r\n target: focusedSprite\r\n });\r\n }\r\n //this._positionFocusElement(focusedSprite);\r\n this._keyboardDragPoint = undefined;\r\n // @todo dispatch mouseup event instead of calling dragStop?\r\n // this._dispatchEvent(\"globalpointerup\", target, upEvent);\r\n return;\r\n }\r\n else if (focusedSprite.get(\"focusableGroup\")) {\r\n // Find next item in focusable group\r\n const group = focusedSprite.get(\"focusableGroup\");\r\n const items = this._tabindexes.filter((item) => {\r\n return item.get(\"focusableGroup\") == group && item.getPrivate(\"focusable\") !== false && item.isVisibleDeep() ? true : false;\r\n });\r\n let index = items.indexOf(focusedSprite);\r\n const lastIndex = items.length - 1;\r\n index += (eventKey == \"ArrowRight\" || eventKey == \"ArrowDown\") ? 1 : -1;\r\n if (index < 0) {\r\n index = lastIndex;\r\n }\r\n else if (index > lastIndex) {\r\n index = 0;\r\n }\r\n $utils.focus(items[index].getPrivate(\"focusElement\").dom);\r\n }\r\n break;\r\n }\r\n }\r\n }));\r\n }\r\n }\r\n this._startTicker();\r\n this.setThemes([]);\r\n this._addTooltip();\r\n if (!this._hasLicense()) {\r\n this._showBranding();\r\n }\r\n }\r\n _initResizeSensor() {\r\n if (this._resizeSensorDisposer) {\r\n this._resizeSensorDisposer.dispose();\r\n }\r\n this._resizeSensorDisposer = new ResizeSensor(this.dom, () => {\r\n if (this.autoResize) {\r\n this.resize();\r\n }\r\n });\r\n this._disposers.push(this._resizeSensorDisposer);\r\n }\r\n /**\r\n * If automatic resizing of char is disabled (`root.autoResize = false`), it\r\n * can be resized manually by calling this method.\r\n */\r\n resize() {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const w = Math.floor(size.width);\r\n const h = Math.floor(size.height);\r\n if (w > 0 && h > 0) {\r\n const realWidth = Math.floor(rect.width);\r\n const realHeight = Math.floor(rect.height);\r\n const htmlElementContainer = this._htmlElementContainer;\r\n htmlElementContainer.style.width = w + \"px\";\r\n htmlElementContainer.style.height = h + \"px\";\r\n if (this._a11yD !== true) {\r\n const focusElementContainer = this._focusElementContainer;\r\n focusElementContainer.style.width = w + \"px\";\r\n focusElementContainer.style.height = h + \"px\";\r\n }\r\n this._renderer.resize(realWidth, realHeight, w, h);\r\n const rootContainer = this._rootContainer;\r\n rootContainer.setPrivate(\"width\", w);\r\n rootContainer.setPrivate(\"height\", h);\r\n this._render();\r\n this._handleLogo();\r\n }\r\n }\r\n _render() {\r\n this._renderer.render(this._rootContainer._display);\r\n if (this._focusElementDirty) {\r\n this._updateCurrentFocus();\r\n this._focusElementDirty = false;\r\n }\r\n }\r\n _runTickers(currentTime) {\r\n $array.each(this._tickers, (f) => {\r\n f(currentTime);\r\n });\r\n }\r\n _runAnimations(currentTime) {\r\n let running = 0;\r\n $array.keepIf(this._animations, (animation) => {\r\n const state = animation._runAnimation(currentTime);\r\n if (state === AnimationState.Stopped) {\r\n return false;\r\n }\r\n else if (state === AnimationState.Playing) {\r\n ++running;\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n this._isDirtyAnimation = false;\r\n return running === 0;\r\n }\r\n _runDirties() {\r\n //console.log(\"tick **************************************************************\");\r\n let allParents = {};\r\n while (this._isDirtyParents) {\r\n // This must be before calling _prepareChildren\r\n this._isDirtyParents = false;\r\n $object.keys(this._dirtyParents).forEach((key) => {\r\n const parent = this._dirtyParents[key];\r\n delete this._dirtyParents[key];\r\n if (!parent.isDisposed()) {\r\n allParents[parent.uid] = parent;\r\n parent._prepareChildren();\r\n }\r\n });\r\n }\r\n $object.keys(allParents).forEach((key) => {\r\n allParents[key]._updateChildren();\r\n });\r\n const objects = [];\r\n //\t\tconsole.log(\"_beforeChanged\")\r\n $object.keys(this._dirty).forEach((key) => {\r\n const entity = this._dirty[key];\r\n if (entity.isDisposed()) {\r\n delete this._dirty[entity.uid];\r\n }\r\n else {\r\n objects.push(entity);\r\n entity._beforeChanged();\r\n }\r\n });\r\n //\t\tconsole.log(\"_changed\")\r\n objects.forEach((entity) => {\r\n entity._changed();\r\n delete this._dirty[entity.uid];\r\n entity._clearDirty();\r\n });\r\n this._isDirty = false;\r\n const depths = {};\r\n const bounds = [];\r\n $object.keys(this._dirtyBounds).forEach((key) => {\r\n const entity = this._dirtyBounds[key];\r\n delete this._dirtyBounds[key];\r\n if (!entity.isDisposed()) {\r\n depths[entity.uid] = entity.depth();\r\n bounds.push(entity);\r\n }\r\n });\r\n this._positionHTMLElements();\r\n // High depth -> low depth\r\n bounds.sort((x, y) => {\r\n return $order.compare(depths[y.uid], depths[x.uid]);\r\n });\r\n //\t\tconsole.log(\"_updateBounds\")\r\n bounds.forEach((entity) => {\r\n entity._updateBounds();\r\n });\r\n //\t\tconsole.log(\"_updatePosition\")\r\n const dirtyPositions = this._dirtyPositions;\r\n $object.keys(dirtyPositions).forEach((key) => {\r\n const sprite = dirtyPositions[key];\r\n delete dirtyPositions[key];\r\n if (!sprite.isDisposed()) {\r\n sprite._updatePosition();\r\n }\r\n });\r\n //\t\tconsole.log(\"_afterChanged\")\r\n objects.forEach((entity) => {\r\n entity._afterChanged();\r\n });\r\n }\r\n _renderFrame(currentTime) {\r\n if (this._updateTick) {\r\n if (this.events.isEnabled(\"framestarted\")) {\r\n this.events.dispatch(\"framestarted\", {\r\n type: \"framestarted\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n this._checkComputedStyles();\r\n this._runTickers(currentTime);\r\n const animationDone = this._runAnimations(currentTime);\r\n this._runDirties();\r\n this._render();\r\n this._renderer.resetImageArray();\r\n this._positionHTMLElements();\r\n if (this.events.isEnabled(\"frameended\")) {\r\n this.events.dispatch(\"frameended\", {\r\n type: \"frameended\",\r\n target: this,\r\n timestamp: currentTime,\r\n });\r\n }\r\n return this._tickers.length === 0 &&\r\n animationDone &&\r\n !this._isDirtyAnimation &&\r\n !this._isDirty;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n _runTicker(currentTime, now) {\r\n if (!this.isDisposed()) {\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n // No more work to do\r\n if (done) {\r\n this._ticker = null;\r\n this.animationTime = null;\r\n }\r\n else {\r\n if (!this._paused) {\r\n if (now) {\r\n this._ticker;\r\n }\r\n else {\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _runTickerNow(timeout = 10000) {\r\n if (!this.isDisposed()) {\r\n const endTime = performance.now() + timeout;\r\n for (;;) {\r\n const currentTime = performance.now();\r\n if (currentTime >= endTime) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n this.animationTime = currentTime;\r\n const done = this._renderFrame(currentTime);\r\n if (done) {\r\n this.animationTime = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n _startTicker() {\r\n if (this._ticker === null) {\r\n this.animationTime = null;\r\n this._ticker = (currentTime) => {\r\n this._runTicker(currentTime);\r\n };\r\n rAF(this.fps, this._ticker);\r\n }\r\n }\r\n /**\r\n * Returns whether the root is updating or not.\r\n */\r\n get updateTick() {\r\n return this._updateTick;\r\n }\r\n /**\r\n * Enables or disables the root updating.\r\n */\r\n set updateTick(value) {\r\n this._updateTick = value;\r\n if (value) {\r\n this._startTicker();\r\n }\r\n }\r\n _addDirtyEntity(entity) {\r\n this._isDirty = true;\r\n if (this._dirty[entity.uid] === undefined) {\r\n this._dirty[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyParent(parent) {\r\n this._isDirty = true;\r\n this._isDirtyParents = true;\r\n if (this._dirtyParents[parent.uid] === undefined) {\r\n this._dirtyParents[parent.uid] = parent;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyBounds(entity) {\r\n this._isDirty = true;\r\n if (this._dirtyBounds[entity.uid] === undefined) {\r\n this._dirtyBounds[entity.uid] = entity;\r\n }\r\n this._startTicker();\r\n }\r\n _addDirtyPosition(sprite) {\r\n this._isDirty = true;\r\n if (this._dirtyPositions[sprite.uid] === undefined) {\r\n this._dirtyPositions[sprite.uid] = sprite;\r\n }\r\n this._startTicker();\r\n }\r\n _addAnimation(animation) {\r\n this._isDirtyAnimation = true;\r\n // TODO use numeric id instead\r\n if (this._animations.indexOf(animation) === -1) {\r\n this._animations.push(animation);\r\n }\r\n this._startTicker();\r\n }\r\n _markDirty() {\r\n this._isDirty = true;\r\n }\r\n _markDirtyRedraw() {\r\n this.events.once(\"frameended\", () => {\r\n this._isDirty = true;\r\n this._startTicker();\r\n });\r\n }\r\n eachFrame(f) {\r\n this._tickers.push(f);\r\n this._startTicker();\r\n return new Disposer(() => {\r\n $array.removeFirst(this._tickers, f);\r\n });\r\n }\r\n markDirtyGlobal(container) {\r\n if (!container) {\r\n container = this.container;\r\n }\r\n container.walkChildren((child) => {\r\n if (child instanceof Container) {\r\n this.markDirtyGlobal(child);\r\n }\r\n child.markDirty();\r\n child.markDirtyBounds();\r\n });\r\n }\r\n /**\r\n * Returns width of the target container, in pixels.\r\n *\r\n * @return Width\r\n */\r\n width() {\r\n // TODO make this more efficient, maybe just return the renderer's width ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).width);\r\n }\r\n /**\r\n * Returns height of the target container, in pixels.\r\n *\r\n * @return Height\r\n */\r\n height() {\r\n // TODO make this more efficient, maybe just return the renderer's height ?\r\n return Math.floor(this._getCalculatedSize(this._getRealSize()).height);\r\n }\r\n /**\r\n * Disposes root and all the content in it.\r\n */\r\n dispose() {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n this._rootContainer.dispose();\r\n this._renderer.dispose();\r\n this.horizontalLayout.dispose();\r\n this.verticalLayout.dispose();\r\n this.interfaceColors.dispose();\r\n $array.each(this._disposers, (x) => {\r\n x.dispose();\r\n });\r\n if (this._inner) {\r\n $utils.removeElement(this._inner);\r\n }\r\n $array.remove(registry.rootElements, this);\r\n }\r\n }\r\n /**\r\n * Returns `true` if root element is disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n * @param text Alert text\r\n */\r\n readerAlert(text) {\r\n if (this._a11yD !== true) {\r\n this._readerAlertElement.innerHTML = $utils.stripTags(text);\r\n }\r\n }\r\n /**\r\n * Sets themes to be used for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @param themes A list of themes\r\n */\r\n setThemes(themes) {\r\n this._rootContainer.set(\"themes\", themes);\r\n // otherwise new themes are not applied\r\n const tooltipContainer = this.tooltipContainer;\r\n if (tooltipContainer) {\r\n tooltipContainer._applyThemes();\r\n }\r\n // @todo review this\r\n const interfaceColors = this.interfaceColors;\r\n if (interfaceColors) {\r\n interfaceColors._applyThemes();\r\n }\r\n }\r\n _addTooltip() {\r\n if (!this.tooltipContainer) {\r\n const tooltipContainerSettings = this._tooltipContainerSettings;\r\n const tooltipContainer = this._rootContainer.children.push(Container.new(this, {\r\n position: \"absolute\",\r\n isMeasured: false,\r\n width: p100,\r\n height: p100,\r\n layer: tooltipContainerSettings ? 35 : 30,\r\n layerMargin: tooltipContainerSettings ? tooltipContainerSettings : undefined\r\n }));\r\n this.tooltipContainer = tooltipContainer;\r\n const tooltip = Tooltip.new(this, {});\r\n this.container.set(\"tooltip\", tooltip);\r\n tooltip.hide(0);\r\n this._tooltip = tooltip;\r\n }\r\n }\r\n /**\r\n * Accesibility\r\n */\r\n _registerTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (target.get(\"focusable\")) {\r\n $array.pushOne(this._tabindexes, target);\r\n }\r\n else {\r\n $array.remove(this._tabindexes, target);\r\n }\r\n this._invalidateTabindexes();\r\n }\r\n _unregisterTabindexOrder(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n this._invalidateTabindexes();\r\n }\r\n _invalidateTabindexes() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._tabindexes.sort((a, b) => {\r\n const aindex = a.get(\"tabindexOrder\", 0);\r\n const bindex = b.get(\"tabindexOrder\", 0);\r\n if (aindex == bindex) {\r\n return 0;\r\n }\r\n else if (aindex > bindex) {\r\n return 1;\r\n }\r\n else {\r\n return -1;\r\n }\r\n });\r\n const groups = [];\r\n $array.each(this._tabindexes, (item, index) => {\r\n if (!item.getPrivate(\"focusElement\")) {\r\n this._makeFocusElement(index, item);\r\n }\r\n else {\r\n this._moveFocusElement(index, item);\r\n }\r\n const group = item.get(\"focusableGroup\");\r\n if (group && item.getPrivate(\"focusable\") !== false) {\r\n if (groups.indexOf(group) !== -1) {\r\n // Non-first element in the group, make it not directly focusable\r\n item.getPrivate(\"focusElement\").dom.setAttribute(\"tabindex\", \"-1\");\r\n }\r\n else {\r\n groups.push(group);\r\n }\r\n }\r\n });\r\n }\r\n _updateCurrentFocus() {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n if (this._focusedSprite) {\r\n this._decorateFocusElement(this._focusedSprite);\r\n this._positionFocusElement(this._focusedSprite);\r\n }\r\n }\r\n _decorateFocusElement(target, focusElement) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Decorate with proper accessibility attributes\r\n if (!focusElement) {\r\n focusElement = target.getPrivate(\"focusElement\").dom;\r\n }\r\n if (!focusElement) {\r\n return;\r\n }\r\n const role = target.get(\"role\");\r\n if (role) {\r\n focusElement.setAttribute(\"role\", role);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"role\");\r\n }\r\n const ariaLabel = target.get(\"ariaLabel\");\r\n if (ariaLabel) {\r\n const label = populateString(target, ariaLabel);\r\n focusElement.setAttribute(\"aria-label\", label);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-label\");\r\n }\r\n const ariaLive = target.get(\"ariaLive\");\r\n if (ariaLive) {\r\n focusElement.setAttribute(\"aria-live\", ariaLive);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-live\");\r\n }\r\n const ariaChecked = target.get(\"ariaChecked\");\r\n if (ariaChecked != null && role && [\"checkbox\", \"option\", \"radio\", \"menuitemcheckbox\", \"menuitemradio\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-checked\", ariaChecked ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-checked\");\r\n }\r\n const ariaCurrent = target.get(\"ariaCurrent\");\r\n if (ariaCurrent != null) {\r\n focusElement.setAttribute(\"aria-current\", ariaCurrent);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-current\");\r\n }\r\n const ariaSelected = target.get(\"ariaSelected\");\r\n if (ariaSelected != null && role && [\"gridcell\", \"option\", \"row\", \"tab\", \"columnheader\", \"rowheader\", \"treeitem\"].indexOf(role) !== -1) {\r\n focusElement.setAttribute(\"aria-selected\", ariaSelected ? \"true\" : \"false\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-selected\");\r\n }\r\n if (target.get(\"ariaHidden\")) {\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n const ariaOrientation = target.get(\"ariaOrientation\");\r\n if (ariaOrientation) {\r\n focusElement.setAttribute(\"aria-orientation\", ariaOrientation);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-orientation\");\r\n }\r\n const ariaValueNow = target.get(\"ariaValueNow\");\r\n if (ariaValueNow) {\r\n focusElement.setAttribute(\"aria-valuenow\", ariaValueNow);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuenow\");\r\n }\r\n const ariaValueMin = target.get(\"ariaValueMin\");\r\n if (ariaValueMin) {\r\n focusElement.setAttribute(\"aria-valuemin\", ariaValueMin);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemin\");\r\n }\r\n const ariaValueMax = target.get(\"ariaValueMax\");\r\n if (ariaValueMax) {\r\n focusElement.setAttribute(\"aria-valuemax\", ariaValueMax);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuemax\");\r\n }\r\n const ariaValueText = target.get(\"ariaValueText\");\r\n if (ariaValueText) {\r\n focusElement.setAttribute(\"aria-valuetext\", ariaValueText);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-valuetext\");\r\n }\r\n const ariaControls = target.get(\"ariaControls\");\r\n if (ariaControls) {\r\n focusElement.setAttribute(\"aria-controls\", ariaControls);\r\n }\r\n else {\r\n focusElement.removeAttribute(\"aria-controls\");\r\n }\r\n if (target.get(\"visible\") && target.get(\"opacity\") !== 0 && target.get(\"role\") != \"tooltip\" && !target.isHidden() && target.getPrivate(\"focusable\") !== false) {\r\n if (focusElement.getAttribute(\"tabindex\") != \"-1\") {\r\n focusElement.setAttribute(\"tabindex\", \"\" + this.tabindex);\r\n }\r\n focusElement.removeAttribute(\"aria-hidden\");\r\n }\r\n else {\r\n focusElement.removeAttribute(\"tabindex\");\r\n focusElement.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n }\r\n _makeFocusElement(index, target) {\r\n if (target.getPrivate(\"focusElement\") || this._a11yD == true) {\r\n return;\r\n }\r\n // Init\r\n const focusElement = document.createElement(\"div\");\r\n if (target.get(\"role\") != \"tooltip\") {\r\n focusElement.tabIndex = this.tabindex;\r\n }\r\n focusElement.style.position = \"absolute\";\r\n $utils.setInteractive(focusElement, false);\r\n const disposers = [];\r\n target.setPrivate(\"focusElement\", {\r\n dom: focusElement,\r\n disposers,\r\n });\r\n this._decorateFocusElement(target);\r\n disposers.push($utils.addEventListener(focusElement, \"focus\", (ev) => {\r\n this._handleFocus(ev);\r\n }));\r\n disposers.push($utils.addEventListener(focusElement, \"blur\", (ev) => {\r\n this._handleBlur(ev);\r\n }));\r\n this._moveFocusElement(index, target);\r\n }\r\n _removeFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n $array.remove(this._tabindexes, target);\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (focusElement) {\r\n const container = this._focusElementContainer;\r\n container.removeChild(focusElement.dom);\r\n $array.each(focusElement.disposers, (x) => {\r\n x.dispose();\r\n });\r\n }\r\n }\r\n _hideFocusElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n focusElement.dom.style.display = \"none\";\r\n }\r\n _moveFocusElement(index, target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get container\r\n const container = this._focusElementContainer;\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n if (focusElement === this._focusElementContainer.children[index]) {\r\n // Nothing to do\r\n return;\r\n }\r\n const next = this._focusElementContainer.children[index + 1];\r\n if (next) {\r\n container.insertBefore(focusElement, next);\r\n }\r\n else {\r\n container.append(focusElement);\r\n }\r\n }\r\n _positionFocusElement(target) {\r\n if (this._a11yD == true || target == undefined) {\r\n return;\r\n }\r\n const bounds = target.globalBounds();\r\n let width = bounds.right == bounds.left ? target.width() : bounds.right - bounds.left;\r\n let height = bounds.top == bounds.bottom ? target.height() : bounds.bottom - bounds.top;\r\n const padding = this._settings.focusPadding !== undefined ? this._settings.focusPadding : 2;\r\n let x = bounds.left - padding;\r\n let y = bounds.top - padding;\r\n if (width < 0) {\r\n x += width;\r\n width = Math.abs(width);\r\n }\r\n if (height < 0) {\r\n y += height;\r\n height = Math.abs(height);\r\n }\r\n const focusElement = target.getPrivate(\"focusElement\").dom;\r\n focusElement.style.top = y + \"px\";\r\n focusElement.style.left = x + \"px\";\r\n focusElement.style.width = (width + padding * 2) + \"px\";\r\n focusElement.style.height = (height + padding * 2) + \"px\";\r\n }\r\n _getSpriteByFocusElement(target) {\r\n let found;\r\n $array.eachContinue(this._tabindexes, (item, _index) => {\r\n if (item.getPrivate(\"focusElement\").dom === target) {\r\n found = item;\r\n return false;\r\n }\r\n return true;\r\n });\r\n return found;\r\n }\r\n _handleFocus(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n // Get element\r\n //const focused = this._tabindexes[index];\r\n const focused = this._getSpriteByFocusElement(ev.target);\r\n if (!focused) {\r\n return;\r\n }\r\n // Jump over hidden elements\r\n if (!focused.isVisibleDeep()) {\r\n this._focusNext(ev.target, this._isShift ? -1 : 1);\r\n return;\r\n }\r\n // Size and position\r\n this._positionFocusElement(focused);\r\n //this._decorateFocusElement(focused);\r\n this._focusedSprite = focused;\r\n if (focused.events.isEnabled(\"focus\")) {\r\n focused.events.dispatch(\"focus\", {\r\n type: \"focus\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n }\r\n _focusNext(el, direction) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focusableElements = Array.from(document.querySelectorAll([\r\n 'a[href]',\r\n 'area[href]',\r\n 'button:not([disabled])',\r\n 'details',\r\n 'input:not([disabled])',\r\n 'iframe:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[contentEditable=\"\"]',\r\n '[contentEditable=\"true\"]',\r\n '[contentEditable=\"TRUE\"]',\r\n '[tabindex]:not([tabindex^=\"-\"])',\r\n //':not([disabled])'\r\n ].join(',')));\r\n let index = focusableElements.indexOf(el) + direction;\r\n if (index < 0) {\r\n index = focusableElements.length - 1;\r\n }\r\n else if (index >= focusableElements.length) {\r\n index = 0;\r\n }\r\n focusableElements[index].focus();\r\n }\r\n _handleBlur(ev) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const focused = this._focusedSprite;\r\n if (focused && !focused.isDisposed() && focused.events.isEnabled(\"blur\")) {\r\n focused.events.dispatch(\"blur\", {\r\n type: \"blur\",\r\n originalEvent: ev,\r\n target: focused\r\n });\r\n }\r\n this._focusedSprite = undefined;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n updateTooltip(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const text = $utils.stripTags(target._getText());\r\n let tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (target.get(\"role\") == \"tooltip\" && text != \"\") {\r\n if (!tooltipElement) {\r\n tooltipElement = this._makeTooltipElement(target);\r\n }\r\n if (tooltipElement.innerHTML != text) {\r\n tooltipElement.innerHTML = text;\r\n }\r\n tooltipElement.setAttribute(\"aria-hidden\", target.isVisibleDeep() ? \"false\" : \"true\");\r\n }\r\n else if (tooltipElement) {\r\n tooltipElement.remove();\r\n target.removePrivate(\"tooltipElement\");\r\n }\r\n }\r\n _makeTooltipElement(target) {\r\n const container = this._tooltipElementContainer;\r\n const tooltipElement = document.createElement(\"div\");\r\n tooltipElement.style.position = \"absolute\";\r\n tooltipElement.style.width = \"1px\";\r\n tooltipElement.style.height = \"1px\";\r\n tooltipElement.style.overflow = \"hidden\";\r\n tooltipElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\r\n $utils.setInteractive(tooltipElement, false);\r\n this._decorateFocusElement(target, tooltipElement);\r\n container.append(tooltipElement);\r\n target.setPrivate(\"tooltipElement\", tooltipElement);\r\n return tooltipElement;\r\n }\r\n _removeTooltipElement(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n const tooltipElement = target.getPrivate(\"tooltipElement\");\r\n if (tooltipElement) {\r\n const parent = tooltipElement.parentElement;\r\n if (parent) {\r\n parent.removeChild(tooltipElement);\r\n }\r\n }\r\n }\r\n _invalidateAccessibility(target) {\r\n if (this._a11yD == true) {\r\n return;\r\n }\r\n this._focusElementDirty = true;\r\n const focusElement = target.getPrivate(\"focusElement\");\r\n if (target.get(\"focusable\")) {\r\n if (focusElement) {\r\n this._decorateFocusElement(target);\r\n this._positionFocusElement(target);\r\n }\r\n // else {\r\n // \tthis._renderer._makeFocusElement(0, this);\r\n // }\r\n }\r\n else if (focusElement) {\r\n this._removeFocusElement(target);\r\n }\r\n //this.updateCurrentFocus();\r\n }\r\n /**\r\n * Returns `true` if `target` is currently focused.\r\n *\r\n * @param target Target\r\n * @return Focused?\r\n */\r\n focused(target) {\r\n return this._focusedSprite === target;\r\n }\r\n /**\r\n * Converts document coordinates to coordinates withing root element.\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n documentPointToRoot(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x - rect.left) * scaleWidth,\r\n y: (point.y - rect.top) * scaleHeight,\r\n };\r\n }\r\n /**\r\n * Converts root coordinates to document\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\r\n rootPointToDocument(point) {\r\n const rect = this._getRealSize();\r\n const size = this._getCalculatedSize(rect);\r\n const scaleWidth = size.width / rect.width;\r\n const scaleHeight = size.height / rect.height;\r\n return {\r\n x: (point.x / scaleWidth) + rect.left,\r\n y: (point.y / scaleHeight) + rect.top\r\n };\r\n }\r\n /**\r\n * @ignore\r\n */\r\n addDisposer(disposer) {\r\n this._disposers.push(disposer);\r\n return disposer;\r\n }\r\n _updateComputedStyles() {\r\n const styles = window.getComputedStyle(this.dom);\r\n let fontHash = \"\";\r\n $object.each(styles, (key, val) => {\r\n if ($type.isString(key) && key.match(/^font/)) {\r\n fontHash += val;\r\n }\r\n });\r\n const changed = fontHash != this._fontHash;\r\n if (changed) {\r\n this._fontHash = fontHash;\r\n }\r\n return changed;\r\n }\r\n _checkComputedStyles() {\r\n if (this._updateComputedStyles()) {\r\n this._invalidateLabelBounds(this.container);\r\n }\r\n }\r\n _invalidateLabelBounds(target) {\r\n if (target instanceof Container) {\r\n target.children.each((child) => {\r\n this._invalidateLabelBounds(child);\r\n });\r\n }\r\n else if (target instanceof Text) {\r\n target.markDirtyBounds();\r\n }\r\n }\r\n /**\r\n * To all the clever heads out there. Yes, we did not make any attempts to\r\n * scramble this.\r\n *\r\n * This is a part of a tool meant for our users to manage their commercial\r\n * licenses for removal of amCharts branding from charts.\r\n *\r\n * The only legit way to do so is to purchase a commercial license for amCharts:\r\n * https://www.amcharts.com/online-store/\r\n *\r\n * Removing or altering this code, or disabling amCharts branding in any other\r\n * way is against the license and thus illegal.\r\n */\r\n _hasLicense() {\r\n for (let i = 0; i < registry.licenses.length; i++) {\r\n if (registry.licenses[i].match(/^AM5C.{5,}/i)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _licenseApplied() {\r\n if (this._logo) {\r\n this._logo.set(\"forceHidden\", true);\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n get debugGhostView() {\r\n return this._renderer.debugGhostView;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n set debugGhostView(value) {\r\n this._renderer.debugGhostView = value;\r\n }\r\n /**\r\n * Set this to `true` if you need chart to require first a tap onto it before\r\n * touch gesture related functionality like zoom/pan is turned on.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default false\r\n * @since 5.2.9\r\n * @param value Needs a tap to activate touch functions\r\n */\r\n set tapToActivate(value) {\r\n this._renderer.tapToActivate = value;\r\n }\r\n /**\r\n * @return Needs a tap to activate touch functions\r\n */\r\n get tapToActivate() {\r\n return this._renderer.tapToActivate;\r\n }\r\n /**\r\n * If `tapToActivate` is set to `true`, this setting will determine number\r\n * of milliseconds the chart will stay \"active\", before releasing the\r\n * controls back to the page.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default 3000\r\n * @since 5.2.9\r\n * @param value Timeout\r\n */\r\n set tapToActivateTimeout(value) {\r\n this._renderer.tapToActivateTimeout = value;\r\n }\r\n /**\r\n * @return Timeout\r\n */\r\n get tapToActivateTimeout() {\r\n return this._renderer.tapToActivateTimeout;\r\n }\r\n _makeHTMLElement(target) {\r\n // Get container\r\n const container = this._htmlElementContainer;\r\n // Init\r\n const htmlElement = document.createElement(\"div\");\r\n target.setPrivate(\"htmlElement\", htmlElement);\r\n //htmlElement.tabIndex = this.tabindex;\r\n htmlElement.style.position = \"absolute\";\r\n htmlElement.style.overflow = \"auto\";\r\n htmlElement.style.boxSizing = \"border-box\";\r\n $utils.setInteractive(htmlElement, target.get(\"interactive\", false));\r\n // Translate events\r\n if (target.events.isEnabled(\"click\")) {\r\n $utils.setInteractive(htmlElement, true);\r\n this._disposers.push($utils.addEventListener(htmlElement, \"click\", (ev) => {\r\n const downEvent = this._renderer.getEvent(ev);\r\n target.events.dispatch(\"click\", {\r\n type: \"click\",\r\n originalEvent: downEvent.event,\r\n point: downEvent.point,\r\n simulated: false,\r\n target: target\r\n });\r\n }));\r\n }\r\n this._positionHTMLElement(target);\r\n container.append(htmlElement);\r\n $array.pushOne(this._htmlEnabledContainers, target);\r\n return htmlElement;\r\n }\r\n _positionHTMLElements() {\r\n $array.each(this._htmlEnabledContainers, (target) => {\r\n this._positionHTMLElement(target);\r\n });\r\n }\r\n _positionHTMLElement(target) {\r\n const htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n // Translate settings\r\n const visualSettings = [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"];\r\n $array.each(visualSettings, (setting) => {\r\n const value = target.get(setting);\r\n if (value) {\r\n htmlElement.style[setting] = value + \"px\";\r\n }\r\n else {\r\n htmlElement.style[setting] = \"\";\r\n }\r\n });\r\n // Init and reset scale / rotation\r\n const scale = target.compositeScale() || 1;\r\n const rotation = target.compositeRotation() || 0;\r\n htmlElement.style.transform = \"\";\r\n htmlElement.style.transformOrigin = \"\";\r\n // Deal with opacity\r\n const opacity = target.compositeOpacity();\r\n setTimeout(() => {\r\n htmlElement.style.opacity = opacity + \"\";\r\n }, 10);\r\n const visible = target.isVisibleDeep();\r\n if (visible) {\r\n htmlElement.style.display = \"block\";\r\n }\r\n // Deal with position\r\n // const bounds = target.globalBounds();\r\n // htmlElement.style.top = (bounds.top) + \"px\";\r\n // htmlElement.style.left = (bounds.left) + \"px\";\r\n let pos = {\r\n x: target.x(),\r\n y: target.y()\r\n };\r\n if (target.parent) {\r\n pos = target.parent.toGlobal(pos);\r\n }\r\n htmlElement.style.top = pos.y + \"px\";\r\n htmlElement.style.left = pos.x + \"px\";\r\n // Use width/height if those are set\r\n const width = target.get(\"width\");\r\n const height = target.get(\"height\");\r\n let w = 0;\r\n let h = 0;\r\n if (width) {\r\n w = target.width();\r\n }\r\n if (height) {\r\n h = target.height();\r\n }\r\n if (!width || !height) {\r\n htmlElement.style.position = \"fixed\";\r\n htmlElement.style.width = \"\";\r\n htmlElement.style.height = \"\";\r\n const bbox = htmlElement.getBoundingClientRect();\r\n htmlElement.style.position = \"absolute\";\r\n if (!width)\r\n w = bbox.width;\r\n if (!height)\r\n h = bbox.height;\r\n let lw = w / scale;\r\n let lh = h / scale;\r\n let cx = target.get(\"centerX\", 0);\r\n let cy = target.get(\"centerY\", 0);\r\n let ll = 0;\r\n let lr = 0;\r\n let lt = 0;\r\n let lb = 0;\r\n if (cx instanceof Percent) {\r\n ll = -cx.value * lw;\r\n lr = (1 - cx.value) * lw;\r\n }\r\n else {\r\n ll = -cx;\r\n lr = lw - cx;\r\n }\r\n if (cy instanceof Percent) {\r\n lt = -cy.value * lh;\r\n lb = (1 - cy.value) * lh;\r\n }\r\n else {\r\n lt = -cy;\r\n lb = lh - cy;\r\n }\r\n target._localBounds = { left: ll, right: lr, top: lt, bottom: lb };\r\n let previousBounds = target._adjustedLocalBounds;\r\n let newBounds = target._display.getAdjustedBounds(target._localBounds);\r\n target._adjustedLocalBounds = newBounds;\r\n // compare each value of the bounds\r\n if (previousBounds.left !== newBounds.left || previousBounds.right !== newBounds.right || previousBounds.top !== newBounds.top || previousBounds.bottom !== newBounds.bottom) {\r\n target.markDirtyBounds();\r\n }\r\n }\r\n if (w > 0) {\r\n htmlElement.style.minWidth = (w) + \"px\";\r\n }\r\n if (h > 0) {\r\n htmlElement.style.minHeight = (h) + \"px\";\r\n }\r\n // Hide or show\r\n if (!visible || opacity == 0) {\r\n htmlElement.style.display = \"none\";\r\n }\r\n // Center position\r\n const x = target.get(\"centerX\", 0);\r\n const originX = isPercent(x) ? x.percent + \"%\" : x + \"px\";\r\n const y = target.get(\"centerY\", 0);\r\n const originY = isPercent(y) ? y.percent + \"%\" : y + \"px\";\r\n if (x || y) {\r\n htmlElement.style.transform = \"translate(-\" + originX + \", -\" + originY + \")\" + htmlElement.style.transform;\r\n }\r\n // Deal with scale\r\n if (scale != 1) {\r\n htmlElement.style.transform += \"scale(\" + scale + \")\";\r\n }\r\n if (rotation != 0) {\r\n htmlElement.style.transform += \" rotate(\" + rotation + \"deg)\";\r\n }\r\n if (htmlElement.style.transform != \"\") {\r\n htmlElement.style.transformOrigin = originX + \" \" + originY;\r\n //htmlElement.style.transformOrigin = \"0% 0%\";\r\n }\r\n }\r\n }\r\n _setHTMLContent(target, html) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (!htmlElement) {\r\n htmlElement = this._makeHTMLElement(target);\r\n }\r\n if (htmlElement.innerHTML != html) {\r\n htmlElement.innerHTML = html;\r\n }\r\n }\r\n _removeHTMLContent(target) {\r\n let htmlElement = target.getPrivate(\"htmlElement\");\r\n if (htmlElement) {\r\n this._htmlElementContainer.removeChild(htmlElement);\r\n target.removePrivate(\"htmlElement\");\r\n }\r\n $array.remove(this._htmlEnabledContainers, target);\r\n }\r\n}\r\n//# sourceMappingURL=Root.js.map","import { __awaiter } from \"tslib\";\r\nimport { Settings } from \"../util/Entity\";\r\nimport { Container } from \"./Container\";\r\nimport { ListData } from \"../util/Data\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $object from \"../util/Object\";\r\n/**\r\n * A base element that holds data bit (data item) for any [[Component]].\r\n */\r\nexport class DataItem extends Settings {\r\n constructor(component, dataContext, settings) {\r\n super(settings);\r\n /**\r\n * A data item's owener [[Component]].\r\n */\r\n Object.defineProperty(this, \"component\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A reference to actual item in source data this item is based on.\r\n */\r\n Object.defineProperty(this, \"dataContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * @todo requires description\r\n */\r\n Object.defineProperty(this, \"bullets\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"open\" values.\r\n */\r\n Object.defineProperty(this, \"open\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n /**\r\n * A set of \"close\" values.\r\n */\r\n Object.defineProperty(this, \"close\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.dataContext = dataContext;\r\n this.component = component;\r\n this._settings.visible = true;\r\n this._checkDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n this.component.markDirtyValues(this);\r\n }\r\n _startAnimation() {\r\n this.component._root._addAnimation(this);\r\n }\r\n _animationTime() {\r\n return this.component._root.animationTime;\r\n }\r\n _dispose() {\r\n if (this.component) {\r\n this.component.disposeDataItem(this);\r\n }\r\n super._dispose();\r\n }\r\n /**\r\n * Shows a data item that's currently hidden.\r\n */\r\n show(duration) {\r\n this.setRaw(\"visible\", true);\r\n if (this.component) {\r\n this.component.showDataItem(this, duration);\r\n }\r\n }\r\n /**\r\n * Hides a data item that's currently visible.\r\n */\r\n hide(duration) {\r\n this.setRaw(\"visible\", false);\r\n if (this.component) {\r\n this.component.hideDataItem(this, duration);\r\n }\r\n }\r\n isHidden() {\r\n return !this.get(\"visible\");\r\n }\r\n}\r\n/**\r\n * A base class for elements that make use of data.\r\n */\r\nexport class Component extends Container {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_data\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new ListData()\r\n });\r\n Object.defineProperty(this, \"_dataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"_mainDataItems\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._dataItems\r\n });\r\n Object.defineProperty(this, \"valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(this, \"fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: [\"id\"]\r\n });\r\n Object.defineProperty(this, \"_valueFields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valueFieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fields\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_fieldsF\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_valuesDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataChanged\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_dataGrouped\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n /**\r\n * Indicates if the component has already been initialized.\r\n */\r\n Object.defineProperty(this, \"inited\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n /**\r\n * Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\r\n set data(data) {\r\n data.incrementRef();\r\n this._data.decrementRef();\r\n this._data = data;\r\n }\r\n /**\r\n * @return Data\r\n */\r\n get data() {\r\n return this._data;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._data.decrementRef();\r\n }\r\n _onDataClear() {\r\n }\r\n _afterNew() {\r\n super._afterNew();\r\n this._data.incrementRef();\r\n this._updateFields();\r\n this._disposers.push(this.data.events.onAll((change) => {\r\n const dataItems = this._mainDataItems;\r\n this.markDirtyValues();\r\n this._markDirtyGroup();\r\n this._dataChanged = true;\r\n if (change.type === \"clear\") {\r\n $array.each(dataItems, (dataItem) => {\r\n dataItem.dispose();\r\n });\r\n dataItems.length = 0;\r\n this._onDataClear();\r\n }\r\n else if (change.type === \"push\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.push(dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"setIndex\") {\r\n const dataItem = dataItems[change.index];\r\n const properties = this._makeDataItem(change.newValue);\r\n if (dataItem.bullets && dataItem.bullets.length == 0) {\r\n dataItem.bullets = undefined;\r\n }\r\n $object.keys(properties).forEach((key) => {\r\n dataItem.animate({\r\n key: key,\r\n to: properties[key],\r\n duration: this.get(\"interpolationDuration\", 0),\r\n easing: this.get(\"interpolationEasing\"),\r\n });\r\n });\r\n dataItem.dataContext = change.newValue;\r\n }\r\n else if (change.type === \"insertIndex\") {\r\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\r\n dataItems.splice(change.index, 0, dataItem);\r\n this.processDataItem(dataItem);\r\n }\r\n else if (change.type === \"removeIndex\") {\r\n const dataItem = dataItems[change.index];\r\n dataItem.dispose();\r\n dataItems.splice(change.index, 1);\r\n }\r\n else if (change.type === \"moveIndex\") {\r\n const dataItem = dataItems[change.oldIndex];\r\n dataItems.splice(change.oldIndex, 1);\r\n dataItems.splice(change.newIndex, 0, dataItem);\r\n }\r\n else {\r\n throw new Error(\"Unknown IStreamEvent type\");\r\n }\r\n this._afterDataChange();\r\n }));\r\n }\r\n _updateFields() {\r\n if (this.valueFields) {\r\n this._valueFields = [];\r\n this._valueFieldsF = {};\r\n $array.each(this.valueFields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._valueFields.push(key);\r\n this._valueFieldsF[key] = { fieldKey: key + \"Field\", workingKey: key + \"Working\" };\r\n }\r\n });\r\n }\r\n if (this.fields) {\r\n this._fields = [];\r\n this._fieldsF = {};\r\n $array.each(this.fields, (key) => {\r\n const field = this.get((key + \"Field\"));\r\n if (field) {\r\n this._fields.push(key);\r\n this._fieldsF[key] = key + \"Field\";\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * A list of component's data items.\r\n *\r\n * @return Data items\r\n */\r\n get dataItems() {\r\n return this._dataItems;\r\n }\r\n processDataItem(_dataItem) { }\r\n _makeDataItem(data) {\r\n //const output: this[\"_dataItemSettings\"] = {};\r\n const output = {}; // temporary to solve error\r\n if (this._valueFields) {\r\n $array.each(this._valueFields, (key) => {\r\n const field = this.get((this._valueFieldsF[key].fieldKey));\r\n output[key] = data[field];\r\n output[this._valueFieldsF[key].workingKey] = output[key];\r\n });\r\n }\r\n if (this._fields) {\r\n $array.each(this._fields, (key) => {\r\n const field = this.get((this._fieldsF[key]));\r\n output[key] = data[field];\r\n });\r\n }\r\n return output;\r\n }\r\n /**\r\n * Creates a new data item and processes it.\r\n *\r\n * @param data Data item settings\r\n * @param dataContext Data context\r\n * @return New data item\r\n */\r\n makeDataItem(data, dataContext) {\r\n let dataItem = new DataItem(this, dataContext, data);\r\n this.processDataItem(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * Adds new explicit data item to series.\r\n *\r\n * @param data Data item settings\r\n * @param dataContext Data context\r\n * @return New data item\r\n */\r\n pushDataItem(data, dataContext) {\r\n const dataItem = this.makeDataItem(data, dataContext);\r\n this._mainDataItems.push(dataItem);\r\n return dataItem;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n disposeDataItem(_dataItem) {\r\n }\r\n /**\r\n * Shows component'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 return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", true);\r\n });\r\n }\r\n /**\r\n * Hides component'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 return __awaiter(this, void 0, void 0, function* () {\r\n dataItem.set(\"visible\", false);\r\n });\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._valuesDirty = false;\r\n }\r\n _afterDataChange() {\r\n }\r\n _afterChanged() {\r\n super._afterChanged();\r\n if (this._dataChanged) {\r\n const type = \"datavalidated\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, { type: type, target: this });\r\n }\r\n this._dataChanged = false;\r\n }\r\n this.inited = true;\r\n }\r\n /**\r\n * Forces a repaint of the element which relies on data.\r\n *\r\n * @since 5.0.21\r\n */\r\n markDirtyValues(_dataItem) {\r\n this.markDirty();\r\n this._valuesDirty = true;\r\n }\r\n _markDirtyGroup() {\r\n this._dataGrouped = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n}\r\nObject.defineProperty(Component, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Component\"\r\n});\r\nObject.defineProperty(Component, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([Component.className])\r\n});\r\n//# sourceMappingURL=Component.js.map","import { Template } from \"./util/Template\";\r\nimport * as $order from \"./util/Order\";\r\nimport * as $array from \"./util/Array\";\r\n/**\r\n * A base class for an amCharts theme.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @important\r\n */\r\nexport class Theme {\r\n constructor(root, isReal) {\r\n Object.defineProperty(this, \"_root\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rules\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n this._root = root;\r\n if (!isReal) {\r\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\r\n }\r\n }\r\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\r\n static new(root) {\r\n const x = (new this(root, true));\r\n x.setupDefaultRules();\r\n return x;\r\n }\r\n setupDefaultRules() { }\r\n /**\r\n * Looks up the rules for a specific theme class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @return Array>\r\n */\r\n _lookupRules(themeClass) {\r\n return this._rules[themeClass];\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * NOTE: the difference from `rule()` is that `ruleRaw()` does not do any\r\n * type checks.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n ruleRaw(themeClass, themeTags = []) {\r\n let rules = this._rules[themeClass];\r\n if (!rules) {\r\n rules = this._rules[themeClass] = [];\r\n }\r\n themeTags.sort($order.compare);\r\n const { index, found } = $array.getSortedIndex(rules, (x) => {\r\n const order = $order.compare(x.tags.length, themeTags.length);\r\n if (order === 0) {\r\n return $order.compareArray(x.tags, themeTags, $order.compare);\r\n }\r\n else {\r\n return order;\r\n }\r\n });\r\n if (found) {\r\n return rules[index].template;\r\n }\r\n else {\r\n const template = Template.new({});\r\n rules.splice(index, 0, {\r\n tags: themeTags,\r\n template,\r\n });\r\n return template;\r\n }\r\n }\r\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\r\n rule(themeClass, themeTags = []) {\r\n return this.ruleRaw(themeClass, themeTags);\r\n }\r\n}\r\n//# sourceMappingURL=Theme.js.map","import * as $type from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf(array, value) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n // TODO handle NaN\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any(array, test) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (test(array[i])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map(array, fn) {\r\n const length = array.length;\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n output[i] = fn(array[i], i);\r\n }\r\n return output;\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse(array, fn) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n fn(array[i], i);\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue(array, fn) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (!fn(array[i], i)) {\r\n break;\r\n }\r\n }\r\n}\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft(array, index) {\r\n const length = array.length;\r\n for (let i = index; i < length; ++i) {\r\n array[i - index] = array[i];\r\n }\r\n array.length = length - index;\r\n}\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last(array) {\r\n const length = array.length;\r\n return length ? array[length - 1] : undefined;\r\n}\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first(array) {\r\n return array[0];\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert(array, element, index) {\r\n //if (array) {\r\n index = Math.max(0, Math.min(index, array.length));\r\n array.splice(index, 0, element);\r\n //}\r\n}\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex(array, element, index) {\r\n remove(array, element);\r\n insert(array, element, index);\r\n}\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll(array, input) {\r\n const length = input.length;\r\n for (let i = 0; i < length; ++i) {\r\n array.push(input[i]);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove(array, element) {\r\n let found = false;\r\n let index = 0;\r\n for (;;) {\r\n index = array.indexOf(element, index);\r\n if (index === -1) {\r\n return found;\r\n }\r\n else {\r\n found = true;\r\n array.splice(index, 1);\r\n }\r\n }\r\n}\r\nexport function removeFirst(array, element) {\r\n let index = array.indexOf(element);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move(array, element, toIndex) {\r\n // @todo this implementation must be the same as the List.moveValue method\r\n // @todo don't do anything if the desired index is the same as the current index\r\n let index = indexOf(array, element);\r\n // @todo remove all old values rather than only the first ?\r\n if (index !== -1) {\r\n removeIndex(array, index);\r\n }\r\n if (toIndex == null) {\r\n array.push(element);\r\n }\r\n else {\r\n insertIndex(array, toIndex, element);\r\n }\r\n}\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add(array, element, index) {\r\n // Append to the end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // Add to the beginning of array if index is 0\r\n else if (index === 0) {\r\n array.unshift(element);\r\n }\r\n // Add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Pushes `element` into `array` if it doesn't already exist.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n */\r\nexport function pushOne(array, element) {\r\n if (array.indexOf(element) === -1) {\r\n array.push(element);\r\n }\r\n}\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace(array, element, index) {\r\n // check if exists\r\n let ind = array.indexOf(element);\r\n // remove if exists\r\n if (ind !== -1) {\r\n array.splice(ind, 1);\r\n }\r\n // add to end if index is not set\r\n if (!$type.isNumber(index)) {\r\n array.push(element);\r\n }\r\n // add to indicated place if index is set\r\n else {\r\n array.splice(index, 0, element);\r\n }\r\n}\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray(input) {\r\n if (Array.isArray(input)) {\r\n return input;\r\n }\r\n else {\r\n return [input];\r\n }\r\n}\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has(array, element) {\r\n return indexOf(array, element) !== -1;\r\n}\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy(array) {\r\n const length = array.length;\r\n // It's faster to create the array with a pre-defined length\r\n const output = new Array(length);\r\n for (let i = 0; i < length; ++i) {\r\n // Because the array has a pre-defined length, we have to assign rather than push\r\n // This is also faster than pushing\r\n output[i] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice(array, start, end = array.length) {\r\n const output = new Array(end - start);\r\n for (let i = start; i < end; ++i) {\r\n output[i - start] = array[i];\r\n }\r\n return output;\r\n}\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex(array, index, value) {\r\n array.splice(index, 0, value);\r\n}\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex(array, index) {\r\n array.splice(index, 1);\r\n}\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * This is the same as `findIndex` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndexReverse(array, matches) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (matches(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find(array, matches) {\r\n const index = findIndex(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * This is the same as `find` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findReverse(array, matches) {\r\n const index = findIndexReverse(array, matches);\r\n if (index !== -1) {\r\n return array[index];\r\n }\r\n}\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If value\r\n * is not `undefined`, it returns it.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function findMap(array, matches) {\r\n const length = array.length;\r\n for (let i = 0; i < length; ++i) {\r\n const value = matches(array[i], i);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n }\r\n}\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle(array) {\r\n // https://stackoverflow.com/a/2450976/449477\r\n let currentIndex = array.length, temporaryValue, randomIndex;\r\n // While there remain elements to shuffle...\r\n while (0 !== currentIndex) {\r\n // Pick a remaining element...\r\n randomIndex = Math.floor(Math.random() * currentIndex);\r\n currentIndex -= 1;\r\n // And swap it with the current element.\r\n temporaryValue = array[currentIndex];\r\n array[currentIndex] = array[randomIndex];\r\n array[randomIndex] = temporaryValue;\r\n }\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns right-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n start = pivot + 1;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: (found ? start - 1 : start)\r\n };\r\n}\r\n/**\r\n * Orders an array using specific `ordering` function and returns left-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\r\nexport function getFirstSortedIndex(array, ordering) {\r\n let start = 0;\r\n let end = array.length;\r\n let found = false;\r\n while (start < end) {\r\n // TODO is this faster/slower than using Math.floor ?\r\n const pivot = (start + end) >> 1;\r\n const order = ordering(array[pivot]);\r\n // less\r\n if (order < 0) {\r\n start = pivot + 1;\r\n // equal\r\n }\r\n else if (order === 0) {\r\n found = true;\r\n end = pivot;\r\n // more\r\n }\r\n else {\r\n end = pivot;\r\n }\r\n }\r\n return {\r\n found: found,\r\n index: start\r\n };\r\n}\r\nexport function keepIf(array, keep) {\r\n let i = array.length;\r\n while (i > 0) {\r\n --i;\r\n if (!keep(array[i])) {\r\n array.splice(i, 1);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=Array.js.map","/**\r\n * @ignore\r\n */\r\nexport function compare(left, right) {\r\n if (left === right) {\r\n return 0;\r\n }\r\n else if (left < right) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareArray(left, right, f) {\r\n const leftLength = left.length;\r\n const rightLength = right.length;\r\n const length = Math.min(leftLength, rightLength);\r\n for (let i = 0; i < length; ++i) {\r\n const order = f(left[i], right[i]);\r\n if (order !== 0) {\r\n return order;\r\n }\r\n }\r\n return compare(leftLength, rightLength);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function reverse(order) {\r\n if (order < 0) {\r\n return 1;\r\n }\r\n else if (order > 0) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function compareNumber(a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n//# sourceMappingURL=Order.js.map","import { Layout, eachChildren } from \"./Layout\";\r\nimport * as $type from \"../util/Type\";\r\nimport { Percent } from \"../util/Percent\";\r\n/**\r\n * A horizontal children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\r\nexport class HorizontalLayout extends Layout {\r\n /**\r\n * @ignore\r\n */\r\n updateContainer(container) {\r\n let paddingLeft = container.get(\"paddingLeft\", 0);\r\n let availableWidth = container.innerWidth();\r\n let totalPercent = 0;\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n totalPercent += childWidth.value;\r\n let w = availableWidth * childWidth.value;\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n if (minWidth > w) {\r\n availableWidth -= minWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n if (w > maxWidth) {\r\n availableWidth -= maxWidth;\r\n totalPercent -= childWidth.value;\r\n }\r\n }\r\n else {\r\n if (!$type.isNumber(childWidth)) {\r\n childWidth = child.width();\r\n }\r\n availableWidth -= childWidth + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0);\r\n }\r\n }\r\n }\r\n });\r\n if (availableWidth <= 0 || availableWidth == Infinity) {\r\n availableWidth = .1;\r\n }\r\n //if (availableWidth > 0) {\r\n eachChildren(container, (child) => {\r\n if (child.isVisible()) {\r\n if (child.get(\"position\") == \"relative\") {\r\n let childWidth = child.get(\"width\");\r\n if (childWidth instanceof Percent) {\r\n let privateWidth = availableWidth * childWidth.value / totalPercent - child.get(\"marginLeft\", 0) - child.get(\"marginRight\", 0);\r\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\r\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\r\n privateWidth = Math.min(Math.max(minWidth, privateWidth), maxWidth);\r\n child.setPrivate(\"width\", privateWidth);\r\n }\r\n else {\r\n if (child._prevSettings.width instanceof Percent) {\r\n child.setPrivate(\"width\", undefined);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n //}\r\n let prevX = paddingLeft;\r\n eachChildren(container, (child) => {\r\n if (child.get(\"position\") == \"relative\") {\r\n if (child.isVisible()) {\r\n let bounds = child.adjustedLocalBounds();\r\n let marginLeft = child.get(\"marginLeft\", 0);\r\n let marginRight = child.get(\"marginRight\", 0);\r\n let maxWidth = child.get(\"maxWidth\");\r\n let left = bounds.left;\r\n let right = bounds.right;\r\n if (maxWidth) {\r\n if (right - left > maxWidth) {\r\n right = left + maxWidth;\r\n }\r\n }\r\n let x = prevX + marginLeft - left;\r\n child.setPrivate(\"x\", x);\r\n prevX = x + right + marginRight;\r\n }\r\n else {\r\n child.setPrivate(\"x\", undefined);\r\n }\r\n }\r\n });\r\n }\r\n}\r\nObject.defineProperty(HorizontalLayout, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"HorizontalLayout\"\r\n});\r\nObject.defineProperty(HorizontalLayout, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Layout.classNames.concat([HorizontalLayout.className])\r\n});\r\n//# sourceMappingURL=HorizontalLayout.js.map","import { Entity } from \"../../util/Entity\";\r\n/**\r\n * Base class for patterns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\r\nexport class Pattern extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_display\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_backgroundDisplay\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this._root._renderer.makeGraphics()\r\n });\r\n Object.defineProperty(this, \"_clear\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_pattern\", {\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 // Applying themes because pattern will not have parent\r\n super._afterNewApplyThemes();\r\n }\r\n get pattern() {\r\n return this._pattern;\r\n }\r\n _draw() { }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"repetition\") || this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"colorOpacity\") || this.isDirty(\"fillOpacity\")) {\r\n this._clear = true;\r\n }\r\n this._checkDirtyFill();\r\n }\r\n _checkDirtyFill() {\r\n if (this.isDirty(\"color\") || this.isDirty(\"fill\")) {\r\n this._clear = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this._clear) {\r\n const repetition = this.get(\"repetition\", \"\");\r\n const width = this.get(\"width\", 100);\r\n const height = this.get(\"height\", 100);\r\n const fill = this.get(\"fill\");\r\n const fillOpacity = this.get(\"fillOpacity\", 1);\r\n const backgroundDisplay = this._backgroundDisplay;\r\n const display = this._display;\r\n display.clear();\r\n backgroundDisplay.clear();\r\n if (fill && (fillOpacity > 0)) {\r\n backgroundDisplay.beginFill(fill, fillOpacity);\r\n backgroundDisplay.drawRect(0, 0, width, height);\r\n backgroundDisplay.endFill();\r\n }\r\n display.angle = this.get(\"rotation\", 0);\r\n //display.pivot = { x: width / 2, y: height / 2 };\r\n this._draw();\r\n this._pattern = this._root._renderer.createPattern(display, backgroundDisplay, repetition, width, height);\r\n }\r\n this._clear = false;\r\n }\r\n}\r\nObject.defineProperty(Pattern, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Pattern\"\r\n});\r\nObject.defineProperty(Pattern, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Pattern.className])\r\n});\r\n//# sourceMappingURL=Pattern.js.map","import { isNumber } from \"./Type\";\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport const PI = Math.PI;\r\nexport const HALFPI = PI / 2;\r\nexport const RADIANS = PI / 180;\r\nexport const DEGREES = 180 / PI;\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value, precision, floor) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n let rounded = Math.round(value);\r\n if (floor) {\r\n if (rounded - value == 0.5) {\r\n rounded--;\r\n }\r\n }\r\n return rounded;\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.round(value * d) / d;\r\n }\r\n}\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value, precision) {\r\n if (!isNumber(precision) || precision <= 0) {\r\n return Math.ceil(value);\r\n }\r\n else {\r\n let d = Math.pow(10, precision);\r\n return Math.ceil(value * d) / d;\r\n }\r\n}\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0, p1, p2, tensionX, tensionY) {\r\n return { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p1, p2, p3, tensionX, tensionY) {\r\n return { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\nexport function fitToRange(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n/**\r\n * Returns sine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(angle) {\r\n return Math.sin(RADIANS * angle);\r\n}\r\n/**\r\n * Returns tan of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(angle) {\r\n return Math.tan(RADIANS * angle);\r\n}\r\n/**\r\n * Returns cosine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(angle) {\r\n return Math.cos(RADIANS * angle);\r\n}\r\n// 0 to 360\r\nexport function normalizeAngle(value) {\r\n value = value % 360;\r\n if (value < 0) {\r\n value += 360;\r\n }\r\n return value;\r\n}\r\n// TODO this doesn't work properly for skewing, and it's probably broken for rotation too\r\nexport function getArcBounds(cx, cy, startAngle, endAngle, radius) {\r\n let minX = Number.MAX_VALUE;\r\n let minY = Number.MAX_VALUE;\r\n let maxX = -Number.MAX_VALUE;\r\n let maxY = -Number.MAX_VALUE;\r\n let bpoints = [];\r\n bpoints.push(getArcPoint(radius, startAngle));\r\n bpoints.push(getArcPoint(radius, endAngle));\r\n let fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n let toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n for (let angle = fromAngle; angle <= toAngle; angle += 90) {\r\n if (angle >= startAngle && angle <= endAngle) {\r\n bpoints.push(getArcPoint(radius, angle));\r\n }\r\n }\r\n for (let i = 0; i < bpoints.length; i++) {\r\n let pt = bpoints[i];\r\n if (pt.x < minX) {\r\n minX = pt.x;\r\n }\r\n if (pt.y < minY) {\r\n minY = pt.y;\r\n }\r\n if (pt.x > maxX) {\r\n maxX = pt.x;\r\n }\r\n if (pt.y > maxY) {\r\n maxY = pt.y;\r\n }\r\n }\r\n return ({ left: cx + minX, top: cy + minY, right: cx + maxX, bottom: cy + maxY });\r\n}\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius, arc) {\r\n return ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\nexport function mergeBounds(bounds) {\r\n const len = bounds.length;\r\n if (len > 0) {\r\n let bound = bounds[0];\r\n let left = bound.left;\r\n let top = bound.top;\r\n let right = bound.right;\r\n let bottom = bound.bottom;\r\n if (len > 1) {\r\n for (let i = 1; i < len; i++) {\r\n bound = bounds[i];\r\n left = Math.min(bound.left, left);\r\n right = Math.max(bound.right, right);\r\n top = Math.min(bound.top, top);\r\n bottom = Math.max(bound.bottom, bottom);\r\n }\r\n }\r\n return { left, right, top, bottom };\r\n }\r\n return { left: 0, right: 0, top: 0, bottom: 0 };\r\n}\r\nexport function fitAngleToRange(value, startAngle, endAngle) {\r\n if (startAngle > endAngle) {\r\n let temp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = temp;\r\n }\r\n value = normalizeAngle(value);\r\n let count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n if (value < startAngle) {\r\n value += 360 * (count + 1);\r\n }\r\n let maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\r\n let maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\r\n if (value > endAngle) {\r\n if (value - 360 > startAngle) {\r\n value -= 360;\r\n }\r\n else {\r\n if (value < maxEnd) {\r\n value = endAngle;\r\n }\r\n else {\r\n value = startAngle;\r\n }\r\n }\r\n }\r\n if (value < startAngle) {\r\n if (value > maxStart) {\r\n value = startAngle;\r\n }\r\n else {\r\n value = endAngle;\r\n }\r\n }\r\n return value;\r\n}\r\nexport function inBounds(point, bounds) {\r\n if (point.x >= bounds.left && point.y >= bounds.top && point.x <= bounds.right && point.y <= bounds.bottom) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function getAngle(point1, point2) {\r\n if (!point2) {\r\n point2 = { x: point1.x * 2, y: point1.y * 2 };\r\n }\r\n let diffX = point2.x - point1.x;\r\n let diffY = point2.y - point1.y;\r\n let angle = Math.atan2(diffY, diffX) * DEGREES;\r\n if (angle < 0) {\r\n angle += 360;\r\n }\r\n return normalizeAngle(angle);\r\n}\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\r\n let x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n let y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n return { x: x, y: y };\r\n}\r\nexport function getPointOnLine(pointA, pointB, position) {\r\n return { x: pointA.x + (pointB.x - pointA.x) * position, y: pointA.y + (pointB.y - pointA.y) * position };\r\n}\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values, referenceValue) {\r\n return values.reduce(function (prev, curr) {\r\n return (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n });\r\n}\r\n/**\r\n * Returns true if bounds overlap\r\n * @param bounds1 IBounds\r\n * @param bounds2 IBounds\r\n * @returns boolean\r\n */\r\nexport function boundsOverlap(bounds1, bounds2) {\r\n const horizontalOverlap = bounds1.left < bounds2.right && bounds1.right > bounds2.left;\r\n const verticalOverlap = bounds1.top < bounds2.bottom && bounds1.bottom > bounds2.top;\r\n return horizontalOverlap && verticalOverlap;\r\n}\r\n/**\r\n * Generates points of a spiral\r\n * @param cx\r\n * @param cy\r\n * @param radius\r\n * @param radiusY\r\n * @param innerRadius\r\n * @param step\r\n * @param radiusStep\r\n * @param startAngle\r\n * @param endAngle\r\n * @returns IPoint[]\r\n */\r\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\r\n let r = innerRadius + 0.01;\r\n let angle = startAngle * RADIANS;\r\n let points = [];\r\n while (r < radius + radiusStep) {\r\n let stepSize = step;\r\n if (stepSize / 2 > r) {\r\n stepSize = 2 * r;\r\n }\r\n angle += 2 * Math.asin(stepSize / 2 / r);\r\n if (angle * DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n break;\r\n }\r\n let degrees = angle * DEGREES;\r\n let point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n points.push(point);\r\n r = innerRadius + degrees / 360 * radiusStep;\r\n }\r\n points.shift();\r\n return points;\r\n}\r\n/**\r\n * Returns true if circles overlap\r\n * @param circle1\r\n * @param circle2\r\n * @returns boolean\r\n */\r\nexport function circlesOverlap(circle1, circle2) {\r\n return Math.hypot(circle1.x - circle2.x, circle1.y - circle2.y) <= circle1.radius + circle2.radius;\r\n}\r\n//# sourceMappingURL=Math.js.map","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer in the documentation\r\n *\tand/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n *\tcontributors may be used to endorse or promote products derived from this\r\n *\tsoftware without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function linear(t) {\r\n return t;\r\n}\r\nexport function quad(t) {\r\n return t * t;\r\n}\r\nexport function cubic(t) {\r\n return t * t * t;\r\n}\r\nexport function pow(t, e) {\r\n return Math.pow(t, e);\r\n}\r\nexport function exp(t) {\r\n return Math.pow(2, 10 * t - 10);\r\n}\r\nexport function sine(t) {\r\n return 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nexport function circle(t) {\r\n return 1 - Math.sqrt(1 - t * t);\r\n}\r\n/**\r\n * ============================================================================\r\n * TRANSFORMERS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n */\r\nexport function yoyo(ease) {\r\n return function (t) {\r\n if (t < 0.5) {\r\n return ease(t * 2.0);\r\n }\r\n else {\r\n return ease((1.0 - t) * 2.0);\r\n }\r\n };\r\n}\r\nexport function out(ease) {\r\n return function (t) {\r\n return 1.0 - ease(1.0 - t);\r\n };\r\n}\r\nexport function inOut(ease) {\r\n return function (t) {\r\n if (t <= 0.5) {\r\n return ease(t * 2.0) / 2.0;\r\n }\r\n else {\r\n return 1.0 - (ease((1.0 - t) * 2.0) / 2.0);\r\n }\r\n };\r\n}\r\n/**\r\n * ============================================================================\r\n * BOUNCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\nlet b1 = 4 / 11, b2 = 6 / 11, b3 = 8 / 11, b4 = 3 / 4, b5 = 9 / 11, b6 = 10 / 11, b7 = 15 / 16, b8 = 21 / 22, b9 = 63 / 64, b0 = 1 / b1 / b1;\r\nexport function bounce(t) {\r\n return 1 - bounceOut(1 - t);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction bounceOut(t) {\r\n t = t;\r\n if (t < b1) {\r\n return b0 * t * t;\r\n }\r\n else if (t < b3) {\r\n return b0 * (t -= b2) * t + b4;\r\n }\r\n else if (t < b6) {\r\n return b0 * (t -= b5) * t + b7;\r\n }\r\n else {\r\n return b0 * (t -= b8) * t + b9;\r\n }\r\n}\r\n/**\r\n * ============================================================================\r\n * ELASTIC\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * @ignore\r\n */\r\nlet tau = 2 * Math.PI;\r\n/**\r\n * @ignore\r\n */\r\nlet amplitude = 1;\r\n/**\r\n * @ignore\r\n */\r\nlet period = 0.3 / tau;\r\n/**\r\n * @ignore\r\n */\r\nlet s = Math.asin(1 / amplitude) * period;\r\nexport function elastic(t) {\r\n let v = t;\r\n return amplitude * Math.pow(2, 10 * --v) * Math.sin((s - v) / period);\r\n}\r\n//# sourceMappingURL=Ease.js.map","import { Entity } from \"./Entity\";\r\nimport { Color } from \"./Color\";\r\n/**\r\n * An object which holds list of colors and can generate new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Color_sets} for more info\r\n */\r\nexport class ColorSet extends Entity {\r\n //protected _currentPass: number = 0;\r\n _afterNew() {\r\n // Applying themes because color set will not have parent\r\n super._afterNewApplyThemes();\r\n this._dirty[\"colors\"] = false;\r\n }\r\n _beforeChanged() {\r\n if (this.isDirty(\"colors\")) {\r\n this.reset();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n generateColors() {\r\n this.setPrivate(\"currentPass\", this.getPrivate(\"currentPass\", 0) + 1);\r\n const pass = this.getPrivate(\"currentPass\");\r\n const colors = this.get(\"colors\", [this.get(\"baseColor\", Color.fromHex(0xff0000))]);\r\n if (!this.getPrivate(\"numColors\")) {\r\n this.setPrivate(\"numColors\", colors.length);\r\n }\r\n //const len = colors.length;\r\n const len = this.getPrivate(\"numColors\");\r\n //const start = len - this.getPrivate(\"numColors\")!;\r\n const start = 0;\r\n const passOptions = this.get(\"passOptions\");\r\n const reuse = this.get(\"reuse\");\r\n for (let i = start; i < len; i++) {\r\n if (reuse) {\r\n colors.push(colors[i]);\r\n }\r\n else {\r\n const hsl = colors[i].toHSL();\r\n let h = hsl.h + (passOptions.hue || 0) * pass;\r\n while (h > 1)\r\n h -= 1;\r\n let s = hsl.s + (passOptions.saturation || 0) * pass;\r\n //if (s > 1) s -= Math.floor(s);\r\n if (s > 1)\r\n s = 1;\r\n if (s < 0)\r\n s = 0;\r\n let l = hsl.l + (passOptions.lightness || 0) * pass;\r\n //if (l > 1) l -= Math.floor(l);\r\n while (l > 1)\r\n l -= 1;\r\n colors.push(Color.fromHSL(h, s, l));\r\n }\r\n }\r\n }\r\n /**\r\n * Returns a [[Color]] at specific index.\r\n *\r\n * If there's no color at this index, a new color is generated.\r\n *\r\n * @param index Index\r\n * @return Color\r\n */\r\n getIndex(index) {\r\n const colors = this.get(\"colors\", []);\r\n const saturation = this.get(\"saturation\");\r\n if (index >= colors.length) {\r\n this.generateColors();\r\n return this.getIndex(index);\r\n }\r\n return saturation != null ? Color.saturate(colors[index], saturation) : colors[index];\r\n }\r\n /**\r\n * Returns next [[Color]] in the list.\r\n *\r\n * If the list is out of colors, new ones are generated dynamically.\r\n */\r\n next() {\r\n let currentStep = this.getPrivate(\"currentStep\", this.get(\"startIndex\", 0));\r\n this.setPrivate(\"currentStep\", currentStep + this.get(\"step\", 1));\r\n return this.getIndex(currentStep);\r\n }\r\n /**\r\n * Resets counter to the start of the list, so the next call for `next()` will\r\n * return the first color.\r\n */\r\n reset() {\r\n this.setPrivate(\"currentStep\", this.get(\"startIndex\", 0));\r\n this.setPrivate(\"currentPass\", 0);\r\n }\r\n}\r\nObject.defineProperty(ColorSet, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"ColorSet\"\r\n});\r\nObject.defineProperty(ColorSet, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([ColorSet.className])\r\n});\r\n//# sourceMappingURL=ColorSet.js.map","import { Entity } from \"./Entity\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\nimport { Timezone } from \"./Timezone\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n/**\r\n * Date formatter class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n * @important\r\n */\r\nexport class DateFormatter extends Entity {\r\n _setDefaults() {\r\n // Defaults\r\n this._setDefault(\"capitalize\", true);\r\n this._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\r\n super._setDefaults();\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n }\r\n /**\r\n * Formats a source `Date` object into string format\r\n * @param source inpout date\r\n * @param format Output format\r\n * @param ignoreTimezone Ignore timezone?\r\n * @return Formatted date\r\n */\r\n format(source, format, ignoreTimezone = false) {\r\n // Locale?\r\n // TODO\r\n // No format passed in or it's empty\r\n if (typeof format === \"undefined\" || format === \"\") {\r\n format = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n }\r\n // Init return value\r\n let formatted;\r\n // Cast?\r\n // TODO: decide if we need to cast\r\n let date = source;\r\n // Is it a built-in format or Intl.DateTimeFormat\r\n if ($type.isObject(format)) {\r\n try {\r\n const locales = this.get(\"intlLocales\");\r\n if (locales) {\r\n return new Intl.DateTimeFormat(locales, format).format(date);\r\n }\r\n else {\r\n return new Intl.DateTimeFormat(undefined, format).format(date);\r\n }\r\n }\r\n catch (e) {\r\n return \"Invalid\";\r\n }\r\n }\r\n // get format info (it will also deal with parser caching)\r\n let info = this.parseFormat(format);\r\n // Should we apply custom time zone?\r\n const timezone = this._root.timezone;\r\n if (timezone && !this._root.utc && !ignoreTimezone) {\r\n date = timezone.convertLocal(date);\r\n }\r\n // Check if it's a valid date\r\n if (!$type.isNumber(date.getTime())) {\r\n // TODO translation\r\n //return this._t(\"Invalid date\");\r\n return \"Invalid date\";\r\n }\r\n // Apply format\r\n formatted = this.applyFormat(date, info, ignoreTimezone);\r\n // Capitalize\r\n if (this.get(\"capitalize\")) {\r\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\r\n }\r\n // We're done\r\n return formatted;\r\n }\r\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @return Formatted date string\r\n */\r\n applyFormat(date, info, ignoreTimezone = false) {\r\n // Init return value\r\n let res = info.template;\r\n // Get values\r\n let fullYear, month, weekday, day, hours, minutes, seconds, milliseconds, timestamp = date.getTime();\r\n if (this._root.utc && !ignoreTimezone) {\r\n fullYear = date.getUTCFullYear();\r\n month = date.getUTCMonth();\r\n weekday = date.getUTCDay();\r\n day = date.getUTCDate();\r\n hours = date.getUTCHours();\r\n minutes = date.getUTCMinutes();\r\n seconds = date.getUTCSeconds();\r\n milliseconds = date.getUTCMilliseconds();\r\n }\r\n else {\r\n fullYear = date.getFullYear();\r\n month = date.getMonth();\r\n weekday = date.getDay();\r\n day = date.getDate();\r\n hours = date.getHours();\r\n minutes = date.getMinutes();\r\n seconds = date.getSeconds();\r\n milliseconds = date.getMilliseconds();\r\n }\r\n // Go through each part and format/replace it in template\r\n for (let i = 0, len = info.parts.length; i < len; i++) {\r\n let value = \"\";\r\n switch (info.parts[i]) {\r\n case \"G\":\r\n value = this._t(fullYear < 0\r\n ? \"_era_bc\"\r\n : \"_era_ad\");\r\n break;\r\n case \"yyyy\":\r\n value = Math.abs(fullYear).toString();\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"yyy\":\r\n case \"yy\":\r\n case \"y\":\r\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n if (fullYear < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n let year = $utils.getWeekYear(date, this._root.utc);\r\n if (info.parts[i] == \"YYYY\") {\r\n value = Math.abs(year).toString();\r\n }\r\n else {\r\n value = Math.abs(year).toString().substr(-info.parts[i].length);\r\n }\r\n if (year < 0) {\r\n value += this._t(\"_era_bc\");\r\n }\r\n break;\r\n case \"u\":\r\n // @todo\r\n break;\r\n case \"q\":\r\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\r\n break;\r\n case \"MMMMM\":\r\n value = this._t(this._getMonth(month)).substr(0, 1);\r\n break;\r\n case \"MMMM\":\r\n value = this._t(this._getMonth(month));\r\n break;\r\n case \"MMM\":\r\n value = this._t(this._getShortMonth(month));\r\n break;\r\n case \"MM\":\r\n value = $utils.padString(month + 1, 2, \"0\");\r\n break;\r\n case \"M\":\r\n value = (month + 1).toString();\r\n break;\r\n case \"ww\":\r\n value = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\r\n break;\r\n case \"w\":\r\n value = $utils.getWeek(date, this._root.utc).toString();\r\n break;\r\n case \"W\":\r\n value = $utils.getMonthWeek(date, this._root.utc).toString();\r\n break;\r\n case \"dd\":\r\n value = $utils.padString(day, 2, \"0\");\r\n break;\r\n case \"d\":\r\n value = day.toString();\r\n break;\r\n case \"DD\":\r\n case \"DDD\":\r\n value = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\r\n break;\r\n case \"D\":\r\n value = $utils.getYearDay(date, this._root.utc).toString();\r\n break;\r\n case \"F\":\r\n // @todo\r\n break;\r\n case \"g\":\r\n // @todo\r\n break;\r\n case \"t\":\r\n value = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\r\n break;\r\n case \"E\":\r\n value = (weekday || 7).toString();\r\n break;\r\n case \"EE\":\r\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n break;\r\n case \"EEE\":\r\n case \"eee\":\r\n value = this._t(this._getShortWeekday(weekday));\r\n break;\r\n case \"EEEE\":\r\n case \"eeee\":\r\n value = this._t(this._getWeekday(weekday));\r\n break;\r\n case \"EEEEE\":\r\n case \"eeeee\":\r\n value = this._t(this._getShortWeekday(weekday)).substr(0, 1);\r\n break;\r\n case \"e\":\r\n case \"ee\":\r\n value = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\r\n if (info.parts[i] == \"ee\") {\r\n value = $utils.padString(value, 2, \"0\");\r\n }\r\n break;\r\n case \"a\":\r\n if (hours >= 12) {\r\n value = this._t(\"PM\");\r\n }\r\n else {\r\n value = this._t(\"AM\");\r\n }\r\n break;\r\n case \"aa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P.M.\");\r\n }\r\n else {\r\n value = this._t(\"A.M.\");\r\n }\r\n break;\r\n case \"aaa\":\r\n if (hours >= 12) {\r\n value = this._t(\"P\");\r\n }\r\n else {\r\n value = this._t(\"A\");\r\n }\r\n break;\r\n case \"h\":\r\n value = $utils.get12Hours(hours).toString();\r\n break;\r\n case \"hh\":\r\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n break;\r\n case \"H\":\r\n value = hours.toString();\r\n break;\r\n case \"HH\":\r\n value = $utils.padString(hours, 2, \"0\");\r\n break;\r\n case \"K\":\r\n value = $utils.get12Hours(hours, 0).toString();\r\n break;\r\n case \"KK\":\r\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n break;\r\n case \"k\":\r\n value = (hours + 1).toString();\r\n break;\r\n case \"kk\":\r\n value = $utils.padString(hours + 1, 2, \"0\");\r\n break;\r\n case \"m\":\r\n value = minutes.toString();\r\n break;\r\n case \"mm\":\r\n value = $utils.padString(minutes, 2, \"0\");\r\n break;\r\n case \"s\":\r\n value = seconds.toString();\r\n break;\r\n case \"ss\":\r\n value = $utils.padString(seconds, 2, \"0\");\r\n break;\r\n case \"S\":\r\n case \"SS\":\r\n case \"SSS\":\r\n value = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n break;\r\n case \"x\":\r\n value = timestamp.toString();\r\n break;\r\n case \"n\":\r\n case \"nn\":\r\n case \"nnn\":\r\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n break;\r\n case \"z\":\r\n value = $utils.getTimeZone(date, false, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zz\":\r\n value = $utils.getTimeZone(date, true, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"zzz\":\r\n value = $utils.getTimeZone(date, false, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\r\n break;\r\n case \"zzzz\":\r\n value = $utils.getTimeZone(date, true, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\r\n break;\r\n case \"Z\":\r\n case \"ZZ\":\r\n let timezone = this._root.utc ? \"UTC\" : this._root.timezone;\r\n if (timezone instanceof Timezone) {\r\n timezone = timezone.name;\r\n }\r\n const offset = timezone ? $utils.getTimezoneOffset(timezone) : date.getTimezoneOffset();\r\n let tz = Math.abs(offset) / 60;\r\n let tzh = Math.floor(tz);\r\n let tzm = tz * 60 - tzh * 60;\r\n if (this._root.utc) {\r\n tzh = 0;\r\n tzm = 0;\r\n }\r\n if (info.parts[i] == \"Z\") {\r\n value = \"GMT\";\r\n value += offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n }\r\n else {\r\n value = offset > 0 ? \"-\" : \"+\";\r\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n }\r\n break;\r\n case \"i\":\r\n value = date.toISOString();\r\n break;\r\n case \"I\":\r\n value = date.toUTCString();\r\n break;\r\n }\r\n res = res.replace($type.PLACEHOLDER, value);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\r\n parseFormat(format) {\r\n // Check cache\r\n // TODO: implement caching of the parsed format\r\n // Init format parse info holder\r\n let info = {\r\n \"template\": \"\",\r\n \"parts\": []\r\n };\r\n // Let TextFormatter split into chunks\r\n let chunks = TextFormatter.chunk(format, true);\r\n for (let i = 0; i < chunks.length; i++) {\r\n let chunk = chunks[i];\r\n if (chunk.type === \"value\") {\r\n // Just \"Date\"?\r\n if (chunk.text.match(/^date$/i)) {\r\n let dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\r\n if (!$type.isString(dateFormat)) {\r\n dateFormat = \"yyyy-MM-dd\";\r\n }\r\n chunk.text = dateFormat;\r\n }\r\n // Find all possible parts\r\n let matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n // Found?\r\n if (matches) {\r\n // Populate template\r\n for (let x = 0; x < matches.length; x++) {\r\n info.parts.push(matches[x]);\r\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\r\n }\r\n }\r\n }\r\n // Apply to template\r\n info.template += chunk.text;\r\n }\r\n // Save cache\r\n // TODO\r\n return info;\r\n }\r\n _months() {\r\n return [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n }\r\n _getMonth(index) {\r\n return this._months()[index];\r\n }\r\n _shortMonths() {\r\n return [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n }\r\n _getShortMonth(index) {\r\n return this._shortMonths()[index];\r\n }\r\n _weekdays() {\r\n return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n }\r\n _getWeekday(index) {\r\n return this._weekdays()[index];\r\n }\r\n _shortWeekdays() {\r\n return [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n }\r\n _getShortWeekday(index) {\r\n return this._shortWeekdays()[index];\r\n }\r\n parse(source, format) {\r\n // Is it already a Date\r\n if (source instanceof Date) {\r\n return source;\r\n }\r\n // Is it a numeric timestamp\r\n if ($type.isNumber(source)) {\r\n return new Date(source);\r\n }\r\n // Are we parsing a timestamp?\r\n if (format == \"x\") {\r\n return new Date(parseInt(source));\r\n }\r\n // No? Let's check if it's string, and try converting to it if nec\r\n if (!$type.isString(source)) {\r\n source = source.toString();\r\n }\r\n // Init return value\r\n let res;\r\n // Init RegEx for parsing\r\n let reg = \"\";\r\n // Clean format\r\n format = $utils.cleanFormat(format);\r\n // Clip format to length of the source string\r\n format = format.substr(0, source.length);\r\n // Parse format\r\n let info = this.parseFormat(format);\r\n // Init parsed items holder\r\n let parsedIndexes = {\r\n \"year\": -1,\r\n \"year3\": -1,\r\n \"year2\": -1,\r\n \"year1\": -1,\r\n \"month\": -1,\r\n \"monthShort\": -1,\r\n \"monthLong\": -1,\r\n \"weekdayShort\": -1,\r\n \"weekdayLong\": -1,\r\n \"day\": -1,\r\n \"yearDay\": -1,\r\n \"week\": -1,\r\n \"hourBase0\": -1,\r\n \"hour12Base0\": -1,\r\n \"hourBase1\": -1,\r\n \"hour12Base1\": -1,\r\n \"minute\": -1,\r\n \"second\": -1,\r\n \"millisecond\": -1,\r\n \"millisecondDigits\": -1,\r\n \"am\": -1,\r\n \"zone\": -1,\r\n \"timestamp\": -1,\r\n \"iso\": -1\r\n };\r\n // Init values\r\n let resValues = {\r\n \"year\": 1970,\r\n \"month\": 0,\r\n \"day\": 1,\r\n \"hour\": 0,\r\n \"minute\": 0,\r\n \"second\": 0,\r\n \"millisecond\": 0,\r\n \"timestamp\": null,\r\n \"offset\": 0,\r\n \"utc\": this._root.utc\r\n };\r\n // Index adjuster\r\n let indexAdjust = 0;\r\n let index = 0;\r\n // Iterate through all of the parts\r\n for (let i = 0; i < info.parts.length; i++) {\r\n // Set current match index\r\n index = i + indexAdjust + 1;\r\n switch (info.parts[i]) {\r\n case \"yyyy\":\r\n case \"YYYY\":\r\n reg += \"([0-9]{4})\";\r\n parsedIndexes.year = index;\r\n break;\r\n case \"yyy\":\r\n case \"YYY\":\r\n reg += \"([0-9]{3})\";\r\n parsedIndexes.year3 = index;\r\n break;\r\n case \"yy\":\r\n case \"YY\":\r\n reg += \"([0-9]{2})\";\r\n parsedIndexes.year2 = index;\r\n break;\r\n case \"y\":\r\n case \"Y\":\r\n reg += \"([0-9]{1})\";\r\n parsedIndexes.year1 = index;\r\n break;\r\n case \"MMMM\":\r\n reg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\r\n parsedIndexes.monthLong = index;\r\n break;\r\n case \"MMM\":\r\n reg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\r\n parsedIndexes.monthShort = index;\r\n break;\r\n case \"MM\":\r\n case \"M\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.month = index;\r\n break;\r\n case \"ww\":\r\n case \"w\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.week = index;\r\n break;\r\n case \"dd\":\r\n case \"d\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.day = index;\r\n break;\r\n case \"DDD\":\r\n case \"DD\":\r\n case \"D\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.yearDay = index;\r\n break;\r\n case \"dddd\":\r\n reg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayLong = index;\r\n break;\r\n case \"ddd\":\r\n reg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\r\n parsedIndexes.weekdayShort = index;\r\n break;\r\n case \"aaa\":\r\n case \"aa\":\r\n case \"a\":\r\n // TODO: fix (escape regex)\r\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n parsedIndexes.am = index;\r\n break;\r\n case \"hh\":\r\n case \"h\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base1 = index;\r\n break;\r\n case \"HH\":\r\n case \"H\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase0 = index;\r\n break;\r\n case \"KK\":\r\n case \"K\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hour12Base0 = index;\r\n break;\r\n case \"kk\":\r\n case \"k\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.hourBase1 = index;\r\n break;\r\n case \"mm\":\r\n case \"m\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.minute = index;\r\n break;\r\n case \"ss\":\r\n case \"s\":\r\n reg += \"([0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.second = index;\r\n break;\r\n case \"SSS\":\r\n case \"SS\":\r\n case \"S\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n parsedIndexes.millisecondDigits = info.parts[i].length;\r\n break;\r\n case \"nnn\":\r\n case \"nn\":\r\n case \"n\":\r\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n parsedIndexes.millisecond = index;\r\n break;\r\n case \"x\":\r\n reg += \"([0-9]{1,})\";\r\n parsedIndexes.timestamp = index;\r\n break;\r\n case \"Z\":\r\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"ZZ\":\r\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n parsedIndexes.zone = index;\r\n break;\r\n case \"i\":\r\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\\\.?([0-9]{0,3})([zZ]|[+\\\\-][0-9]{2}:?[0-9]{2}|$)\";\r\n parsedIndexes.iso = index;\r\n indexAdjust += 7;\r\n break;\r\n case \"G\":\r\n case \"YYYY\":\r\n case \"YYY\":\r\n case \"YY\":\r\n case \"Y\":\r\n case \"MMMMM\":\r\n case \"W\":\r\n case \"EEEEE\":\r\n case \"EEEE\":\r\n case \"EEE\":\r\n case \"EE\":\r\n case \"E\":\r\n case \"eeeee\":\r\n case \"eeee\":\r\n case \"eee\":\r\n case \"ee\":\r\n case \"e\":\r\n case \"zzzz\":\r\n case \"zzz\":\r\n case \"zz\":\r\n case \"z\":\r\n case \"t\":\r\n // Ignore\r\n indexAdjust--;\r\n break;\r\n }\r\n reg += \"[^0-9]*\";\r\n }\r\n // Try matching\r\n let regex = new RegExp(reg);\r\n let matches = source.match(regex);\r\n if (matches) {\r\n // Populate the date object\r\n // Full year\r\n if (parsedIndexes.year > -1) {\r\n resValues.year = parseInt(matches[parsedIndexes.year]);\r\n }\r\n // 3-digit year\r\n if (parsedIndexes.year3 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year3]);\r\n val += 1000;\r\n resValues.year = val;\r\n }\r\n // 2-digit year\r\n if (parsedIndexes.year2 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year2]);\r\n if (val > 50) {\r\n val += 1000;\r\n }\r\n else {\r\n val += 2000;\r\n }\r\n resValues.year = val;\r\n }\r\n // 1-digit year\r\n if (parsedIndexes.year1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.year1]);\r\n val = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n resValues.year = val;\r\n }\r\n // Full month\r\n if (parsedIndexes.monthLong > -1) {\r\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\r\n }\r\n // Short month\r\n if (parsedIndexes.monthShort > -1) {\r\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\r\n }\r\n // Numeric month\r\n if (parsedIndexes.month > -1) {\r\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n }\r\n // Weekday\r\n // @todo\r\n // Week\r\n if ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n // We parse weeks ONLY if day is not explicitly set\r\n // TODO: this needs work\r\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n resValues.month = 0;\r\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this._root.utc);\r\n }\r\n // Day\r\n if (parsedIndexes.day > -1) {\r\n resValues.day = parseInt(matches[parsedIndexes.day]);\r\n }\r\n // Year day\r\n if (parsedIndexes.yearDay > -1) {\r\n resValues.month = 0;\r\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n }\r\n // 24 Hour (0-23)\r\n if (parsedIndexes.hourBase0 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n }\r\n // 24 Hour (1-24)\r\n if (parsedIndexes.hourBase1 > -1) {\r\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n }\r\n // 12 Hour (0-11)\r\n if (parsedIndexes.hour12Base0 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n if (val == 11) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // 12 Hour (1-12)\r\n if (parsedIndexes.hour12Base1 > -1) {\r\n let val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n if (val == 12) {\r\n val = 0;\r\n }\r\n if ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n val += 12;\r\n }\r\n resValues.hour = val;\r\n }\r\n // Minute\r\n if (parsedIndexes.minute > -1) {\r\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n }\r\n // Second\r\n if (parsedIndexes.second > -1) {\r\n resValues.second = parseInt(matches[parsedIndexes.second]);\r\n }\r\n // Millisecond\r\n if (parsedIndexes.millisecond > -1) {\r\n let val = parseInt(matches[parsedIndexes.millisecond]);\r\n if (parsedIndexes.millisecondDigits == 2) {\r\n val *= 10;\r\n }\r\n else if (parsedIndexes.millisecondDigits == 1) {\r\n val *= 100;\r\n }\r\n resValues.millisecond = val;\r\n }\r\n // Timestamp\r\n if (parsedIndexes.timestamp > -1) {\r\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n const ts = new Date(resValues.timestamp);\r\n resValues.year = ts.getUTCFullYear();\r\n resValues.month = ts.getUTCMonth();\r\n resValues.day = ts.getUTCDate();\r\n resValues.hour = ts.getUTCHours();\r\n resValues.minute = ts.getUTCMinutes();\r\n resValues.second = ts.getUTCSeconds();\r\n resValues.millisecond = ts.getUTCMilliseconds();\r\n }\r\n // Adjust time zone\r\n if (parsedIndexes.zone > -1) {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\r\n }\r\n // ISO\r\n if (parsedIndexes.iso > -1) {\r\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n resValues.utc = true;\r\n }\r\n else if (matches[parsedIndexes.iso + 7] != \"\") {\r\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\r\n }\r\n }\r\n // Create Date object\r\n if (resValues.utc) {\r\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\r\n }\r\n else {\r\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\r\n }\r\n }\r\n else {\r\n // Didn't match anything\r\n // Let's try dropping it into Date constructor and hope for the best\r\n res = new Date(source);\r\n }\r\n return res;\r\n }\r\n resolveTimezoneOffset(date, zone) {\r\n let value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n if (value) {\r\n let match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\r\n let dir = match[1];\r\n let hour = match[2];\r\n let minute = match[3];\r\n let offset = parseInt(hour) * 60 + parseInt(minute);\r\n // Adjust offset\r\n // Making it negative does not seem to make sense, but it's right\r\n // because of how JavaScript calculates GMT offsets\r\n if (dir == \"+\") {\r\n offset *= -1;\r\n }\r\n // Check the difference in offset\r\n let originalOffset = (date || new Date()).getTimezoneOffset();\r\n let diff = offset - originalOffset;\r\n return diff;\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\r\n resolveMonth(value) {\r\n // Let's try English first\r\n let month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (!this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._months()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\r\n resolveShortMonth(value) {\r\n // Let's try English first\r\n let month = this._shortMonths().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Maybe long month (workaround for May)\r\n month = this._months().indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n // Try the translation\r\n if (this._root.language && !this._root.language.isDefault()) {\r\n month = this._root.language.translateAll(this._shortMonths()).indexOf(value);\r\n if (month > -1) {\r\n return month;\r\n }\r\n }\r\n return 0;\r\n }\r\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\r\n isAm(value) {\r\n let list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n return list.indexOf(value.toUpperCase()) > -1;\r\n }\r\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\r\n getStringList(list) {\r\n let res = [];\r\n for (let i = 0; i < list.length; i++) {\r\n // translate?\r\n if (this._root.language) {\r\n res.push($utils.escapeForRgex(this._t(list[i])));\r\n }\r\n else {\r\n res.push($utils.escapeForRgex(list[i]));\r\n }\r\n }\r\n return res;\r\n }\r\n}\r\n//# sourceMappingURL=DateFormatter.js.map","import { Graphics } from \"./Graphics\";\r\n/**\r\n * Draws a rectangle.\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 Rectangle extends Graphics {\r\n _afterNew() {\r\n super._afterNew();\r\n this._display.isMeasured = true;\r\n this.setPrivateRaw(\"trustBounds\", true);\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\") || 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 && !this.get(\"draw\")) {\r\n this._draw();\r\n }\r\n }\r\n _draw() {\r\n this._display.drawRect(0, 0, this.width(), this.height());\r\n }\r\n _updateSize() {\r\n this.markDirty();\r\n this._clear = true;\r\n }\r\n}\r\nObject.defineProperty(Rectangle, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Rectangle\"\r\n});\r\nObject.defineProperty(Rectangle, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Graphics.classNames.concat([Rectangle.className])\r\n});\r\n//# sourceMappingURL=Rectangle.js.map","import { __awaiter } from \"tslib\";\r\nimport { Entity } from \"../util/Entity\";\r\nimport { Template } from \"../util/Template\";\r\nimport { Percent } from \"../util/Percent\";\r\nimport { EventDispatcher } from \"../util/EventDispatcher\";\r\nimport { MultiDisposer, CounterDisposer } from \"../util/Disposer\";\r\nimport { waitForAnimations } from \"../util/Animation\";\r\nimport * as $utils from \"../util/Utils\";\r\nimport * as $array from \"../util/Array\";\r\nimport * as $type from \"../util/Type\";\r\nimport * as $object from \"../util/Object\";\r\nimport * as $math from \"../util/Math\";\r\n//import { populateString } from \"../util/PopulateString\";\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nclass SpriteEventDispatcher extends EventDispatcher {\r\n constructor(sprite) {\r\n super();\r\n Object.defineProperty(this, \"_sprite\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_rendererDisposers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_dispatchParents\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n this._sprite = sprite;\r\n }\r\n _makePointerEvent(key, event) {\r\n return {\r\n type: key,\r\n originalEvent: event.event,\r\n point: event.point,\r\n simulated: event.simulated,\r\n native: event.native,\r\n target: this._sprite\r\n };\r\n }\r\n _onRenderer(key, dispatch) {\r\n // TODO: is this OK? it'd be good not to require to set this on each individual element\r\n this._sprite.set(\"interactive\", true);\r\n this._sprite._display.interactive = true;\r\n let events = this._rendererDisposers[key];\r\n if (events === undefined) {\r\n const disposer = this._sprite._display.on(key, (e) => {\r\n dispatch.call(this, e);\r\n });\r\n events = this._rendererDisposers[key] = new CounterDisposer(() => {\r\n delete this._rendererDisposers[key];\r\n disposer.dispose();\r\n });\r\n }\r\n return events.increment();\r\n }\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n const info = super._on(once, type, callback, context, shouldClone, dispatch);\r\n const rendererEvent = SpriteEventDispatcher.RENDERER_EVENTS[type];\r\n if (rendererEvent !== undefined) {\r\n info.disposer = new MultiDisposer([\r\n info.disposer,\r\n this._onRenderer(type, rendererEvent),\r\n ]);\r\n }\r\n return info;\r\n }\r\n /**\r\n * Will stop any bubbling up of the event to element's parents.\r\n *\r\n * Should be called in an event handler, e.g.:\r\n *\r\n * ```TypeScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n */\r\n stopParentDispatch() {\r\n this._dispatchParents = false;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n dispatchParents(type, event) {\r\n const old = this._dispatchParents;\r\n this._dispatchParents = true;\r\n try {\r\n this.dispatch(type, event);\r\n if (this._dispatchParents && this._sprite.parent) {\r\n this._sprite.parent.events.dispatchParents(type, event);\r\n }\r\n }\r\n finally {\r\n this._dispatchParents = old;\r\n }\r\n }\r\n}\r\nObject.defineProperty(SpriteEventDispatcher, \"RENDERER_EVENTS\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {\r\n \"click\": function (event) {\r\n if (this.isEnabled(\"click\") && !this._sprite.isDragging() && this._sprite._hasDown() && !this._sprite._hasMoved(this._makePointerEvent(\"click\", event))) {\r\n this.dispatch(\"click\", this._makePointerEvent(\"click\", event));\r\n }\r\n },\r\n \"rightclick\": function (event) {\r\n if (this.isEnabled(\"rightclick\")) {\r\n this.dispatch(\"rightclick\", this._makePointerEvent(\"rightclick\", event));\r\n }\r\n },\r\n \"middleclick\": function (event) {\r\n if (this.isEnabled(\"middleclick\")) {\r\n this.dispatch(\"middleclick\", this._makePointerEvent(\"middleclick\", event));\r\n }\r\n },\r\n \"dblclick\": function (event) {\r\n this.dispatchParents(\"dblclick\", this._makePointerEvent(\"dblclick\", event));\r\n },\r\n \"pointerover\": function (event) {\r\n const sprite = this._sprite;\r\n let dispatch = true;\r\n if (sprite.getPrivate(\"trustBounds\")) {\r\n sprite._getBounds();\r\n const bounds = sprite.globalBounds();\r\n if (sprite.isType(\"Graphics\")) {\r\n const strokeWidth = sprite.get(\"strokeWidth\", 1) / 2;\r\n if (strokeWidth >= 1) {\r\n bounds.left -= strokeWidth;\r\n bounds.right += strokeWidth;\r\n bounds.top -= strokeWidth;\r\n bounds.bottom += strokeWidth;\r\n }\r\n }\r\n if (!$math.inBounds(event.point, bounds)) {\r\n dispatch = false;\r\n sprite._root._renderer.removeHovering(sprite._display);\r\n }\r\n }\r\n if (dispatch && this.isEnabled(\"pointerover\")) {\r\n this.dispatch(\"pointerover\", this._makePointerEvent(\"pointerover\", event));\r\n }\r\n },\r\n \"pointerout\": function (event) {\r\n if (this.isEnabled(\"pointerout\")) {\r\n this.dispatch(\"pointerout\", this._makePointerEvent(\"pointerout\", event));\r\n }\r\n },\r\n \"pointerdown\": function (event) {\r\n this.dispatchParents(\"pointerdown\", this._makePointerEvent(\"pointerdown\", event));\r\n },\r\n \"pointerup\": function (event) {\r\n if (this.isEnabled(\"pointerup\")) {\r\n this.dispatch(\"pointerup\", this._makePointerEvent(\"pointerup\", event));\r\n }\r\n },\r\n \"globalpointerup\": function (event) {\r\n if (this.isEnabled(\"globalpointerup\")) {\r\n this.dispatch(\"globalpointerup\", this._makePointerEvent(\"globalpointerup\", event));\r\n }\r\n },\r\n \"globalpointermove\": function (event) {\r\n if (this.isEnabled(\"globalpointermove\")) {\r\n this.dispatch(\"globalpointermove\", this._makePointerEvent(\"globalpointermove\", event));\r\n }\r\n },\r\n \"wheel\": function (event) {\r\n this.dispatchParents(\"wheel\", {\r\n type: \"wheel\",\r\n target: this._sprite,\r\n originalEvent: event.event,\r\n point: event.point,\r\n });\r\n },\r\n }\r\n});\r\n/**\r\n * A base class for all visual elements.\r\n *\r\n * @important\r\n */\r\nexport class Sprite extends Entity {\r\n constructor() {\r\n super(...arguments);\r\n Object.defineProperty(this, \"_adjustedLocalBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: { left: 0, right: 0, top: 0, bottom: 0 }\r\n });\r\n Object.defineProperty(this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dataItem\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_templateField\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_sizeDirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // Will be true only when dragging\r\n Object.defineProperty(this, \"_isDragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // The event when the dragging starts\r\n Object.defineProperty(this, \"_dragEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // The position when dragging starts\r\n Object.defineProperty(this, \"_dragPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_isHidden\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isShowing\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isHiding\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_isDown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"_downPoint\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_downPoints\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(this, \"_toggleDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_dragDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_hoverDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_focusDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipMoveDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_tooltipPointerDp\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_statesHandled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n _afterNew() {\r\n this.setPrivateRaw(\"visible\", true);\r\n super._afterNew();\r\n }\r\n /**\r\n * Marks some setting as dirty. Could be used to trigger adapter.\r\n * @param key\r\n */\r\n markDirtyKey(key) {\r\n this._markDirtyKey(key);\r\n }\r\n _markDirtyKey(key) {\r\n super._markDirtyKey(key);\r\n if (key == \"x\" || key == \"y\" || key == \"dx\" || key == \"dy\") {\r\n this.markDirtyBounds();\r\n this._addPercentagePositionChildren();\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _markDirtyPrivateKey(key) {\r\n super._markDirtyPrivateKey(key);\r\n if (key == \"x\" || key == \"y\") {\r\n this.markDirtyPosition();\r\n }\r\n }\r\n _removeTemplateField() {\r\n if (this._templateField) {\r\n this._templateField._removeObjectTemplate(this);\r\n }\r\n }\r\n _createEvents() {\r\n return new SpriteEventDispatcher(this);\r\n }\r\n _processTemplateField() {\r\n let template;\r\n const field = this.get(\"templateField\");\r\n if (field) {\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n const context = dataItem.dataContext;\r\n if (context) {\r\n template = context[field];\r\n if (!(template instanceof Template) && template) {\r\n template = Template.new(template);\r\n }\r\n }\r\n }\r\n }\r\n if (this._templateField !== template) {\r\n this._removeTemplateField();\r\n this._templateField = template;\r\n if (template) {\r\n template._setObjectTemplate(this);\r\n }\r\n this._applyTemplates();\r\n }\r\n }\r\n // TODO change this to run before the element is added to the parent, so that way\r\n // it doesn't need to apply the themes twice\r\n _setDataItem(dataItem) {\r\n const oldDataItem = this._dataItem;\r\n this._dataItem = dataItem;\r\n this._processTemplateField();\r\n const eventType = \"dataitemchanged\";\r\n if (dataItem != oldDataItem) {\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, {\r\n type: eventType,\r\n target: this,\r\n oldDataItem: oldDataItem,\r\n newDataItem: dataItem\r\n });\r\n }\r\n }\r\n }\r\n /**\r\n * A [[DataItem]] used for this element.\r\n *\r\n * NOTE: data item is being assigned automatically in most cases where it\r\n * matters. Use this accessor to set data item only if you know what you're\r\n * doing.\r\n *\r\n * @param value Data item\r\n */\r\n set dataItem(value) {\r\n this._setDataItem(value);\r\n }\r\n /**\r\n * @return DataItem\r\n */\r\n get dataItem() {\r\n if (this._dataItem) {\r\n return this._dataItem;\r\n }\r\n else {\r\n let parent = this._parent;\r\n while (parent) {\r\n if (parent._dataItem) {\r\n return parent._dataItem;\r\n }\r\n else {\r\n parent = parent._parent;\r\n }\r\n }\r\n }\r\n }\r\n _addPercentageSizeChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"width\") instanceof Percent || this.get(\"height\") instanceof Percent) {\r\n $array.pushOne(parent._percentageSizeChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n }\r\n }\r\n }\r\n _addPercentagePositionChildren() {\r\n let parent = this.parent;\r\n if (parent) {\r\n if (this.get(\"x\") instanceof Percent || this.get(\"y\") instanceof Percent) {\r\n $array.pushOne(parent._percentagePositionChildren, this);\r\n }\r\n else {\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyPosition() {\r\n this._root._addDirtyPosition(this);\r\n }\r\n updatePivotPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n const centerX = this.get(\"centerX\");\r\n if (centerX != null) {\r\n this._display.pivot.x = bounds.left + $utils.relativeToValue(centerX, bounds.right - bounds.left);\r\n }\r\n const centerY = this.get(\"centerY\");\r\n if (centerY != null) {\r\n this._display.pivot.y = bounds.top + $utils.relativeToValue(centerY, bounds.bottom - bounds.top);\r\n }\r\n }\r\n }\r\n _beforeChanged() {\r\n super._beforeChanged();\r\n // handling states in beforeChanged, otherwise states is not applied without animated theme\r\n this._handleStates();\r\n if (this.isDirty(\"tooltip\")) {\r\n const previous = this._prevSettings.tooltip;\r\n if (previous) {\r\n previous.dispose();\r\n }\r\n }\r\n if (this.isDirty(\"layer\") || this.isDirty(\"layerMargin\")) {\r\n this._display.setLayer(this.get(\"layer\"), this.get(\"layerMargin\"));\r\n this.markDirtyLayer();\r\n }\r\n if (this.isDirty(\"tooltipPosition\")) {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n const tooltipPointerDp = this._tooltipPointerDp;\r\n if (tooltipPointerDp) {\r\n tooltipPointerDp.dispose();\r\n this._tooltipPointerDp = undefined;\r\n }\r\n if (this.get(\"tooltipPosition\") == \"pointer\") {\r\n if (this.isHover()) {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }\r\n this._tooltipPointerDp = new MultiDisposer([\r\n this.events.on(\"pointerover\", () => {\r\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", (e) => {\r\n this.showTooltip(e.point);\r\n });\r\n }),\r\n this.events.on(\"pointerout\", () => {\r\n const tooltipMoveDp = this._tooltipMoveDp;\r\n if (tooltipMoveDp) {\r\n tooltipMoveDp.dispose();\r\n this._tooltipMoveDp = undefined;\r\n }\r\n })\r\n ]);\r\n }\r\n }\r\n }\r\n _handleStates() {\r\n if (!this._statesHandled) {\r\n if (this.isDirty(\"active\")) {\r\n if (this.get(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n this.set(\"ariaChecked\", true);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", false);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"disabled\")) {\r\n if (this.get(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n this.set(\"ariaChecked\", false);\r\n }\r\n else {\r\n if (!this.isHidden()) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n this.set(\"ariaChecked\", true);\r\n }\r\n this.markDirtyAccessibility();\r\n }\r\n this._statesHandled = true;\r\n }\r\n }\r\n _changed() {\r\n super._changed();\r\n const display = this._display;\r\n const events = this.events;\r\n if (this.isDirty(\"draggable\")) {\r\n const draggable = this.get(\"draggable\");\r\n if (draggable) {\r\n this.set(\"interactive\", true);\r\n this._dragDp = new MultiDisposer([\r\n events.on(\"pointerdown\", (ev) => {\r\n this.dragStart(ev);\r\n }),\r\n events.on(\"globalpointermove\", (ev) => {\r\n this.dragMove(ev);\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n this.dragStop(ev);\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._dragDp) {\r\n this._dragDp.dispose();\r\n this._dragDp = undefined;\r\n }\r\n }\r\n display.cancelTouch = draggable ? true : false;\r\n }\r\n if (this.isDirty(\"tooltipText\") || this.isDirty(\"tooltipHTML\") || this.isDirty(\"showTooltipOn\")) {\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n const showTooltipOn = this.get(\"showTooltipOn\", \"hover\");\r\n if (this._tooltipDp) {\r\n this._tooltipDp.dispose();\r\n this._tooltipDp = undefined;\r\n }\r\n if (tooltipText || tooltipHTML) {\r\n if (showTooltipOn == \"click\") {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"click\", () => {\r\n this.setTimeout(() => {\r\n const tooltip = this.getTooltip();\r\n if (tooltip && !tooltip.isHidden() && tooltip.get(\"tooltipTarget\") === this) {\r\n this.hideTooltip();\r\n }\r\n else {\r\n this.showTooltip();\r\n }\r\n }, 10);\r\n }),\r\n $utils.addEventListener(document, \"click\", (_ev) => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n else if (showTooltipOn == \"always\") {\r\n // nothing\r\n }\r\n else {\r\n this._tooltipDp = new MultiDisposer([\r\n events.on(\"pointerover\", () => {\r\n this.showTooltip();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this.hideTooltip();\r\n })\r\n ]);\r\n this._disposers.push(this._tooltipDp);\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"toggleKey\")) {\r\n let toggleKey = this.get(\"toggleKey\");\r\n if (toggleKey && toggleKey != \"none\") {\r\n this._toggleDp = events.on(\"click\", () => {\r\n if (!this._isDragging) {\r\n this.set(toggleKey, !this.get(toggleKey));\r\n }\r\n });\r\n }\r\n else {\r\n if (this._toggleDp) {\r\n this._toggleDp.dispose();\r\n this._toggleDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"opacity\")) {\r\n display.alpha = Math.max(0, this.get(\"opacity\", 1));\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"rotation\")) {\r\n this.markDirtyBounds();\r\n display.angle = this.get(\"rotation\", 0);\r\n }\r\n if (this.isDirty(\"scale\")) {\r\n this.markDirtyBounds();\r\n display.scale = this.get(\"scale\", 0);\r\n }\r\n if (this.isDirty(\"centerX\") || this.isDirty(\"centerY\")) {\r\n this.markDirtyBounds();\r\n this.updatePivotPoint();\r\n }\r\n if (this.isDirty(\"visible\") || this.isPrivateDirty(\"visible\") || this.isDirty(\"forceHidden\")) {\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n display.visible = false;\r\n this.hideTooltip();\r\n }\r\n else {\r\n display.visible = true;\r\n }\r\n this.markDirtyBounds();\r\n if (this.get(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n if (this.isDirty(\"width\") || this.isDirty(\"height\")) {\r\n this.markDirtyBounds();\r\n this._addPercentageSizeChildren();\r\n const parent = this.parent;\r\n if (parent) {\r\n if ((this.isDirty(\"width\") && this.get(\"width\") instanceof Percent) || (this.isDirty(\"height\") && this.get(\"height\") instanceof Percent)) {\r\n parent.markDirty();\r\n parent._prevWidth = 0;\r\n }\r\n }\r\n this._sizeDirty = true;\r\n }\r\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"minWidth\") || this.isDirty(\"minHeight\") || this.isPrivateDirty(\"maxWidth\") || this.isPrivateDirty(\"maxHeight\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\") || this.isDirty(\"marginLeft\") || this.isDirty(\"marginTop\") || this.isDirty(\"marginRight\") || this.isDirty(\"marginBottom\")) {\r\n this.markDirtyBounds();\r\n this._sizeDirty = true;\r\n }\r\n if (this._sizeDirty) {\r\n this._updateSize();\r\n }\r\n if (this.isDirty(\"wheelable\")) {\r\n const wheelable = this.get(\"wheelable\");\r\n if (wheelable) {\r\n this.set(\"interactive\", true);\r\n }\r\n display.wheelable = wheelable ? true : false;\r\n }\r\n // Accessibility\r\n if (this.isDirty(\"tabindexOrder\") || this.isDirty(\"focusableGroup\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n }\r\n if (this.isDirty(\"filter\")) {\r\n //this.markDirtyBounds();\r\n display.filter = this.get(\"filter\");\r\n }\r\n let filter = this.get(\"filter\", \"\");\r\n if (this.isDirty(\"blur\")) {\r\n const blur = this.get(\"blur\", 0);\r\n if (blur != 0) {\r\n filter += \" blur(\" + blur + \"px)\";\r\n }\r\n }\r\n if (this.isDirty(\"saturate\")) {\r\n const saturate = this.get(\"saturate\", 1);\r\n if (saturate != 1) {\r\n filter += \" saturate(\" + saturate + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"brightness\")) {\r\n const brightness = this.get(\"brightness\", 1);\r\n if (brightness != 1) {\r\n filter += \" brightness(\" + brightness + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"contrast\")) {\r\n const contrast = this.get(\"contrast\", 1);\r\n if (contrast != 1) {\r\n filter += \" contrast(\" + contrast + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"sepia\")) {\r\n const sepia = this.get(\"sepia\", 0);\r\n if (sepia != 0) {\r\n filter += \" sepia(\" + sepia + \")\";\r\n }\r\n }\r\n if (this.isDirty(\"hue\")) {\r\n const hue = this.get(\"hue\", 0);\r\n if (hue != 0) {\r\n filter += \" hue-rotate(\" + hue + \"deg)\";\r\n }\r\n }\r\n if (this.isDirty(\"invert\")) {\r\n const invert = this.get(\"invert\", 0);\r\n if (invert != 0) {\r\n filter += \" invert(\" + invert + \")\";\r\n }\r\n }\r\n if (filter) {\r\n display.filter = filter;\r\n }\r\n if (this.isDirty(\"cursorOverStyle\")) {\r\n display.cursorOverStyle = this.get(\"cursorOverStyle\");\r\n }\r\n if (this.isDirty(\"hoverOnFocus\")) {\r\n if (this.get(\"hoverOnFocus\")) {\r\n this._focusDp = new MultiDisposer([\r\n events.on(\"focus\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.showTooltip();\r\n }),\r\n events.on(\"blur\", () => {\r\n // TODO: proper hover, not just tooltip\r\n this.hideTooltip();\r\n })\r\n ]);\r\n }\r\n else {\r\n if (this._focusDp) {\r\n this._focusDp.dispose();\r\n this._focusDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"focusable\")) {\r\n if (this.get(\"focusable\")) {\r\n this._root._registerTabindexOrder(this);\r\n }\r\n else {\r\n this._root._unregisterTabindexOrder(this);\r\n }\r\n this.markDirtyAccessibility();\r\n this._disposers.push(events.on(\"blur\", () => {\r\n this.setPrivateRaw(\"touchHovering\", false);\r\n }));\r\n }\r\n if (this.isPrivateDirty(\"focusable\")) {\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"role\") || this.isDirty(\"ariaLive\") || this.isDirty(\"ariaChecked\") || this.isDirty(\"ariaHidden\") || this.isDirty(\"ariaOrientation\") || this.isDirty(\"ariaValueNow\") || this.isDirty(\"ariaValueMin\") || this.isDirty(\"ariaValueMax\") || this.isDirty(\"ariaValueText\") || this.isDirty(\"ariaLabel\") || this.isDirty(\"ariaControls\")) {\r\n // display.accessibility.ariaLabel = populateString(this, this.get(\"ariaLabel\", \"\"));\r\n // @todo make sure ariaLabel gets populated in Root\r\n this.markDirtyAccessibility();\r\n }\r\n if (this.isDirty(\"exportable\")) {\r\n display.exportable = this.get(\"exportable\");\r\n }\r\n if (this.isDirty(\"interactive\")) {\r\n const events = this.events;\r\n if (this.get(\"interactive\") && !events.isDisposed()) {\r\n this._hoverDp = new MultiDisposer([\r\n events.on(\"click\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (!this.getPrivate(\"touchHovering\")) {\r\n this.setTimeout(() => {\r\n this._handleOver();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.showTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", true);\r\n this.events.dispatch(\"pointerover\", {\r\n type: \"pointerover\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }, 10);\r\n }\r\n }\r\n }),\r\n events.on(\"globalpointerup\", (ev) => {\r\n if ($utils.isTouchEvent(ev.originalEvent)) {\r\n if (this.getPrivate(\"touchHovering\")) {\r\n this._handleOut();\r\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\r\n this.hideTooltip();\r\n }\r\n this.setPrivateRaw(\"touchHovering\", false);\r\n this.events.dispatch(\"pointerout\", {\r\n type: \"pointerout\",\r\n target: ev.target,\r\n originalEvent: ev.originalEvent,\r\n point: ev.point,\r\n simulated: ev.simulated\r\n });\r\n }\r\n }\r\n if (this._isDown) {\r\n this._handleUp(ev);\r\n }\r\n //this._isDown = false;\r\n }),\r\n events.on(\"pointerover\", () => {\r\n this._handleOver();\r\n }),\r\n events.on(\"pointerout\", () => {\r\n this._handleOut();\r\n }),\r\n events.on(\"pointerdown\", (e) => {\r\n this._handleDown(e);\r\n })\r\n ]);\r\n }\r\n else {\r\n this._display.interactive = false;\r\n if (this._hoverDp) {\r\n this._hoverDp.dispose();\r\n this._hoverDp = undefined;\r\n }\r\n }\r\n }\r\n if (this.isDirty(\"forceInactive\")) {\r\n this._display.inactive = this.get(\"forceInactive\", null);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && this._display.visible) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStart(e) {\r\n this._dragEvent = e;\r\n this.events.stopParentDispatch();\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragStop(e) {\r\n this._dragEvent = undefined;\r\n this._dragPoint = undefined;\r\n this.events.stopParentDispatch();\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n const type = \"dragstop\";\r\n if (this.events.isEnabled(type)) {\r\n this.events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n }\r\n _handleOver() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"hoverActive\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"hoverDisabled\")) {\r\n this.states.applyAnimate(\"hoverDisabled\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleOut() {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else {\r\n if (this.states.lookup(\"hover\") || this.states.lookup(\"hoverActive\")) {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n }\r\n }\r\n _handleUp(e) {\r\n if (!this.isHidden()) {\r\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\r\n this.states.applyAnimate(\"active\");\r\n }\r\n else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\r\n this.states.applyAnimate(\"disabled\");\r\n }\r\n else if (this.states.lookup(\"down\")) {\r\n if (this.isHover()) {\r\n this.states.applyAnimate(\"hover\");\r\n }\r\n else {\r\n this.states.applyAnimate(\"default\");\r\n }\r\n }\r\n // @todo remove this once migrated to _downPoints\r\n this._downPoint = undefined;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n delete this._downPoints[pointerId];\r\n if ($object.keys(this._downPoints).length == 0) {\r\n this._isDown = false;\r\n }\r\n }\r\n }\r\n _hasMoved(e) {\r\n // @todo remove this once migrated to _downPoints\r\n // if (this._downPoint) {\r\n // \tconst x = Math.abs(this._downPoint.x - e.point.x);\r\n // \tconst y = Math.abs(this._downPoint.y - e.point.y);\r\n // \treturn (x > 5) || (y > 5);\r\n // }\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n const downPoint = this._downPoints[pointerId];\r\n if (downPoint) {\r\n const x = Math.abs(downPoint.x - e.point.x);\r\n const y = Math.abs(downPoint.y - e.point.y);\r\n return (x > 5) || (y > 5);\r\n }\r\n return false;\r\n }\r\n _hasDown() {\r\n return $object.keys(this._downPoints).length > 0;\r\n }\r\n _handleDown(e) {\r\n const parent = this.parent;\r\n if (parent && !this.get(\"draggable\")) {\r\n parent._handleDown(e);\r\n }\r\n if (this.get(\"interactive\") && !this.isHidden()) {\r\n if (this.states.lookup(\"down\")) {\r\n this.states.applyAnimate(\"down\");\r\n }\r\n this._downPoint = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n // @todo remove this once migrated to _downPoints\r\n this._isDown = true;\r\n const pointerId = $utils.getPointerId(e.originalEvent);\r\n this._downPoints[pointerId] = {\r\n x: e.point.x,\r\n y: e.point.y\r\n };\r\n }\r\n }\r\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\r\n dragMove(e) {\r\n let dragEvent = this._dragEvent;\r\n if (dragEvent) {\r\n if (dragEvent.simulated && !e.simulated) {\r\n return true;\r\n }\r\n let angle = 0;\r\n let parent = this.parent;\r\n let scale = 1;\r\n while (parent != null) {\r\n angle += parent.get(\"rotation\", 0);\r\n parent = parent.parent;\r\n if (parent) {\r\n scale *= parent.get(\"scale\", 1);\r\n }\r\n }\r\n let x = (e.point.x - dragEvent.point.x) / scale;\r\n let y = (e.point.y - dragEvent.point.y) / scale;\r\n const events = this.events;\r\n if (dragEvent.simulated && !this._isDragging) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n if (this._isDragging) {\r\n let dragPoint = this._dragPoint;\r\n this.set(\"x\", dragPoint.x + x * $math.cos(angle) + y * $math.sin(angle));\r\n this.set(\"y\", dragPoint.y + y * $math.cos(angle) - x * $math.sin(angle));\r\n const type = \"dragged\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated,\r\n });\r\n }\r\n }\r\n else {\r\n if (Math.hypot(x, y) > 5) {\r\n this._isDragging = true;\r\n this._dragEvent = e;\r\n this._dragPoint = {\r\n x: this.x(),\r\n y: this.y()\r\n };\r\n const type = \"dragstart\";\r\n if (events.isEnabled(type)) {\r\n events.dispatch(type, {\r\n type: type,\r\n target: this,\r\n originalEvent: e.originalEvent,\r\n point: e.point,\r\n simulated: e.simulated\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _updateSize() {\r\n }\r\n _getBounds() {\r\n this._localBounds = this._display.getLocalBounds();\r\n }\r\n /**\r\n * Returns depth (how deep in the hierachy of the content tree) of this\r\n * element.\r\n *\r\n * @return Depth\r\n */\r\n depth() {\r\n let self = this.parent;\r\n let depth = 0;\r\n while (true) {\r\n if (self) {\r\n ++depth;\r\n self = self.parent;\r\n }\r\n else {\r\n return depth;\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtySize() {\r\n this._sizeDirty = true;\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyBounds() {\r\n const display = this._display;\r\n if (this.get(\"isMeasured\")) {\r\n this._root._addDirtyBounds(this);\r\n display.isMeasured = true;\r\n display.invalidateBounds();\r\n const parent = this.parent;\r\n if (parent && this.get(\"position\") != \"absolute\") {\r\n if (parent.get(\"width\") == null || parent.get(\"height\") == null || parent.get(\"layout\")) {\r\n parent.markDirtyBounds();\r\n }\r\n }\r\n if (this.get(\"focusable\") && this.isFocus()) {\r\n this.markDirtyAccessibility();\r\n }\r\n }\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyAccessibility() {\r\n //if (this._root.focused(this)) {\r\n this._root._invalidateAccessibility(this);\r\n //}\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirtyLayer() {\r\n //this._display.markDirtyLayer(this.isDirty(\"opacity\") || this.isDirty(\"visible\")); https://codepen.io/team/amcharts/pen/gOWZPmP <- problems\r\n this._display.markDirtyLayer(true);\r\n }\r\n /**\r\n * @ignore\r\n */\r\n markDirty() {\r\n super.markDirty();\r\n this.markDirtyLayer();\r\n }\r\n _updateBounds() {\r\n const oldBounds = this._adjustedLocalBounds;\r\n let newBounds;\r\n // if display.visible == false, it still returns bounds\r\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\r\n newBounds = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n };\r\n this._localBounds = newBounds;\r\n this._adjustedLocalBounds = newBounds;\r\n }\r\n else {\r\n this._getBounds();\r\n this._fixMinBounds(this._localBounds);\r\n this.updatePivotPoint();\r\n this._adjustedLocalBounds = this._display.getAdjustedBounds(this._localBounds);\r\n newBounds = this._adjustedLocalBounds;\r\n }\r\n if (!oldBounds || (oldBounds.left !== newBounds.left || oldBounds.top !== newBounds.top || oldBounds.right !== newBounds.right || oldBounds.bottom !== newBounds.bottom)) {\r\n const eventType = \"boundschanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n if (this.parent) {\r\n this.parent.markDirty();\r\n this.parent.markDirtyBounds();\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n }\r\n _fixMinBounds(bounds) {\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n if ($type.isNumber(minWidth)) {\r\n if (bounds.right - bounds.left < minWidth) {\r\n bounds.right = bounds.left + minWidth;\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n if (bounds.bottom - bounds.top < minHeight) {\r\n bounds.bottom = bounds.top + minHeight;\r\n }\r\n }\r\n let privateWidth = this.getPrivate(\"width\");\r\n let privateHeight = this.getPrivate(\"height\");\r\n if ($type.isNumber(privateWidth)) {\r\n if (privateWidth > 0) {\r\n bounds.right = bounds.left + privateWidth;\r\n }\r\n else {\r\n bounds.left = bounds.right + privateWidth;\r\n }\r\n }\r\n if ($type.isNumber(privateHeight)) {\r\n if (privateHeight > 0) {\r\n bounds.bottom = bounds.top + privateHeight;\r\n }\r\n else {\r\n bounds.top = bounds.bottom + privateHeight;\r\n }\r\n }\r\n }\r\n _removeParent(parent) {\r\n if (parent) {\r\n parent.children.removeValue(this);\r\n $array.removeFirst(parent._percentageSizeChildren, this);\r\n $array.removeFirst(parent._percentagePositionChildren, this);\r\n }\r\n }\r\n _clearDirty() {\r\n super._clearDirty();\r\n this._sizeDirty = false;\r\n this._statesHandled = false;\r\n }\r\n /**\r\n * Simulate hover over element.\r\n */\r\n hover() {\r\n if (!this.isDisposed()) {\r\n this.showTooltip();\r\n this._handleOver();\r\n }\r\n }\r\n /**\r\n * Simulate unhover over element.\r\n */\r\n unhover() {\r\n if (!this.isDisposed()) {\r\n this.hideTooltip();\r\n this._handleOut();\r\n }\r\n }\r\n /**\r\n * Shows element's [[Tooltip]].\r\n */\r\n showTooltip(point) {\r\n if (!this.isDisposed()) {\r\n const tooltip = this.getTooltip();\r\n const tooltipText = this.get(\"tooltipText\");\r\n const tooltipHTML = this.get(\"tooltipHTML\");\r\n if ((tooltipText || tooltipHTML) && tooltip) {\r\n const tooltipPosition = this.get(\"tooltipPosition\");\r\n const tooltipTarget = this.getPrivate(\"tooltipTarget\", this);\r\n if (tooltipPosition == \"fixed\" || !point) {\r\n this._display._setMatrix();\r\n point = this.toGlobal(tooltipTarget._getTooltipPoint());\r\n }\r\n tooltip.set(\"pointTo\", point);\r\n tooltip.set(\"tooltipTarget\", tooltipTarget);\r\n if (!tooltip.get(\"x\")) {\r\n tooltip.set(\"x\", point.x);\r\n }\r\n if (!tooltip.get(\"y\")) {\r\n tooltip.set(\"y\", point.y);\r\n }\r\n if (tooltipText) {\r\n tooltip.label.set(\"text\", tooltipText);\r\n }\r\n if (tooltipHTML) {\r\n tooltip.label.set(\"html\", tooltipHTML);\r\n }\r\n const dataItem = this.dataItem;\r\n if (dataItem) {\r\n tooltip.label._setDataItem(dataItem);\r\n }\r\n if (this.get(\"showTooltipOn\") == \"always\" && (point.x < 0 || point.x > this._root.width() || point.y < 0 || point.y > this._root.height())) {\r\n this.hideTooltip();\r\n return;\r\n }\r\n tooltip.label.text.markDirtyText();\r\n const promise = tooltip.show();\r\n this.setPrivateRaw(\"showingTooltip\", true);\r\n return promise;\r\n }\r\n }\r\n }\r\n /**\r\n * Hides element's [[Tooltip]].\r\n */\r\n hideTooltip() {\r\n const tooltip = this.getTooltip();\r\n if (tooltip) {\r\n if (tooltip.get(\"tooltipTarget\") == this.getPrivate(\"tooltipTarget\", this) || this.get(\"tooltip\") == tooltip) {\r\n let timeout = tooltip.get(\"keepTargetHover\") && tooltip.get(\"stateAnimationDuration\", 0) == 0 ? 400 : undefined;\r\n const promise = tooltip.hide(timeout);\r\n this.setPrivateRaw(\"showingTooltip\", false);\r\n return promise;\r\n }\r\n }\r\n }\r\n _getTooltipPoint() {\r\n const bounds = this._localBounds;\r\n if (bounds) {\r\n let x = 0;\r\n let y = 0;\r\n if (!this.get(\"isMeasured\")) {\r\n x = $utils.relativeToValue(this.get(\"tooltipX\", 0), this.width());\r\n y = $utils.relativeToValue(this.get(\"tooltipY\", 0), this.height());\r\n }\r\n else {\r\n x = bounds.left + $utils.relativeToValue(this.get(\"tooltipX\", 0), bounds.right - bounds.left);\r\n y = bounds.top + $utils.relativeToValue(this.get(\"tooltipY\", 0), bounds.bottom - bounds.top);\r\n }\r\n return { x, y };\r\n }\r\n return { x: 0, y: 0 };\r\n }\r\n /**\r\n * Returns [[Tooltip]] used for this element.\r\n *\r\n * @return Tooltip\r\n */\r\n getTooltip() {\r\n let tooltip = this.get(\"tooltip\");\r\n if (!tooltip) {\r\n let parent = this.parent;\r\n if (parent) {\r\n return parent.getTooltip();\r\n }\r\n }\r\n else {\r\n return tooltip;\r\n }\r\n }\r\n _updatePosition() {\r\n const parent = this.parent;\r\n let dx = this.get(\"dx\", 0);\r\n let dy = this.get(\"dy\", 0);\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n let xx = 0;\r\n let yy = 0;\r\n const position = this.get(\"position\");\r\n if (x instanceof Percent) {\r\n if (parent) {\r\n x = parent.innerWidth() * x.value + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n x = 0;\r\n }\r\n }\r\n if ($type.isNumber(x)) {\r\n xx = x + dx;\r\n }\r\n else {\r\n if (_x != null) {\r\n xx = _x;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n xx = parent.get(\"paddingLeft\", 0) + dx;\r\n }\r\n }\r\n }\r\n let y = this.get(\"y\");\r\n let _y = this.getPrivate(\"y\");\r\n if (y instanceof Percent) {\r\n if (parent) {\r\n y = parent.innerHeight() * y.value + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n y = 0;\r\n }\r\n }\r\n if ($type.isNumber(y)) {\r\n yy = y + dy;\r\n }\r\n else {\r\n if (_y != null) {\r\n yy = _y;\r\n }\r\n else if (parent) {\r\n if (position == \"relative\") {\r\n yy = parent.get(\"paddingTop\", 0) + dy;\r\n }\r\n }\r\n }\r\n const display = this._display;\r\n if (display.x != xx || display.y != yy) {\r\n display.invalidateBounds();\r\n display.x = xx;\r\n display.y = yy;\r\n const eventType = \"positionchanged\";\r\n if (this.events.isEnabled(eventType)) {\r\n this.events.dispatch(eventType, { type: eventType, target: this });\r\n }\r\n }\r\n // Update tooltip position together with the Sprite\r\n if (this.getPrivate(\"showingTooltip\")) {\r\n this.showTooltip();\r\n }\r\n }\r\n /**\r\n * Returns element's actual X position in pixels.\r\n *\r\n * @return X (px)\r\n */\r\n x() {\r\n let x = this.get(\"x\");\r\n let _x = this.getPrivate(\"x\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (x instanceof Percent) {\r\n return $utils.relativeToValue(x, parent.innerWidth()) + parent.get(\"paddingLeft\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(x)) {\r\n if (_x != null) {\r\n return _x;\r\n }\r\n else {\r\n return parent.get(\"paddingLeft\", this._display.x);\r\n }\r\n }\r\n else {\r\n return x;\r\n }\r\n }\r\n }\r\n return this._display.x;\r\n }\r\n /**\r\n * Returns element's actual Y position in pixels.\r\n *\r\n * @return Y (px)\r\n */\r\n y() {\r\n let _y = this.getPrivate(\"y\");\r\n if (_y != null) {\r\n return _y;\r\n }\r\n let y = this.get(\"y\");\r\n const parent = this.parent;\r\n if (parent) {\r\n if (y instanceof Percent) {\r\n return $utils.relativeToValue(y, parent.innerHeight()) + parent.get(\"paddingTop\", 0);\r\n }\r\n else {\r\n if (!$type.isNumber(y)) {\r\n if (_y != null) {\r\n return _y;\r\n }\r\n else {\r\n return parent.get(\"paddingTop\", this._display.y);\r\n }\r\n }\r\n else {\r\n return y;\r\n }\r\n }\r\n }\r\n return this._display.y;\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this._display.dispose();\r\n this._removeTemplateField();\r\n this._removeParent(this.parent);\r\n this._root._removeFocusElement(this);\r\n const tooltip = this.get(\"tooltip\");\r\n if (tooltip) {\r\n tooltip.dispose();\r\n }\r\n this.markDirty();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n adjustedLocalBounds() {\r\n this._fixMinBounds(this._adjustedLocalBounds);\r\n return this._adjustedLocalBounds;\r\n }\r\n /**\r\n * Returns local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n localBounds() {\r\n return this._localBounds;\r\n }\r\n /**\r\n * Returns adjusted local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n bounds() {\r\n const bounds = this._adjustedLocalBounds;\r\n const x = this.x();\r\n const y = this.y();\r\n return { left: bounds.left + x, right: bounds.right + x, top: bounds.top + y, bottom: bounds.bottom + y };\r\n }\r\n /**\r\n * Returns global coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\r\n globalBounds() {\r\n const bounds = this.localBounds();\r\n const p0 = this.toGlobal({ x: bounds.left, y: bounds.top });\r\n const p1 = this.toGlobal({ x: bounds.right, y: bounds.top });\r\n const p2 = this.toGlobal({ x: bounds.right, y: bounds.bottom });\r\n const p3 = this.toGlobal({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n _onShow(_duration) {\r\n }\r\n _onHide(_duration) {\r\n }\r\n /**\r\n * Plays initial reveal animation regardless if element is currently hidden\r\n * or visible.\r\n *\r\n * @param duration Duration of the animation in milliseconds\r\n * @param delay Delay showing of the element by X milliseconds\r\n * @return Promise\r\n */\r\n appear(duration, delay) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.hide(0);\r\n if (delay) {\r\n return new Promise((success, _error) => {\r\n this.setTimeout(() => {\r\n success(this.show(duration));\r\n }, delay);\r\n });\r\n }\r\n else {\r\n return this.show(duration);\r\n }\r\n });\r\n }\r\n /**\r\n * Shows currently hidden element and returns a `Promise` which completes\r\n * when all showing animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n show(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isShowing) {\r\n this._isHidden = false;\r\n this._isShowing = true;\r\n this._isHiding = false;\r\n if (this.states.lookup(\"default\").get(\"visible\")) {\r\n this.set(\"visible\", true);\r\n }\r\n this._onShow(duration);\r\n const animations = this.states.applyAnimate(\"default\", duration);\r\n yield waitForAnimations(animations);\r\n this._isShowing = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Hides the element and returns a `Promise` which completes when all hiding\r\n * animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\r\n hide(duration) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._isHiding && !this._isHidden) {\r\n this._isHiding = true;\r\n this._isShowing = false;\r\n let state = this.states.lookup(\"hidden\");\r\n if (!state) {\r\n state = this.states.create(\"hidden\", {\r\n \"opacity\": 0,\r\n \"visible\": false\r\n });\r\n }\r\n this._isHidden = true;\r\n this._onHide(duration);\r\n const animations = this.states.applyAnimate(\"hidden\", duration);\r\n yield waitForAnimations(animations);\r\n this._isHiding = false;\r\n }\r\n });\r\n }\r\n /**\r\n * Returns `true` if this element is currently hidden.\r\n *\r\n * @return Is hidden?\r\n */\r\n isHidden() {\r\n return this._isHidden;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a default state.\r\n *\r\n * @return Is showing?\r\n */\r\n isShowing() {\r\n return this._isShowing;\r\n }\r\n /**\r\n * Returns `true` if this element is currently animating to a hidden state.\r\n *\r\n * @return Is hiding?\r\n */\r\n isHiding() {\r\n return this._isHiding;\r\n }\r\n /**\r\n * Returns `true` if this element is currently hovered by a pointer.\r\n *\r\n * @return Is hovered?\r\n */\r\n isHover() {\r\n return this._display.hovering();\r\n }\r\n /**\r\n * Returns `true` if this element does currently have focus.\r\n *\r\n * @return Is focused?\r\n */\r\n isFocus() {\r\n return this._root.focused(this);\r\n }\r\n /**\r\n * Returns `true` if this element is currently being dragged.\r\n *\r\n * @return Is dragged?\r\n */\r\n isDragging() {\r\n return this._isDragging;\r\n }\r\n /**\r\n * Returns `false` if if either public or private setting `visible` is set\r\n * to `false`, or `forceHidden` is set to `true`.\r\n *\r\n * @return Visible?\r\n */\r\n isVisible() {\r\n if (this.get(\"visible\") && this.getPrivate(\"visible\") && !this.get(\"forceHidden\")) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Same as `isVisible()`, except it checks all ascendants, too.\r\n *\r\n * @since 5.2.7\r\n * @return Visible?\r\n */\r\n isVisibleDeep() {\r\n return this._parent ? (this._parent.isVisibleDeep() && this.isVisible()) : this.isVisible();\r\n }\r\n /**\r\n * Returns an actual opacity of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.2.11\r\n */\r\n compositeOpacity() {\r\n const opacity = this.get(\"opacity\", 1);\r\n return this._parent ? (this._parent.compositeOpacity() * opacity) : opacity;\r\n }\r\n /**\r\n * Returns an actual scale of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeScale() {\r\n const scale = this.get(\"scale\", 1);\r\n return this._parent ? (this._parent.compositeScale() * scale) : scale;\r\n }\r\n /**\r\n * Returns an actual roation of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\r\n compositeRotation() {\r\n const rotation = this.get(\"rotation\", 0);\r\n return this._parent ? (this._parent.compositeRotation() + rotation) : rotation;\r\n }\r\n /**\r\n * Returns width of this element in pixels.\r\n *\r\n * @return Width (px)\r\n */\r\n width() {\r\n let width = this.get(\"width\");\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\r\n let privateWidth = this.getPrivate(\"width\");\r\n let w = 0;\r\n if ($type.isNumber(privateWidth)) {\r\n w = privateWidth;\r\n }\r\n else {\r\n if (width == null) {\r\n if (this._adjustedLocalBounds) {\r\n w = this._adjustedLocalBounds.right - this._adjustedLocalBounds.left;\r\n }\r\n }\r\n else {\r\n if (width instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n w = parent.innerWidth() * width.value;\r\n }\r\n else {\r\n w = this._root.width() * width.value;\r\n }\r\n }\r\n else if ($type.isNumber(width)) {\r\n w = width;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minWidth)) {\r\n w = Math.max(minWidth, w);\r\n }\r\n if ($type.isNumber(maxWidth)) {\r\n w = Math.min(maxWidth, w);\r\n }\r\n return w;\r\n }\r\n /**\r\n * Returns maximum allowed width of this element in pixels.\r\n *\r\n * @return Maximum width (px)\r\n */\r\n maxWidth() {\r\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\r\n if ($type.isNumber(maxWidth)) {\r\n return maxWidth;\r\n }\r\n else {\r\n let width = this.get(\"width\");\r\n if ($type.isNumber(width)) {\r\n return width;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerWidth();\r\n }\r\n return this._root.width();\r\n }\r\n /**\r\n * Returns maximum allowed height of this element in pixels.\r\n *\r\n * @return Maximum height (px)\r\n */\r\n maxHeight() {\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n if ($type.isNumber(maxHeight)) {\r\n return maxHeight;\r\n }\r\n else {\r\n let height = this.get(\"height\");\r\n if ($type.isNumber(height)) {\r\n return height;\r\n }\r\n }\r\n const parent = this.parent;\r\n if (parent) {\r\n return parent.innerHeight();\r\n }\r\n return this._root.height();\r\n }\r\n /**\r\n * Returns height of this element in pixels.\r\n *\r\n * @return Height (px)\r\n */\r\n height() {\r\n let height = this.get(\"height\");\r\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\r\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\r\n let privateHeight = this.getPrivate(\"height\");\r\n let h = 0;\r\n if ($type.isNumber(privateHeight)) {\r\n h = privateHeight;\r\n }\r\n else {\r\n if (height == null) {\r\n if (this._adjustedLocalBounds) {\r\n h = this._adjustedLocalBounds.bottom - this._adjustedLocalBounds.top;\r\n }\r\n }\r\n else {\r\n if (height instanceof Percent) {\r\n const parent = this.parent;\r\n if (parent) {\r\n h = parent.innerHeight() * height.value;\r\n }\r\n else {\r\n h = this._root.height() * height.value;\r\n }\r\n }\r\n else if ($type.isNumber(height)) {\r\n h = height;\r\n }\r\n }\r\n }\r\n if ($type.isNumber(minHeight)) {\r\n h = Math.max(minHeight, h);\r\n }\r\n if ($type.isNumber(maxHeight)) {\r\n h = Math.min(maxHeight, h);\r\n }\r\n return h;\r\n }\r\n _findStaticTemplate(f) {\r\n // templateField overrides template\r\n if (this._templateField && f(this._templateField)) {\r\n return this._templateField;\r\n }\r\n return super._findStaticTemplate(f);\r\n }\r\n _walkParents(f) {\r\n if (this._parent) {\r\n this._walkParent(f);\r\n }\r\n }\r\n _walkParent(f) {\r\n if (this._parent) {\r\n this._parent._walkParent(f);\r\n }\r\n f(this);\r\n }\r\n /**\r\n * Parent [[Container]] of this element.\r\n *\r\n * @return Parent container\r\n */\r\n get parent() {\r\n return this._parent;\r\n }\r\n _setParent(parent, updateChildren = false) {\r\n const prevParent = this._parent;\r\n if (parent !== prevParent) {\r\n this.markDirtyBounds();\r\n parent.markDirty();\r\n this._parent = parent;\r\n if (updateChildren) {\r\n this._removeParent(prevParent);\r\n if (parent) {\r\n this._addPercentageSizeChildren();\r\n this._addPercentagePositionChildren();\r\n }\r\n }\r\n this.markDirtyPosition();\r\n this._applyThemes();\r\n }\r\n }\r\n /**\r\n * Returns an instance of [[NumberFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return NumberFormatter instace\r\n */\r\n getNumberFormatter() {\r\n return this.get(\"numberFormatter\", this._root.numberFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DateFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DateFormatter instace\r\n */\r\n getDateFormatter() {\r\n return this.get(\"dateFormatter\", this._root.dateFormatter);\r\n }\r\n /**\r\n * Returns an instance of [[DurationFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DurationFormatter instace\r\n */\r\n getDurationFormatter() {\r\n return this.get(\"durationFormatter\", this._root.durationFormatter);\r\n }\r\n /**\r\n * Converts X/Y coordinate within this element to a global coordinate.\r\n *\r\n * @param point Local coordinate\r\n * @return Global coordinate\r\n */\r\n toGlobal(point) {\r\n return this._display.toGlobal(point);\r\n }\r\n /**\r\n * Converts global X/Y coordinate to a coordinate within this element.\r\n *\r\n * @param point Global coordinate\r\n * @return Local coordinate\r\n */\r\n toLocal(point) {\r\n return this._display.toLocal(point);\r\n }\r\n _getDownPoint() {\r\n const id = this._getDownPointId();\r\n if (id) {\r\n return this._downPoints[id];\r\n }\r\n }\r\n _getDownPointId() {\r\n if (this._downPoints) {\r\n return $object.keysOrdered(this._downPoints, (a, b) => {\r\n if (a > b) {\r\n return 1;\r\n }\r\n if (a < b) {\r\n return -1;\r\n }\r\n return 0;\r\n })[0];\r\n }\r\n }\r\n /**\r\n * Moves sprite to the end of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toFront() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, parent.children.length - 1);\r\n }\r\n }\r\n /**\r\n * Moves sprite to the beginning of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\r\n toBack() {\r\n const parent = this.parent;\r\n if (parent) {\r\n parent.children.moveValue(this, 0);\r\n }\r\n }\r\n}\r\nObject.defineProperty(Sprite, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"Sprite\"\r\n});\r\nObject.defineProperty(Sprite, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Entity.classNames.concat([Sprite.className])\r\n});\r\n//# sourceMappingURL=Sprite.js.map","/** @ignore */ /** */\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\nimport { Sprite } from \"../render/Sprite\";\r\nimport { TextFormatter } from \"./TextFormatter\";\r\n/**\r\n * @ignore\r\n */\r\nexport function populateString(target, string) {\r\n if (string != null) {\r\n string = \"\" + string;\r\n string = TextFormatter.escape(string);\r\n let tags = string.match(/\\{([^}]+)\\}/g);\r\n let i;\r\n if (tags) {\r\n for (i = 0; i < tags.length; i++) {\r\n let tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n let value = getTagValue(target, tag, \"\");\r\n if (value == null) {\r\n value = \"\";\r\n }\r\n string = string.split(tags[i]).join(value);\r\n }\r\n }\r\n string = TextFormatter.unescape(string);\r\n }\r\n else {\r\n string = \"\";\r\n }\r\n // TODO: apply adapter?\r\n return string;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getTagValue(target, tagName, format) {\r\n let value;\r\n const dataItem = target.dataItem;\r\n // Parse parts\r\n let parts = [];\r\n let reg = /(format[a-zA-Z]*)\\((.*)\\)|([^.]+)/g;\r\n let matches;\r\n while (true) {\r\n matches = reg.exec(tagName);\r\n if (matches === null) {\r\n break;\r\n }\r\n if (matches[3]) {\r\n // Simple property\r\n parts.push({\r\n prop: matches[3]\r\n });\r\n // Check if maybe we should force a formatter on this value\r\n const dateFields = target.getDateFormatter().get(\"dateFields\", []);\r\n const numericFields = target.getNumberFormatter().get(\"numericFields\", []);\r\n const durationFields = target.getDurationFormatter().get(\"durationFields\", []);\r\n if (dateFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDate\",\r\n params: []\r\n });\r\n }\r\n else if (numericFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatNumber\",\r\n params: []\r\n });\r\n }\r\n else if (durationFields.indexOf(matches[3]) !== -1) {\r\n parts.push({\r\n method: \"formatDuration\",\r\n params: []\r\n });\r\n }\r\n }\r\n else {\r\n // Method\r\n // Parse parameters\r\n let params = [];\r\n if ($utils.trim(matches[2]) != \"\") {\r\n let reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n let matches2;\r\n while (true) {\r\n matches2 = reg2.exec(matches[2]);\r\n if (matches2 === null) {\r\n break;\r\n }\r\n params.push(matches2[1] || matches2[2] || matches2[3]);\r\n }\r\n }\r\n parts.push({\r\n method: matches[1],\r\n params: params\r\n });\r\n }\r\n }\r\n // Check if we can retrieve the value from data item\r\n if (dataItem) {\r\n // Check values\r\n value = getTagValueFromObject(target, parts, dataItem._settings);\r\n // Check properties\r\n if (value == null || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\r\n value = getTagValueFromObject(target, parts, dataItem);\r\n }\r\n // Check data context\r\n let dataContext = dataItem.dataContext;\r\n if (value == null && dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext);\r\n // Maybe it's a literal dot-separated name of the key in dataContext?\r\n if (value == null) {\r\n value = getTagValueFromObject(target, [{\r\n prop: tagName\r\n }], dataContext);\r\n }\r\n // scond data context level sometimes exist (tree map)\r\n if (value == null && dataContext.dataContext) {\r\n value = getTagValueFromObject(target, parts, dataContext.dataContext);\r\n }\r\n }\r\n // Check component's data item\r\n if (value == null && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n value = getTagValue(dataItem.component, tagName, format);\r\n }\r\n }\r\n // Check sprite's properties\r\n if (value == null) {\r\n value = getTagValueFromObject(target, parts, target);\r\n }\r\n // Finally, check the parent\r\n if (value == null && target.parent) {\r\n value = getTagValue(target.parent, tagName, format);\r\n }\r\n return value;\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction getCustomDataValue(target, prop) {\r\n const customData = target.getPrivate(\"customData\");\r\n if ($type.isObject(customData)) {\r\n return customData[prop];\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nexport function getTagValueFromObject(target, parts, object, format) {\r\n let current = object;\r\n let formatApplied = false;\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n let part = parts[i];\r\n if (part.prop) {\r\n // Regular property\r\n if (current instanceof Sprite) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current.getPrivate(part.prop);\r\n if (tmp == null)\r\n tmp = getCustomDataValue(current, part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else if (current.get) {\r\n let tmp = current.get(part.prop);\r\n if (tmp == null)\r\n tmp = current[part.prop];\r\n current = tmp;\r\n }\r\n else {\r\n current = current[part.prop];\r\n }\r\n if (current == null) {\r\n // Not set, return undefined\r\n return;\r\n }\r\n }\r\n else {\r\n // Method\r\n switch (part.method) {\r\n case \"formatNumber\":\r\n let numberValue = $type.toNumber(current);\r\n if (numberValue != null) {\r\n current = target.getNumberFormatter().format(numberValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDate\":\r\n let dateValue = $type.toDate(current);\r\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n // Was not able to get date out of value, quitting and letting\r\n // calling method try another value\r\n return;\r\n }\r\n if (dateValue != null) {\r\n current = target.getDateFormatter().format(dateValue, format || part.params[0] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"formatDuration\":\r\n let durationValue = $type.toNumber(current);\r\n if (durationValue != null) {\r\n current = target.getDurationFormatter().format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\r\n formatApplied = true;\r\n }\r\n break;\r\n case \"urlEncode\":\r\n case \"encodeURIComponent\":\r\n current = encodeURIComponent(current);\r\n break;\r\n default:\r\n if (current[part.method]) {\r\n current[part.method].apply(object, part.params);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n // Apply default format if it wasn't applied explicitly\r\n if (!formatApplied) {\r\n let formatParts = [{\r\n method: \"\",\r\n params: format\r\n }];\r\n if (format == null) {\r\n // Format is not set\r\n // Determine from the type of the value\r\n if ($type.isNumber(current)) {\r\n formatParts[0].method = \"formatNumber\";\r\n formatParts[0].params = \"\";\r\n }\r\n else if ($type.isDate(current)) {\r\n formatParts[0].method = \"formatDate\";\r\n formatParts[0].params = \"\";\r\n }\r\n }\r\n else {\r\n // Format set\r\n // Try to determine formatter based on the format\r\n let formatterType = $utils.getFormat(format);\r\n // format\r\n if (formatterType === \"number\") {\r\n formatParts[0].method = \"formatNumber\";\r\n }\r\n else if (formatterType === \"date\") {\r\n formatParts[0].method = \"formatDate\";\r\n }\r\n else if (formatterType === \"duration\") {\r\n formatParts[0].method = \"formatDuration\";\r\n }\r\n }\r\n // Apply format\r\n if (formatParts[0].method) {\r\n current = getTagValueFromObject(target, formatParts, current);\r\n }\r\n }\r\n return current;\r\n}\r\n//# sourceMappingURL=PopulateString.js.map","import { Theme } from \"../core/Theme\";\r\n/**\r\n * @ignore\r\n */\r\nexport class AnimatedTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n this.rule(\"Component\").setAll({\r\n interpolationDuration: 600\r\n });\r\n this.rule(\"Hierarchy\").set(\"animationDuration\", 600);\r\n this.rule(\"Scrollbar\").set(\"animationDuration\", 600);\r\n this.rule(\"Tooltip\").set(\"animationDuration\", 300);\r\n this.rule(\"MapChart\").set(\"animationDuration\", 1000);\r\n this.rule(\"MapChart\").set(\"wheelDuration\", 300);\r\n this.rule(\"Entity\").setAll({\r\n stateAnimationDuration: 600\r\n });\r\n this.rule(\"Sprite\").states.create(\"default\", { stateAnimationDuration: 600 });\r\n this.rule(\"Tooltip\", [\"axis\"]).setAll({\r\n animationDuration: 200\r\n });\r\n this.rule(\"WordCloud\").set(\"animationDuration\", 500);\r\n this.rule(\"Polygon\").set(\"animationDuration\", 600);\r\n this.rule(\"ArcDiagram\").set(\"animationDuration\", 600);\r\n }\r\n}\r\n//# sourceMappingURL=AnimatedTheme.js.map","import { AnimatedTheme } from \"../.internal/themes/AnimatedTheme\";\r\nexport default AnimatedTheme;\r\n//# sourceMappingURL=Animated.js.map","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer, MultiDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\r\nexport class EventDispatcher {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n Object.defineProperty(this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_killed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_iterating\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_enabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_disposed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this._listeners = [];\r\n this._killed = [];\r\n this._disabled = {};\r\n this._iterating = 0;\r\n this._enabled = true;\r\n this._disposed = false;\r\n }\r\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\r\n isDisposed() {\r\n return this._disposed;\r\n }\r\n /**\r\n * Dispose (destroy) this object.\r\n */\r\n dispose() {\r\n if (!this._disposed) {\r\n this._disposed = true;\r\n const a = this._listeners;\r\n this._iterating = 1;\r\n this._listeners = null;\r\n this._disabled = null;\r\n try {\r\n $array.each(a, (x) => {\r\n x.disposer.dispose();\r\n });\r\n }\r\n finally {\r\n this._killed = null;\r\n this._iterating = null;\r\n }\r\n }\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\r\n hasListeners() {\r\n return this._listeners.length !== 0;\r\n }\r\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\r\n hasListenersByType(type) {\r\n return $array.any(this._listeners, (x) => (x.type === null || x.type === type) && !x.killed);\r\n }\r\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\r\n enable() {\r\n this._enabled = true;\r\n }\r\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\r\n disable() {\r\n this._enabled = false;\r\n }\r\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\r\n enableType(type) {\r\n delete this._disabled[type];\r\n }\r\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\r\n disableType(type, amount = Infinity) {\r\n this._disabled[type] = amount;\r\n }\r\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\r\n _removeListener(listener) {\r\n if (this._iterating === 0) {\r\n const index = this._listeners.indexOf(listener);\r\n if (index === -1) {\r\n throw new Error(\"Invalid state: could not remove listener\");\r\n }\r\n this._listeners.splice(index, 1);\r\n }\r\n else {\r\n this._killed.push(listener);\r\n }\r\n }\r\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n _removeExistingListener(once, type, callback, context) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.once === once && // TODO is this correct ?\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\r\n isEnabled(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n // TODO is this check correct ?\r\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] === undefined;\r\n }\r\n /**\r\n * Removes all listeners of a particular event type\r\n *\r\n * @param type Listener's type\r\n */\r\n removeType(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._eachListener((info) => {\r\n if (info.type === type) {\r\n info.disposer.dispose();\r\n }\r\n });\r\n }\r\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\r\n has(type, callback, context) {\r\n const index = $array.findIndex(this._listeners, (info) => {\r\n return info.once !== true && // Ignoring \"once\" listeners\r\n info.type === type &&\r\n (callback === undefined || info.callback === callback) &&\r\n info.context === context;\r\n });\r\n return index !== -1;\r\n }\r\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\r\n _shouldDispatch(type) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n const count = this._disabled[type];\r\n if (!$type.isNumber(count)) {\r\n return this._enabled;\r\n }\r\n else {\r\n if (count <= 1) {\r\n delete this._disabled[type];\r\n }\r\n else {\r\n --this._disabled[type];\r\n }\r\n return false;\r\n }\r\n }\r\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\n _eachListener(fn) {\r\n ++this._iterating;\r\n try {\r\n $array.each(this._listeners, fn);\r\n }\r\n finally {\r\n --this._iterating;\r\n // TODO should this be inside or outside the finally ?\r\n if (this._iterating === 0 && this._killed.length !== 0) {\r\n // Remove killed listeners\r\n $array.each(this._killed, (killed) => {\r\n this._removeListener(killed);\r\n });\r\n this._killed.length = 0;\r\n }\r\n }\r\n }\r\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n dispatch(type, event) {\r\n if (this._shouldDispatch(type)) {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n // TODO if the function throws, maybe it should keep going ?\r\n this._eachListener((listener) => {\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\r\n /*public dispatchLater(type: Key, event: T[Key]): void {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener((listener) => {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(() => {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }*/\r\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\r\n _on(once, type, callback, context, shouldClone, dispatch) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n this._removeExistingListener(once, type, callback, context);\r\n const info = {\r\n type: type,\r\n callback: callback,\r\n context: context,\r\n shouldClone: shouldClone,\r\n dispatch: dispatch,\r\n killed: false,\r\n once: once,\r\n disposer: new Disposer(() => {\r\n info.killed = true;\r\n this._removeListener(info);\r\n })\r\n };\r\n this._listeners.push(info);\r\n return info;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n onAll(callback, context, shouldClone = true) {\r\n return this._on(false, null, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n on(type, callback, context, shouldClone = true) {\r\n return this._on(false, type, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\r\n }\r\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\r\n once(type, callback, context, shouldClone = true) {\r\n const x = this._on(true, type, callback, context, shouldClone, (_type, event) => {\r\n x.disposer.dispose();\r\n callback.call(context, event);\r\n });\r\n // TODO maybe this should return a different Disposer ?\r\n return x.disposer;\r\n }\r\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\r\n off(type, callback, context) {\r\n this._removeExistingListener(false, type, callback, context);\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @ignore\r\n */\r\nexport class TargetedEventDispatcher extends EventDispatcher {\r\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\r\n constructor(target) {\r\n super();\r\n /**\r\n * A target object which is originating events using this dispatcher.\r\n */\r\n Object.defineProperty(this, \"target\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n this.target = target;\r\n }\r\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\r\n copyFrom(source) {\r\n if (this._disposed) {\r\n throw new Error(\"EventDispatcher is disposed\");\r\n }\r\n if (source === this) {\r\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n }\r\n const disposers = [];\r\n $array.each(source._listeners, (x) => {\r\n // TODO very hacky\r\n if (x.context === source.target) {\r\n return;\r\n }\r\n // TODO is this correct ?\r\n if (!x.killed && x.shouldClone) {\r\n if (x.type === null) {\r\n disposers.push(this.onAll(x.callback, x.context));\r\n }\r\n else if (x.once) {\r\n disposers.push(this.once(x.type, x.callback, x.context));\r\n }\r\n else {\r\n disposers.push(this.on(x.type, x.callback, x.context));\r\n }\r\n }\r\n });\r\n return new MultiDisposer(disposers);\r\n }\r\n}\r\n//# sourceMappingURL=EventDispatcher.js.map","import { Theme } from \"../../core/Theme\";\r\nimport { percent, p100, p50 } from \"../../core/util/Percent\";\r\nimport { ColorSet } from \"../../core/util/ColorSet\";\r\nimport { setColor } from \"../../themes/DefaultTheme\";\r\nimport * as $ease from \"../../core/util/Ease\";\r\n/**\r\n * @ignore\r\n */\r\nexport class HierarchyDefaultTheme extends Theme {\r\n setupDefaultRules() {\r\n super.setupDefaultRules();\r\n const ic = this._root.interfaceColors;\r\n const gridLayout = this._root.gridLayout;\r\n const r = this.rule.bind(this);\r\n /**\r\n * ========================================================================\r\n * charts/hierarchy\r\n * ========================================================================\r\n */\r\n r(\"Hierarchy\").setAll({\r\n legendLabelText: \"{category}\",\r\n legendValueText: \"{sum.formatNumber('#.#')}\",\r\n width: p100,\r\n height: p100,\r\n colors: ColorSet.new(this._root, { step: 2 }),\r\n downDepth: 1,\r\n initialDepth: 5,\r\n singleBranchOnly: true,\r\n maskContent: true,\r\n animationEasing: $ease.out($ease.cubic)\r\n });\r\n r(\"HierarchyNode\").setAll({\r\n toggleKey: \"disabled\",\r\n setStateOnChildren: true,\r\n position: \"absolute\",\r\n isMeasured: false,\r\n cursorOverStyle: \"pointer\",\r\n tooltipText: \"{category}: {sum}\"\r\n });\r\n r(\"HierarchyNode\", [\"last\"]).setAll({\r\n cursorOverStyle: \"default\"\r\n });\r\n {\r\n const rule = r(\"Label\", [\"hierarchy\", \"node\"]);\r\n rule.setAll({\r\n centerX: p50,\r\n centerY: p50,\r\n position: \"absolute\",\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingRight: 4,\r\n paddingLeft: 4,\r\n text: \"{category}\",\r\n populateText: true,\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.3\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n {\r\n const rule = r(\"HierarchyLink\");\r\n rule.setAll({\r\n isMeasured: false,\r\n position: \"absolute\",\r\n strokeWidth: 1,\r\n strokeOpacity: 1,\r\n strength: 0.9,\r\n distance: 1.1\r\n });\r\n setColor(rule, \"stroke\", ic, \"grid\");\r\n }\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\"]).setAll({\r\n position: \"absolute\",\r\n fillOpacity: 1,\r\n strokeOpacity: 0,\r\n radius: 15,\r\n tooltipY: 0\r\n });\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\", \"outer\"]).setAll({\r\n position: \"absolute\",\r\n opacity: 1,\r\n fillOpacity: 0,\r\n strokeDasharray: 0,\r\n strokeOpacity: 1,\r\n radius: 15,\r\n scale: 1.1,\r\n interactive: false\r\n });\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\", \"outer\"]).states.create(\"disabled\", { opacity: 1, scale: 1.1, strokeDasharray: 2 });\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\", \"outer\"]).states.create(\"hoverDisabled\", { scale: 1.2, opacity: 1, strokeDasharray: 2 });\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\", \"outer\"]).states.create(\"hover\", { scale: 1.05, strokeDasharray: 0 });\r\n r(\"Circle\", [\"linkedhierarchy\", \"shape\", \"outer\"]).states.create(\"hidden\", { opacity: 0, strokeDasharray: 0 });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: BreadcrumbBar\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"BreadcrumbBar\").setAll({\r\n paddingLeft: 8,\r\n layout: gridLayout\r\n });\r\n {\r\n const rule = r(\"Label\", [\"breadcrumb\"]);\r\n rule.setAll({\r\n paddingRight: 4,\r\n paddingLeft: 4,\r\n cursorOverStyle: \"pointer\",\r\n populateText: true,\r\n text: \"{category}:\",\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"breadcrumb\"]).states.create(\"hover\", {});\r\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"breadcrumb\"]).states.create(\"down\", { stateAnimationDuration: 0 });\r\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\r\n }\r\n {\r\n const rule = r(\"Label\", [\"breadcrumb\", \"last\"]);\r\n rule.setAll({\r\n populateText: true,\r\n text: \"{category}\",\r\n fontWeight: \"bold\",\r\n cursorOverStyle: \"default\"\r\n });\r\n setColor(rule, \"fill\", ic, \"primaryButton\");\r\n }\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"breadcrumb\", \"label\", \"background\"]);\r\n rule.setAll({\r\n fillOpacity: 0,\r\n });\r\n setColor(rule, \"fill\", ic, \"background\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Partition\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Partition\").setAll({\r\n downDepth: 1,\r\n upDepth: 0,\r\n initialDepth: 5\r\n });\r\n r(\"HierarchyNode\", [\"partition\"]).setAll({\r\n setStateOnChildren: false\r\n });\r\n r(\"HierarchyNode\", [\"partition\"]).states.create(\"hidden\", {\r\n opacity: 1,\r\n visible: true\r\n });\r\n {\r\n const rule = r(\"Label\", [\"partition\", \"node\"]);\r\n rule.setAll({\r\n x: p50,\r\n y: p50,\r\n centerY: p50,\r\n centerX: p50,\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingLeft: 1,\r\n paddingRight: 1,\r\n rotation: 90,\r\n populateText: true,\r\n text: \"{category}\",\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.4\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n r(\"Label\", [\"horizontal\", \"partition\", \"node\"]).setAll({\r\n rotation: 0\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"partition\", \"node\", \"shape\"]);\r\n rule.setAll({\r\n strokeOpacity: 1,\r\n strokeWidth: 1,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0\r\n });\r\n setColor(rule, \"stroke\", ic, \"background\");\r\n }\r\n r(\"RoundedRectangle\", [\"partition\", \"node\", \"shape\", \"last\"]).setAll({\r\n fillOpacity: 0.75\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Sunburst\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Sunburst\").setAll({\r\n singleBranchOnly: true\r\n });\r\n r(\"HierarchyNode\", [\"sunburst\"]).setAll({\r\n setStateOnChildren: false\r\n });\r\n r(\"HierarchyNode\", [\"sunburst\"]).states.create(\"hidden\", {\r\n opacity: 0,\r\n visible: false\r\n });\r\n {\r\n const rule = r(\"Slice\", [\"sunburst\", \"node\", \"shape\"]);\r\n rule.setAll({\r\n strokeOpacity: 1,\r\n strokeWidth: 1,\r\n cornerRadius: 0\r\n });\r\n setColor(rule, \"stroke\", ic, \"background\");\r\n }\r\n r(\"Slice\", [\"sunburst\", \"node\", \"shape\", \"last\"]).setAll({\r\n fillOpacity: 0.75\r\n });\r\n {\r\n const rule = r(\"RadialLabel\", [\"sunburst\", \"node\"]);\r\n rule.setAll({\r\n x: 0,\r\n y: 0,\r\n textType: \"radial\",\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingLeft: 1,\r\n paddingRight: 1,\r\n centerX: p50,\r\n populateText: true,\r\n text: \"{category}\",\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.4,\r\n baseRadius: p50,\r\n rotation: 0\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: ForceDirected\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"ForceDirected\").setAll({\r\n minRadius: percent(1),\r\n maxRadius: percent(8),\r\n initialFrames: 500,\r\n centerStrength: 0.8,\r\n manyBodyStrength: -14,\r\n velocityDecay: 0.5,\r\n linkWithStrength: 0.5,\r\n showOnFrame: 10,\r\n singleBranchOnly: false,\r\n upDepth: Infinity,\r\n downDepth: 1,\r\n initialDepth: 5,\r\n topDepth: 0\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Tree\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Tree\").setAll({\r\n orientation: \"vertical\",\r\n paddingLeft: 20,\r\n paddingRight: 20,\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n singleBranchOnly: false,\r\n upDepth: Infinity,\r\n downDepth: 1,\r\n initialDepth: 5,\r\n topDepth: 0\r\n });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Pack\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Pack\").setAll({\r\n paddingLeft: 20,\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingRight: 20,\r\n nodePadding: 0\r\n });\r\n {\r\n const rule = r(\"Label\", [\"pack\", \"node\"]);\r\n rule.setAll({\r\n centerY: p50,\r\n centerX: p50,\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingLeft: 1,\r\n paddingRight: 1,\r\n populateText: true,\r\n text: \"{category}\",\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.4\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n {\r\n const rule = r(\"Circle\", [\"pack\", \"node\", \"shape\"]);\r\n rule.setAll({\r\n strokeOpacity: 0.5,\r\n fillOpacity: 0.8,\r\n strokeWidth: 1,\r\n });\r\n setColor(rule, \"stroke\", ic, \"background\");\r\n }\r\n r(\"LinkedHierarchyNode\").setAll({\r\n draggable: true\r\n });\r\n r(\"LinkedHierarchyNode\").states.create(\"hidden\", { scale: 0, opacity: 0, visible: false });\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Treemap\r\n * ------------------------------------------------------------------------\r\n */\r\n r(\"Treemap\").setAll({\r\n upDepth: 0,\r\n layoutAlgorithm: \"squarify\"\r\n });\r\n {\r\n const rule = r(\"Label\", [\"treemap\", \"node\"]);\r\n rule.setAll({\r\n x: p50,\r\n y: p50,\r\n centerY: p50,\r\n centerX: p50,\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingLeft: 1,\r\n paddingRight: 1,\r\n populateText: true,\r\n text: \"{category}\",\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.4\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n r(\"HierarchyNode\", [\"treemap\", \"node\"]).setAll({\r\n tooltipY: percent(40),\r\n isMeasured: false,\r\n position: \"absolute\"\r\n });\r\n {\r\n const rule = r(\"RoundedRectangle\", [\"treemap\", \"node\", \"shape\"]);\r\n rule.setAll({\r\n strokeOpacity: 1,\r\n strokeWidth: 1,\r\n cornerRadiusBR: 0,\r\n cornerRadiusTR: 0,\r\n cornerRadiusBL: 0,\r\n cornerRadiusTL: 0,\r\n fillOpacity: 1\r\n });\r\n setColor(rule, \"stroke\", ic, \"background\");\r\n }\r\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/hierarchy: Voronoi Treemap\r\n * ------------------------------------------------------------------------\r\n */\r\n {\r\n r(\"VoronoiTreemap\").setAll({\r\n type: \"polygon\",\r\n minWeightRatio: 0.005,\r\n convergenceRatio: 0.005,\r\n maxIterationCount: 100,\r\n singleBranchOnly: true\r\n });\r\n }\r\n {\r\n const rule = r(\"Graphics\", [\"voronoitreemap\", \"node\", \"shape\"]);\r\n rule.setAll({\r\n strokeOpacity: 1,\r\n strokeWidth: 1,\r\n fillOpacity: 1\r\n });\r\n setColor(rule, \"stroke\", ic, \"background\");\r\n }\r\n {\r\n r(\"Polygon\", [\"hierarchy\", \"node\", \"shape\", \"depth1\"]).setAll({\r\n strokeWidth: 3\r\n });\r\n }\r\n {\r\n const rule = r(\"Label\", [\"voronoitreemap\"]);\r\n rule.setAll({\r\n centerY: p50,\r\n centerX: p50,\r\n paddingBottom: 1,\r\n paddingTop: 1,\r\n paddingLeft: 1,\r\n paddingRight: 1,\r\n populateText: true,\r\n text: \"{category}\",\r\n oversizedBehavior: \"fit\",\r\n minScale: 0.4,\r\n layer: 30\r\n });\r\n setColor(rule, \"fill\", ic, \"alternativeText\");\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=HierarchyDefaultTheme.js.map","import { Container } from \"../../core/render/Container\";\r\n/**\r\n * Base class for hierarchy nodes.\r\n */\r\nexport class HierarchyNode extends Container {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * Related series.\r\n */\r\n Object.defineProperty(this, \"series\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_clickDisposer\", {\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 super._afterNew();\r\n this.states.create(\"disabled\", {});\r\n this.states.create(\"hover\", {});\r\n this.states.create(\"hoverDisabled\", {});\r\n this.on(\"disabled\", () => {\r\n const dataItem = this.dataItem;\r\n if (!dataItem.get(\"children\")) {\r\n this.set(\"disabled\", true);\r\n return;\r\n }\r\n const disabled = this.get(\"disabled\");\r\n const series = this.series;\r\n if (dataItem && series) {\r\n if (dataItem.get(\"disabled\") != disabled) {\r\n if (disabled) {\r\n series.disableDataItem(dataItem);\r\n }\r\n else {\r\n series.enableDataItem(dataItem, series.get(\"downDepth\", 1), 0);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n _changed() {\r\n super._changed();\r\n if (this.isDirty(\"toggleKey\")) {\r\n const toggleKey = this.get(\"toggleKey\");\r\n if (toggleKey == \"disabled\") {\r\n this._clickDisposer = this.events.on(\"click\", () => {\r\n if (!this._isDragging) {\r\n let series = this.series;\r\n if (series) {\r\n series.selectDataItem(this.dataItem);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n if (this._clickDisposer) {\r\n this._clickDisposer.dispose();\r\n }\r\n }\r\n }\r\n }\r\n}\r\nObject.defineProperty(HierarchyNode, \"className\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"HierarchyNode\"\r\n});\r\nObject.defineProperty(HierarchyNode, \"classNames\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: Container.classNames.concat([HierarchyNode.className])\r\n});\r\n//# sourceMappingURL=HierarchyNode.js.map","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","import { __awaiter } from \"tslib\";\r\nimport { HierarchyDefaultTheme } from \"./HierarchyDefaultTheme\";\r\nimport { Series } from \"../../core/render/Series\";\r\nimport { DataItem } from \"../../core/render/Component\";\r\nimport { HierarchyNode } from \"./HierarchyNode\";\r\nimport { Container } from \"../../core/render/Container\";\r\nimport { Label } from \"../../core/render/Label\";\r\nimport { Template } from \"../../core/util/Template\";\r\nimport { ListTemplate } from \"../../core/util/List\";\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\nimport * as d3hierarchy from \"d3-hierarchy\";\r\n;\r\n/**\r\n * A base class for all hierarchy charts.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/} for more info\r\n */\r\nexport class Hierarchy extends Series {\r\n constructor() {\r\n super(...arguments);\r\n /**\r\n * A [[Container]] that nodes are placed in.\r\n *\r\n * @default Container.new()\r\n */\r\n Object.defineProperty(this, \"nodesContainer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.children.push(Container.new(this._root, { isMeasured: false }))\r\n });\r\n Object.defineProperty(this, \"_rootNode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_treeData\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_index\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_tag\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"hierarchy\"\r\n });\r\n /**\r\n * A list of nodes in a [[Hierarchy]] chart.\r\n *\r\n * @default new ListTemplate\r\n */\r\n Object.defineProperty(this, \"nodes\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: this.addDisposer(new ListTemplate(Template.new({}), () => HierarchyNode.new(this._root, {\r\n themeTags: $utils.mergeTags(this.nodes.template.get(\"themeTags\", []), [this._tag, \"hierarchy\", \"node\"])\r\n }, this.nodes.template)))\r\n });\r\n /**\r\n * A list of label elements in a [[Hierarchy]] chart.\r\n *\r\n * @default new ListTemplate