{"version":3,"file":"main.a93fc32b16e27374.js","mappings":"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","names":["ARC","ARROW_UP","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARIA_ACTIVE_DESCENDANT","BLACK","BOTTOM","CENTER","CIRCLE","CROSS","DATE","DEFAULT_FONT","END","FORMAT_REGEX","HEIGHT","INSIDE","INHERIT","LEFT","MAX_VALUE","Number","MIN_VALUE","NONE","OBJECT","OUTSIDE","RIGHT","ROUNDED_RECT","START","STRING","TOP","VALUE","WHITE","WIDTH","X","Y","POINTER","HORIZONTAL","isArray","value","Array","addClass","element","classes","classArray","idx","length","className","indexOf","SPACE_REGEX","removeClass","replace","alignPathToPixel","path","offset","options","stroke","drawing","width","i","segments","anchor","round","translate","clockwise","angle1","angle2","x","y","isNumber","isNaN","isString","convertableToNumber","isFinite","cycleUp","index","count","cycleDown","result","cycleIndex","isFunction","fn","UNDEFINED","deepExtendOne","destination","source","property","propInit","propValue","propType","constructor","Date","getTime","clone","destProp","deepExtend","arguments","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","field","test","elementStyles","styles","stylesArray","style","window","getComputedStyle","parseFloat","getSpacing","defaultSpacing","spacing","top","right","bottom","left","current","compile","template","template_service","TemplateService","register","userImplementation","getTemplate","content","ariaTemplate","ariaContent","FIELD_REGEX","getterCache","getter","fields","match","indexAccessor","push","obj","grep","array","callback","hasClasses","classNames","names","split","undefined","HashMap","this","_map","Map","get","key","set","inArray","interpolateValue","start","end","progress","TRIGGER","instance_observer","InstanceObserver","observer","handlers","handlerMap","trigger","name","args","isDefaultPrevented","callObserver","fnName","apply","requiresHandlers","map","browser","support","mousewheelDelta","e","delta","wheelDelta","webkit","Math","max","devicePixelRatio","detail","ceil","floor","logToConsole","message","console","log","append","drawing_utils_append","bindEvents","defined","drawing_utils_defined","deg","drawing_utils_deg","elementOffset","elementSize","eventCoordinates","eventElement","hashKey","last","drawing_utils_last","limitValue","objectKey","rad","drawing_utils_rad","drawing_utils_round","unbindEvents","valueOrDefault","FontLoader","fetchFonts","fonts","state","depth","MAX_DEPTH","document","Object","keys","forEach","loadFonts","promises","font","load","Promise","all","then","preloadFonts","font_loader","setDefaultOptions","type","proto","prototype","KI_PREFFIX","KSVG_PREFFIX","HTMLBaseIcon","wrapper","addClasses","html","outerHTML","size","themeColor","flip","iconClass","stylingOptions","HTMLFontIcon","super","currentIconClass","find","startsWith","icon","_className","HTMLSvgIcon","innerHTML","iconNameMatch","toUpperCase","svgIcons","setAttribute","isPlainObject","toString","call","svgElement","createElementNS","viewBox","appendChild","ICON_TYPES","svg","renderIcon","iconElement","iconOptions","HTMLElement","createElement","sparseArrayLimits","arr","min","predicate","item","Matrix","geometry","matrixRegexp","transformMatrix","transform","unit","parseMatrix","matrixString","members","auto_text_color","autoTextColor","color","Color","isDark","DELETED","LegacySet","values","_index","_values","slice","filter","has","add","delete","clear","SetWrapper","_set","Set","from","createHashSet","supportsSet","supported","defaultErrorHandler","error","hasOwnProperty","height","data","m","row","col","line","each","f","includeEmpty","val","el","transpose","n","a","j","multiply","b","s","va","vb","inverse","augment","k","imax","argmax","tmp","ret","pos","v","common_matrix","autoMajorUnit","diff","DEFAULT_PRECISION","abs","scale","pow","relativeValue","scaleMultiplier","Point","Class","equals","point","rotate","center","degrees","theta","cosT","cos","sinT","sin","cx","cy","distanceTo","dx","dy","sqrt","onCircle","angle","radius","radians","core_point","Box","x1","y1","x2","y2","box","move","wrap","targetBox","wrapPoint","arrayPoint","snapTo","axis","alignTo","targetCenter","shrink","dw","dh","expand","pad","padding","unpad","containsPoint","points","getHash","join","overlaps","rotation","r1","rotatePoint","r2","r3","r4","toRect","geom","hasSize","align","alignment","c1","c2","sizeFunc","core_box","Ring","innerRadius","startAngle","middle","setRadius","newRadius","radianAngle","ax","ay","adjacentBox","distance","sector","midAndle","midPoint","hw","hh","sa","ca","p","endAngle","vector","startPoint","startVector","endPoint","endVector","dist","getBBox","allAngles","sort","numericComparer","startAngleIndex","endAngleIndex","angles","concat","core_ring","ShapeBuilder","createRing","arc","radiusX","radiusY","draw","fromArc","close","innerEnd","pointAt","lineTo","shape_builder","swing","position","PI","linear","easeOutElastic","time","asin","instance","AnimationFactory","_items","create","items","toLowerCase","animation_factory","animation","Animation","_options","duration","easing","assign","setup","step","play","delay","easingFunctions","now","finish","abort","setTimeout","loop","_stopped","wallTime","easingPosition","animationFrame","destroy","ChartElement","children","initUserOptions","reflow","currentChild","getRoot","parent","getSender","service","getService","sender","chartService","translateChildren","childrenCount","renderVisual","visible","createVisual","addVisual","renderChildren","createAnimation","renderComplete","visual","chartElement","appendVisual","zIndex","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","insert","traverse","child","closest","matched","hasHighlight","highlight","createHighlight","toggleHighlight","show","opacity","customVisual","_highlight","highlightOptions","fill","highlightVisualArgs","series","dataItem","category","percentage","runningTotal","total","toggleFocusHighlight","accessibility","focusHighlight","_focusHighlight","rootBackground","background","highlightColor","focusHighlightOptions","border","createFocusHighlight","createGradientOverlay","gradientOptions","overlay","createGradient","closed","elements","supportsPointInactiveOpacity","chart_element","BoxElement","margin","shrinkToFit","hasSetSize","borderWidth","reflowPaddingBox","vAlign","paddingBox","contentBox","hasBox","fromRect","visualStyle","dashType","cursor","box_element","addAccessibilityAttributesToVisual","accessibilityOptions","role","ariaLabel","ariaRoleDescription","ariaChecked","ShapeElement","pointData","getElement","halfWidth","halfHeight","fromPoints","moveTo","rect","borderRadius","setCornerRadius","visualOptions","shape_element","RADIAL","core_gradients","glass","stops","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","r","c","d","g","h","boxes","RootElement","rootOptions","parseInt","gradients","currentBox","createBackground","hashCode","gradient","GRADIENTS","drawingGradient","innerRadialStops","usedSpace","currentStops","currentStop","cleanGradients","_observers","root_element","FloatElement","_initDirection","vertical","groupAxis","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groups","groupsSize","maxGroupElementsSize","groupOptions","groupsCount","groupsStart","alignStart","groupStart","groupIdx","group","groupElements","elementStart","groupElementsCount","groupElementStart","groupSize","elementBox","maxSize","groupElementsSize","float_element","DrawingText","Text","baseline","topLeft","core_text","rectToBox","origin","bottomRight","ROWS_SPLIT_REGEX","text_box","TextBox","_initContainer","_autoReflow","rows","String","floatElement","textOptions","container","rowIdx","text","trim","visualFn","_boxReflow","visualBox","visualContext","clippedBBox","normalBox","rotatedBox","rotationTransform","context","getDefaultVisual","boxCenter","Title","_textBox","buildTitle","defaultOptions","title","titleOptions","orderTitles","titles","collapseVerticalMargins","reverse","prevBox","core_title","AxisLabel","format","culture","click","widget","alignRotation","bbox","matrix","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","transformCopy","topRight","bottomLeft","K","distanceLeft","distanceRight","alignEnd","alignCenter","axis_label","Note","render","hide","label","childAlias","noteTemplate","auto","aliasFor","marker","wrapperBox","lineStart","linePoints","createLine","defaultVisual","eventArgs","preventDefault","over","out","core_note","parseDate","firstDay","intl_service","IntlService","implementation","FORMAT_REPLACE_REGEX","chart_service","ChartService","chart","_intlService","intlService","FormatService","intl","formatString","localeAuto","locale","placeholderFormat","substring","rtl","notify","isPannable","pannable","lock","dom_events_builder","DomEventsBuilder","events","createAxisTick","tickOptions","tickX","tickY","tick","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","skip","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","range","createAxisLabel","clearTitle","lineBox","mirror","axisX","axisY","lineWidth","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","altAxis","pane","axes","slotX","slotY","getSlot","to","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","space","boxSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelOffset","labelBox","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","minValue","maxValue","valueRange","seriesMin","seriesMax","lineDir","lineInfo","lineSize","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","MAX_SCALE","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","years","months","weeks","days","hours","minutes","seconds","milliseconds","absoluteDateDiff","getTimezoneOffset","addTicks","date","ticks","toDate","adjustDST","getHours","setHours","addDuration","dateValue","weekStartDay","getFullYear","getMonth","startOfWeek","daysToSubtract","day","getDay","getDate","addHours","roundedDate","setMinutes","tzDiff","getSeconds","setSeconds","getMilliseconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","startDate","parseDates","dates","CategoryAxis","_ticks","categoriesHash","copy","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","positions","cache","hash","_hash","hasMinor","filterOutOfRangePositions","inRange","startIndex","endIndex","slotBox","singleSlot","p1","p2","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","limitedRangeIndices","zoomRange","totalMin","totalMax","labelContext","dataItems","hideOutOfRangeNotes","pan","pointsRange","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","totalCount","totalLimit","totalRangeIndices","indexCategories","category_axis","DateLabelFormats","BASE_UNITS","FIT","categoryRange","clearCache","_range","EmptyDateRange","displayIndices","displayRange","valueIndex","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","next","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","categoryLimits","span","autoBaseUnitSteps","maxDateGroups","autoUnit","unitSteps","nextStep","autoUnitIx","units","totalUnits","shift","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","safeOptions","initUnit","defaultBaseUnit","lastCategory","minDiff","categoryIx","forecast","_forecast","before","after","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","splice","isEmpty","totalLimits","panRange","datesRange","indicesRange","fit","minDelta","maxDelta","maxDiff","rangeDiff","autoBaseUnitStep","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","autoRotateRangeLabels","hideOverlappingLabels","clip","rangeLabel","firstRangeLabel","lastRangeLabel","dateFormats","createLabel","rotateLabel","dateRange","date_category_axis","limitCoordinate","MIN_VALUE_RANGE","NumericAxis","autoOptions","autoAxisOptions","narrowRange","autoMin","autoAxisMin","narrow","axisMin","autoMax","autoAxisMax","axisMax","roundToMajorUnit","remainderClose","totalOptions","totalAxisOptions","axisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","totalMajorUnit","startValue","getDivisions","stepValue","divisions","skipStep","getValue","endValue","isValidRange","divisor","ratio","remainder","numeric_axis","DateValueAxis","axisCrossingValues","applyDefaults","timeUnits","baseUnitTime","actualUnits","unitsToAdd","head","tail","dir","limittedRange","date_value_axis","LogarithmicAxis","base","logMaxRemainder","initRange","throwNegativeValuesError","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","power","minorOptions","_minorIntervalOptions","minorStep","info","Error","logarithmic_axis","grid_lines_mixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","circle","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","alpha","intervalAngle","RadarCategoryAxis","reflowLabels","measureBox","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","interval","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","GridLinesMixin","radar_category_axis","PolarAxis","instanceOptions","atan2","polar_axis","angularDistance","radar_numeric_axis_mixin","polarAxis","bandStyle","shape","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","midAngle","gamma","axisType","RadarNumericAxis","minorSkipStep","RadarNumericAxisMixin","radar_numeric_axis","RadarLogarithmicAxis","radar_logarithmic_axis","numberSign","curve_processor","CurveProcessor","process","dataPoints","removeDuplicates","initialControlPoint","lastControlPoint","p0","pop","tangent","controlOut","firstControlPoint","secondControlPoint","controlPoints","cp0","invertAxis","lineFunction","calculateFunction","isLine","xField","yField","restrict","switchOrientation","monotonic","isMonotonicByField","sign","oldXField","restrictControlPoint","cp","p3","t1","t2","xValue","yValue","controlPoint","chart_axis","ChartAxis","_axis","findAxisByName","chart_pane","ChartPane","chartsVisual","chartContainer","_pane","chart_plotarea","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sum","sumOrNull","avg","first","aggregates","getField","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","seriesTypes","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","object","srcFields","srcFieldName","fieldName","sourceFieldName","series_binder","percentRegex","standardDeviationRegex","RegExp","error_range_calculator","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","exec","valueGetter","createValueGetter","average","getAverage","deviation","getStandardDeviation","multiple","errorRange","low","high","globalRange","standardError","getStandardError","binder","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","START_SCALE","msie","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","ZERO","INTERPOLATE","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","TRENDLINE_EXPONENTIAL","TRENDLINE_LINEAR","TRENDLINE_LOGARITHMIC","TRENDLINE_MOVING_AVERAGE","TRENDLINE_POLYNOMIAL","TRENDLINE_POWER","TRENDLINE_SERIES","LEGEND_ITEM_CLICK","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT","SELECT_END","SHOW_TOOLTIP","HIDE_TOOLTIP","CHART_POINT_ROLE","CHART_POINT_CLASSNAME","CHART_POINT_ROLE_DESCRIPTION","LOGARITHMIC","CATEGORY","INSIDE_END","OUTSIDE_END","MOUSEWHEEL","DRILLDOWN_FIELD","ErrorBarBase","isVertical","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","error_bar_base","categorical_error_bar","CategoricalErrorBar","seriesValueAxis","anyHasZIndex","appendIfNotNull","areNumbers","segmentVisible","pointVisibility","bindSegments","seriesCount","equalsIgnoreCase","evalOptions","dryRun","defaults","needsEval","excluded","filterSeriesByType","types","currentSeries","dateCache","WeakMap","parseDateCategory","hasGradientOverlay","hasValue","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","findNext","hasItem","pointHasValue","outPoint","createOutOfRangePoints","hasMinPoint","hasMaxPoint","missingValues","seriesMissingValues","stack","minPoint","maxPoint","_outOfRangeMinPoint","_outOfRangeMaxPoint","CategoricalChart","categoryAxis","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","bind","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","other","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","defaultStack","isNonGroupStack","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","negative","addErrorBar","errorBars","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","limitedSlot","axisIndex","_outOfRangeCallback","currentCategory","outOfRangePoint","formatPointValue","categorical_chart","point_events_mixin","hover","originalEvent","note_mixin","createNote","guid","random","id","LinePoint","tooltipTracking","_id","markers","_rendered","createMarker","createLabelElement","getLabelText","formatValue","getAriaLabelText","getAriaTemplate","markerBorder","brightness","toHex","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","shadow","highlightVisual","halfSize","markerOptions","tooltipAnchor","clipBox","horizontalAlign","verticalAlign","horizontal","overlapsBox","unclipElements","focusVisual","clearFocusFromVisual","getIndex","tabIndex","PointEventsMixin","NoteMixin","line_point","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","line_segment","toGeometryPoint","lintPoint","stepAxis","stepDir","step_line_mixin","calculateStepPoints","previousPoint","stepPoint","StepLineSegment","StepLineMixin","step_line_segment","spline_segment","SplineSegment","curve","line_chart_mixin","renderSegments","lastSegment","_segments","sortedPoints","sortPoints","pointCount","createSegment","_addSegment","unshift","segment","target","allPoints","nearestPoint","nearestPointDistance","pointDistance","ClipAnimation","_setEnd","suspend","setX","resume","clip_animation","clip_animation_mixin","root","transitions","clipPath","_setChildrenAnimation","animationPoints","LineChart","LineChartMixin","ClipAnimationMixin","line_chart","area_segment","AreaSegment","prevSegment","stackPoints","createFill","createStroke","lineCap","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","step_area_segment","spline_area_segment","SplineAreaSegment","curveProcessor","controlIn","area_chart","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","axis_group_range_tracker","AxisGroupRangeTracker","axisRanges","update","chartAxisRanges","chartRange","reset","query","BarLabel","textBox","alignToClipBox","parentBox","bar_label","accessibility_attributes_mixin","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","lineJoin","baseColor","_brightness","borderColor","AccessibilityAttributesMixin","bar","forEachReverse","ClusterLayout","gap","slots","slotSize","cluster_layout","StackWrap","positionAxis","stack_wrap","BarChart","clusterType","stackType","stackOrDefault","negativeColor","cluster","getStackWrap","stackGroup","wraps","stackWrap","_stackGroup","zeroSlot","stackAxis","childrenLength","_setAnimationOptions","pointVisual","bar_chart","Candlestick","ocSlot","open","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","body","drawLines","lineStyle","normalColor","meanPoints","medianPoints","whiskerPoints","tooltip","candlestick","CandlestickChart","splitValue","downColor","parts","candlestick_chart","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","lower","reflowWhiskerSlot","medianSlot","median","mean","meanSlot","calcMeanPoints","calcWhiskerPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","extremes","markersBorder","reflowOutliers","whiskers","box_plot","vertical_box_plot","VerticalBoxPlot","box_plot_chart","BoxPlotChart","filterOutliers","scatter_error_bar","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxis","xAxisName","yAxis","yAxisName","xAxisRange","yAxisRange","namedXAxes","namedYAxes","scatter_chart","Bubble","highlightGroup","bubble","BubbleChart","_maxSize","negativeValues","updateBubblesSize","animationOptions","minR","minSize","maxR","minArea","areaRatio","area","bubble_chart","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","bullet_chart_bullet","BulletChart","wrapData","seriesItem","bulletOptions","bullet","bullet_chart","BaseTooltip","getStyle","pointColor","backgroundColor","paddingTop","paddingBottom","paddingLeft","paddingRight","tooltipOptions","base_tooltip","CrosshairTooltip","crosshair","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","crosshair_tooltip","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","chart_container","Pane","paneID","ID","appendAxis","appendAxisAt","appendChart","empty","removeAxis","removeChart","allAxes","vGridLines","hGridLines","refresh","notifyRender","axisValueField","paneIndex","PlotAreaBase","initSeries","legend","crosshairs","originalOptions","originalSeries","_bindCache","createPanes","createCrosshairs","cached","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItems","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","active","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","defaultValue","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","paneYAnchor","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","offsetX","paneBox","offsetY","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","allPaneAxes","rotated","chartPane","remainingHeight","autoHeightPanes","percents","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","paths","backgroundContainsPoint","isTransparent","bg","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsByPointIndex","pointIndex","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","edge","isTrendline","trendlineFactory","createTrendlineSeries","modifiedSeries","forSeries","seriesByName","for","trendlineSeries","getFirstPoint","getPointBelow","_getNextPoint","_pointsByVertical","getPointAbove","getPointToTheRight","_pointsByHorizontal","getPointToTheLeft","getPointsFunc","increment","nextIndex","loopPoints","direction","at","basePoint","isSingleAxis","some","reduce","acc","plotarea_base","plotarea_events_mixin","_dispatchEvent","setValue","parentObj","series_aggregator","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","aggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","DefaultAggregates","seriesType","default_aggregates","RangeBar","fromOptions","toOptions","labelFrom","labelTo","range_bar","RangeBarChart","plotLimits","range_bar_chart","range_line_point","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","range_area_point","range_area_segment","RangeAreaSegment","toPoints","fromSegments","toPath","fromPath","spline_range_area_segment","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","step_range_area_segment","RangeAreaChart","segmentType","fromSlot","toSlot","range_area_chart","ohlc_point","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","ohlc_chart","OHLCChart","WaterfallSegment","waterfall_segment","waterfall_chart","WaterfallChart","createSegments","totalCategories","summary","prevPoint","trendline_factory","registry","impl","calculate_slope","calculateSlope","sourceValues","slope","intercept","xy","xMin","xMax","check_all_positive","checkAllPositive","every","get_trendline_data","getTrendlineData","valueMapper","currentRange","calculate_moving_average","calculateMovingAverage","period","averagePoints","lastValue","calculate_polynomial","calculatePolynomial","order","coefficients","linearRegression","Xt","B","exponentialTrendline","seriesValues","getData","exp","categoryField","linearTrendline","logarithmicTrendline","movingAverageTrendline","calculatePoints","trendline","polynomialTrendline","powerTrendline","trendline_registry","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","_seriesPointsCache","_currentPointsCache","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","trendlineRegistry","filterSeries","trendlineAggregateForecast","srcSeries","aggregateSeries","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","processedSeries","axisPane","dataLength","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","aggregator","categoryItem","categoryIdx","categoriesToAdd","stackableChartOptions","anyStackedSeries","categoryAxes","unique","axisSeries","groupSeries","firstSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","definitions","isJustified","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","_siblingsBySeriesIndex","_siblingsByPointIndex","siblings","_getSeriesCompareFn","_isInStackedSeries","sortableSeries","stackableSeries","targetOptions","PlotAreaEventsMixin","categorical_plotarea","ATTRIBUTE_MAP","path_node","PathNode","Node","geometryChange","attr","renderData","invalidate","optionsChange","allAttr","mapFill","removeAttr","mapStroke","transformChange","accessibilityOptionsChange","textContent","srcElement","POINT_DIGITS","attrs","renderLinecap","renderDashType","renderStroke","renderAllAttr","SOLID","dashArray","DASH_ARRAYS","BUTT","nodeType","renderFill","renderId","renderStyle","renderOpacity","renderAttr","renderDefinitions","renderTransform","renderClassName","renderRole","renderAriaLabel","renderAriaRoleDescription","renderAriaChecked","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","htmlEncode","ENTITY_REGEX","decodeEntities","_element","lastIndex","innerText","NODE_MAP","Arc","ArcNode","Circle","CircleNode","Group","GroupNode","Image","ImageNode","mapPosition","mapSource","tl","renderPosition","encode","src","renderSource","MultiPath","MultiPathNode","Path","Rect","RectNode","cornerRadius","rx","ry","TextNode","mapStyle","measure","setY","renderContent","normalizeText","renderTextAnchor","renderPaintOrder","paintOrder","svg_surface","Surface","BaseSurface","_root","RootNode","renderSVG","_template","_rootElement","firstElementChild","overflow","alignToScreen","ctm","getScreenCTM","attachTo","_click","mouseover","_mouseenter","mouseout","_mouseleave","mousemove","_mousemove","resize","_size","_offset","exportVisual","_visual","_resize","svgStyles","SVG_NS","hasDocument","SurfaceFactory","canvas","getContext","hasFeature","SVGSurface","CanvasSurface","preferred","navigator","userAgent","surface_factory","es2015_surface","_defaultPrevented","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","toggle","isHighlighted","acceptKey","mouseKey","event","ctrlKey","shiftKey","altKey","toChartAxisRanges","ranges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","parentNode","removeChild","setStyles","zoomPane","_zoomPane","_elementOffset","_zoomPaneClipBox","pageX","pageY","_selectionPosition","selectionPosition","_updateAxisRanges","zoom","startLocation","location","zoom_selection","mousewheel_zoom","MousewheelZoom","rate","updateRanges","sizeField","alignStartReverse","DEFAULT_OPTIONS","alignContent","justifyContent","alignItems","orientation","lineSpacing","revers","layout","Layout","_rect","_fieldMap","_initMap","fieldMap","groupsSizeField","groupsAxis","justifyAlign","_initGroups","groupOrigin","elementOrigin","Size","groupBox","arrangeElements","translateToPoint","transofrm","createTransform","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","legend_layout","LegendLayout","legendItem","LegendItemMarker","markerHighlightOptions","DEFAULT_MARKER_SIZE","legend_item_marker","MarkerLineArea","legend_item_line_area","LegendItemLine","centerY","createHighlightLine","createHighlightMarker","highlightLine","highlightMarker","legend_item_line","LegendItemSquare","legend_item_square","LegendItem","createContainer","markerWrap","createMarkerArea","_marker","_createMarker","_createLine","_createMarkerLine","_createSquare","_highlightOptions","_line","_markerLineArea","_square","_highlightMarkers","_toggleHighlight","_restoreMarkers","eventSink","_itemOverlay","_legendItemHover","_unsetActivePoint","legend_item","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","itemsContainer","hasTitle","innerElement","markersOptions","itemOptions","hasItems","getItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","legend_legend","PlotAreaFactory","_registry","entry","trendlines","plotarea_factory","createDiv","closestHandle","Selection","_dateAxis","initOptions","offsetHeight","createElements","onPane","selection","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","cssText","mousewheel","_mousewheelHandler","_mousewheel","td","_domEvents","stopPropagation","_start","_move","_end","tap","_tap","press","_press","gesturestart","_gesturestart","gesturechange","_gesturechange","gestureend","_gestureend","clearTimeout","_mwTimeout","_state","_rangeEventArgs","_value","_pointInPane","modelCoords","_toModelCoordinates","handle","bodyRect","getBoundingClientRect","inBody","moveTarget","oldRange","rightClick","which","touch","touches","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","chart_selection","tooltip_tooltip","Tooltip","_current","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","shared","categoryText","categoryFormat","slotCenter","centerPoint","shared_tooltip","BarChartAnimation","fromScale","scaleX","scaleY","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","scatter_line_chart","get_scatter_trendline_data","getScatterTrendlineData","samplingInterval","scatter_value_getter","x_value_limits","xValueLimits","scatterRegistry","scatterExponentialTrendline","scatterLinearTrendline","scatterValueGetter","scatterLogarithmicTrendline","logValueGetter","scatterMovingAverageTrendline","scatterPolynomialTrendline","scatterPowerTrendline","scatter_trendline_registry","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","createXYAxis","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","inferredDate","xAxesOptions","yAxesOptions","xValues","yValues","currentValue","scatterTrendlineRegistry","xy_plotarea","PieSegment","labelText","themeLabels","theme","seriesDefaults","animationDelay","labelsOptions","labelsDistance","labelHeight","labelWidth","lp","createSegmentVisual","borderOptions","fallbackFill","userSpace","singleSegment","tooltipAlignment","RAD_30","RAD_60","sine","cosine","pie_segment","pie_chart_mixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","seriesColors","colorsCount","anglePerValue","constantAngle","currentAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","remaining","_takeDistance","amount","available","labelDistance","boxX","boxY","hAlignLabel","connectors","_connectorLines","connectorLine","sr","crossing","intersection","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","t","a1","a2","b1","b2","ub","ua","PieChartMixin","pie_chart","pie_plotarea","PiePlotArea","createPieChart","pieChart","DonutSegment","donut_segment","DonutChart","holeSize","totalSize","seriesWithoutSize","donut_chart","polar_plotarea_base","PolarPlotAreaBase","createPolarAxis","createValueAxis","valueAxisOptions","axisDefaultRange","valueAxisBox","heightDiff","PolarScatterChart","polar_scatter_chart","PolarLineChart","polar_line_chart","spline_polar_area_segment","SplinePolarAreaSegment","_polarAxisCenter","polar_area_segment","PolarAreaSegment","centerSegment","xComparer","polar_area_chart","PolarAreaChart","_hasMissingValuesGap","PolarPlotArea","scatterChart","polar_plotarea","RadarLineChart","valueRadius","seriesSegments","groupBySeriesIx","radar_line_chart","spline_radar_area_segment","SplineRadarAreaSegment","radar_area_segment","RadarAreaSegment","radar_area_chart","RadarAreaChart","RadarSegment","radar_segment","RadarClusterLayout","slotSector","radar_cluster_layout","radar_stack_layout","RadarStackLayout","childSector","RadarBarChart","radar_bar_chart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","radar_plotarea","FunnelSegment","chartBox","createPath","funnel_segment","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","dynamicHeight","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","funnel_chart","pyramid_chart","PyramidChart","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","heatmap_point","HeatmapChart","setRange","colorScale","minLightnessOffset","parseColor","hsl","toHSL","l","toCss","indexX","indexY","xRange","yRange","xIndex","yIndex","heatmap_chart","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","xAxisOptions","yAxisOptions","normalizedOffset","axisXItems","_getPointAxisXIndex","targetXValue","compareValues","_getPointAxisYIndex","axisYItems","targetYValue","_getPointAxisIndex","findIndex","axisItem","heatmap_plotarea","COLOR","FIRST","MAX","NOTE_TEXT","DonutPlotArea","createDonutChart","donutChart","FunnelPlotArea","createChart","chartType","errorLow","errorHigh","AXIS_NAMES","MOUSEMOVE","CONTEXTMENU","MOUSELEAVE","KEYDOWN","Chart","themeOptions","observers","addObserver","_initElement","_originalOptions","_theme","_initTheme","_focusState","_initHandlers","_initSurface","fontLoaded","_destroyed","_redraw","_attachEvents","_setElementClass","getAttribute","firstChild","seriesCopies","resolveAxisAliases","aliases","alias","applySeriesColors","getSize","chartArea","offsetWidth","force","currentSize","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","showTooltip","_sharedTooltip","_tooltip","hideTooltip","surface","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","model","_getModel","_destroyView","_setElementAccessibilityAttributes","_legend","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","description","exportOptions","currentOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","touchAction","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","applyAxisDefaults","themeAxisDefaults","axisDefaults","mapAxisOptions","axisColor","applySeriesDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","colors","seriesColor","_createPlotArea","_modelOptions","subtitle","skipSeries","selections","select","_selectStart","_select","_selectEnd","_clickHandler","_keydownHandler","_keydown","_focusHandler","_focus","_blurHandler","_blur","_mousedownHandler","_mousedown","_mouseleaveHandler","_mouseover","_mouseout","throttle","removeObserver","eventNames","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_focusPoint","_startDrilldown","_focusLegendItem","m1","sb","d0","mousedown","focus","blur","_shouldAttachMouseMove","T_","_hoveredPoint","_plotAreaHovered","_hasInactiveOpacity","_activeChartInstance","_applySeriesOpacity","_updateSeriesOpacity","cancel","_stopChartHandlers","_gestureDistance","_clearFocusedElement","suspendTracking","_zooming","resumeTracking","mousewheelZoom","scaleDelta","_drawingChartElement","leave","_startNavigation","_suppressHover","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","eventTarget","coordinates","_elementPadding","_padding","clientX","clientY","inverseTransform","elementScale","parentElement","parentMatrix","multiplyCopy","invert","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_isLegendBeforeChart","legendPosition","_preventInitialPointFocus","_focusFirstLegendItem","_focusFirstPoint","legendInFocus","isLegendBeforeChart","_navigatePoints","_navigateLegend","focusState","focusedElement","moveFocus","focusedPoint","_focusElement","itemsLength","cycleFunc","focusedLegendItemIndex","_getFocusedLegendItem","_hasFocus","ownerDocument","activeElement","_focusChart","omitHighlight","_setElementActiveDescendant","_showSeriesInactiveOpacity","_showInactiveOpacity","_clearElementActiveDescendant","_pseudoFocusedElement","_createPseudoFocusedElement","remove","removeAttribute","pseudoElement","checked","_hideInactiveOpacity","activePoint","_activePoint","_updateHoveredPoint","_displayTooltip","_displayInactiveOpacity","multipleSeries","highlightPoints","chartInstance","_chartInstanceFromPoint","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","inactiveOpacity","activeSeries","hasDefaultInactiveOpacity","hasInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","clearInterval","autoBind","bindCategoryAxisFromSeries","uniqueCategories","seriesOnAxis","hasCategoryBinding","seriesWithData","categorySamples","firstCategory","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setOptions","setDirection","setIntlService","noTransitionsRedraw","unbind","column","rangeColumn","verticalLine","pie","donut","verticalArea","scatter","scatterLine","ohlc","boxPlot","verticalBullet","polarArea","polarLine","radarArea","radarLine","waterfall","DATA_FIELDS","fieldValue","originalValue","nullValue","sparkline_shared_tooltip","ChartSharedTooltip","NO_CROSSHAIR","display","wrapNumber","Sparkline","_initialWidth","childNodes","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointsCount","pointWidth","normalizeOptions","sparkline","fade_out_animation","FadeOutAnimation","_initialOpacity","div","NavigatorHint","chartPadding","scroll","scrollWidth","minPos","clearHideTimeout","_visible","visibility","tooltipStyle","marginTop","borderTopWidth","_hideTimeout","_hideAnimation","hideDelay","navigator_hint","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","Navigator","hint","chartObserver","dl","sc","ql","ne","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","silent","redrawSlaves","slavePanes","_drag","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","_dragEnd","readSelection","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","stock_navigator","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","dirty","_seriesCount","copyNavigatorCategories","stock_chart","paintable","measurable","withGeometry","Element","GeometryArc","_bbox","_geometry","rawBBox","curvePoints","curveTo","_containsPoint","_isOnPath","ARROW_POINTER","BAR_POINTER","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","getOrigin","setOrigin","setSize","buildLabelElement","geo","styleGeometry","styleBox","getRange","gauge_Path","Gauge","contextService","surfaceElement","pointerValue","pointer","pointers","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","gauge","linear_scale_Path","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","linear_scale","Pointer","newValue","_oldValue","repaint","LinearPointer","track","trackSize","pointerHalfSize","pointerBox","pointerRangeBox","trackBox","getElementOptions","_margin","linear_pointer","ArrowLinearPointerAnimation","toScale","translateX","translateY","arrow_linear_pointer_animation","arrow_linear_pointer","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","setter","bar_linear_pointer_animation","bar_linear_pointer_Group","bar_linear_pointer","BarLinearPointer","minSlot","sizeAxis","p4","pointerPath","oldShape","renderTrack","trackOptions","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","plotAreaBox","scaleBox","radial_scale_Arc","radial_scale_Path","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","union","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","createRange","rangeGeom","rangePlaceholderColor","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","radial_scale","RadialPointerAnimation","newAngle","oldAngle","radial_pointer_animation","radial_pointer_Group","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","arrow","radial_pointer","RadialGauge","_initialPlotArea","fitScale","alignScale","_buildPointers","getDiff","midDiff","oldDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","range_pointer_animation","RangePointer","rangeColor","Encoding","initProperties","quietZoneLength","addQuietZone","convertedValue","initValue","addData","pattern","invalidCharacterError","character","addCheckSum","extend","Code11","characterMap","cCheckSumTotal","kCheckSumTotal","kCheckSumMinLength","checkSumMod","DASH_VALUE","DASH","STOP","addPattern","addCharacter","charAt","setBaseUnit","cValue","getWeightedSum","checksum","kValue","weightedSum","weightedValue","Code39Base","minBaseUnitLength","addStart","pushCheckSum","addStop","prepareValues","characterData","addBase","Code39","minRatio","maxRatio","gapWidth","splitCharacter","patternMappings","w","W","A","C","D","E","F","G","H","I","J","L","M","N","O","P","Q","R","S","T","U","V","Z","$","patternString","minBaseUnit","minHeight","getBaseUnit","toFixed","getBaseWidth","addCharacterGap","Code39ExtendedBase","charCodeAt","addExtended","code","patterns","extendedMappings","patternIndex","shiftCharacters","fromCharCode","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","Code93","SHIFT0","SHIFT1","SHIFT2","SHIFT3","TERMINATION_BAR","checkSumLength","charData","checkValues","_getCheckValues","_findCharacterByValue","wightedSum","numberRegex","alphanumericRegex","State128","encoding","is","isCode","pushState","State128AB","states","_initMoves","FNC4","SHIFT","encodingState","_moves","maxLength","numberMatch","substr","_moveFNC","_shiftState","_moveState","fnc","previousState","shifted","MOVE","states128","next4","getSubstring","_initSubStates","dependentStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","applicationIdentifiers","multiKey","ids","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","ai","validate","applicationIdentifier","getApplicationIdentifier","unsupportedAIError","Code128Base","_initStates","checkSum","getNextState","temp","MsiBase","checkSumType","checkSums","startStopLength","Modulo10","evenSum","oddSum","odd","Modulo11","weight","checkValue","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","Ean13","keyTable","digits","valueAsString","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","arrToAdd","limitedHeight","even","Encodings","code11","code39","code39extended","Code39Extended","code93","code93extended","Code93Extended","characterByValue","code128","Code128","code128a","Code128a","code128b","Code128b","code128c","Code128c","CodeGS1128","msimod10","MsiMod10","msimod11","MsiMod11","msimod1010","MsiMod1010","msimod1110","MsiMod1110","postnet","Postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean8","Ean8","ean13","surfaceSize","surfaceType","clientWidth","clientHeight","Barcode","errorHandler","onError","_setOptions","_initSurfaceElement","_createSurface","_destroySurfaceElement","_render","textMargin","encodedValue","textToDisplay","textHeight","barHeight","_getBackground","_getText","_bandsGroup","_getBands","stepX","patternItem","_textbox","splitInto","str","chunkLength","toBitsString","bitString","toDecimal","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","EncodingResult","dataString","version","IsoEncoder","getEncodingResult","inputString","errorCorrectionLevel","modes","getModes","previousMode","chooseMode","initMinNumericBeforeAlpha","initMinNumericBeforeByte","initMinAlphaBeforeByte","mode","modeString","nextMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","dataCodewordsCount","getDataCodewordsCount","DataModeInstances","getStringBitsLength","getVersion","getDataString","QRDataMode","modeIndicator","bitsInCharacterCount","getVersionIndex","getBitsCharacterCount","getModeCountString","numeric","NumericQRDataMode","inputLength","mod3","alphanumeric","AlphaNumericQRDataMode","characters","byte","ByteQRDataMode","Utf8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","VersionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","irregularAlignmentPatternsStartDistance","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","finderPatternValue","maskPatternConditions","alphaPattern","alphaRegex","alphaNumericRegex","byteRegex","generatorPolynomials","fillFunctionCell","matrices","bit","fillDataCell","xorPolynomials","multiplyPolynomials","multiplyByConstant","polynomial","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","addFormatInformation","addVersionInformation","quotient","mod","modules","addCentricPattern","addFinderSeparator","nextX","nextY","scoreFinderPatternOccurance","scores","rowColumn","scoreAdjacentSameBits","previousBits","adjacentBits","calculateDarkModulesRatioScore","darkModules","percent","mod5","previous","generatePowersOfTwo","generateGeneratorPolynomials","crossPattern","squarePattern","QRCode","elementWidth","elementHeight","quietZoneSize","dataSize","contentSize","encodeData","encoder","createQRCodeDataEncoder","encodingResult","versionInformation","padDataString","initialDataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","terminator","blocks","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","blockIdx","codewordIdx","initMatrices","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","fillData","block","cell","cellVisitor","scoreMaskMatrixes","adjacentSameBits","modulesLength","rowIndex","columnIndex","matrixIndex","optimalMatrix","encodeVersionInformation","encodeFormatInformation","encodedString","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","image","imageRect","logoSize","_getLogoSize","logoUrl","imageUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","datums","WGS84","toSquare","math","atan","tan","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","toArray","loc","precision","dest","datum","greatCircleTo","initialBearing","initialDatum","bearing","fromLat","fromLng","dToR","initialDest","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","lngAndLat","fromLatLng","PI_DIV_2","PI_DIV_4","DEG_TO_RAD","Mercator","_initOptions","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","forward","clamp","proj","lng0","centralMeridian","_projectLat","ecc","ts","con","_inverseY","ecch","phi","dphi","SphericalMercator","EPSG3857","_proj","_tm","_itm","toLocation","defineProperty","convertToHtml","removeChildren","prepend","originElement","insertBefore","toHyphens","toPixels","endsWith","detectOS","minorVersion","os","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","agent","device","testRegex","majorVersion","flatVersion","regexes","dflt","regex","getEventMap","eventMap","down","up","getSupportedFeatures","mobileOS","msPointers","safari","opera","mozilla","documentMode","detectBrowser","mobileChrome","crios","PointerEvent","MSPointerEvent","mouseAndTouchPresent","eventCapture","documentElement","addEventListener","table","transforms","prefix","hasTransitions","lowPrefix","css","delayedClick","meta","querySelector","proxy","method","on","handler","useCapture","addEventListeners","eventName","eventFilter","eventHandler","closestMatchingTarget","currentTarget","off","removeEventListeners","removeEventListener","applyEventMap","queryEventMap","setDefaultEvents","noop","renderPos","FUNCTION","Observable","_events","one","original","that","handlersIsFunction","_setEvents","Attribution","extent","_extent","newItem","_itemText","appendHtml","separator","showElement","hideElement","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","newMin","newMax","contains","directionsMap","createButton","navigateUpButton","icons","navigateRightlButton","navigateDownButton","navigateLeftButton","_keyroot","_tabindex","dispose","targetElement","TABINDEX","tabindex","_pan","panStep","button","matches","ZoomControl","zoomInButton","zoomOutButton","_change","zoomStep","Extent","initialNw","initialSe","nw","se","containsAny","locs","include","includeAll","edges","sw","World","CENTER_CHANGE","widgetService","_anchor","documentPoint","Layer","scrollElement","_beforeReset","_reset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","_readData","_hasData","_data","_layerIndex","layers","compileTemplate","renderSize","newSize","TileLayer","subdomains","viewType","_viewType","_view","locationToLayer","viewOrigin","_updateView","TileView","view","extentToPoint","tileSize","urlTemplate","pool","TilePool","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","tile","createTile","currentIndex","tileOptions","wrapIndex","subdomain","errorUrlTemplate","boundary","wrapValue","wrappedValue","ImageTile","maxWidth","maxHeight","url","urlOptions","errorUrl","z","quadkey","q","_remove","_create","maxDist","CHANGE","TapCapture","domElement","capture","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","scrollSize","makeVirtual","virtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","enabled","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","movable","dragMove","dragDelta","resistance","translateAxis","elastic","dimensions","userEvents","gesture","closestAnchor","previousGesture","previousCenter","scaleWith","tagName","Movable","transformStyle","webkitTransformOrigin","_saveCoordinates","by","scaleTo","moveAxis","newCoordinates","ShapeLayer","_initRoot","_markers","_handler","_translateSurface","_load","features","geometries","_clearMarkers","_loader","GeoJsonLoader","parse","shapeCreated","cancelled","renderPointsAsMarkers","layer","featureCreated","_panning","locationToView","_eventArgs","layerIndex","shapeIndex","_tooltipAnchor","_tooltipContext","eventOffset","_panHandler","panHandler","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","properties","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","viewToLocation","BubbleLayer","valueField","newData","scaleType","_scaleType","getLocation","locationField","symbol","_createSymbol","_drawSymbol","Scales","Symbols","SqrtScale","domain","_domain","domainRange","_ratio","rel","square","MOUSE_ENTER","MOUSE_LEAVE","MARKER_CLASS_NAME","MARKER_CLASS","MarkerLayer","_markerClickHandler","_markerClick","_addOne","Marker","arg","addTo","getTitle","titleField","_kendoNode","markerIndex","_markerMouseEnter","_createMarkerEventArgs","_markerMouseLeave","_mouseEnterHandler","_mouseEnter","_mouseLeaveHandler","_mouseLeave","templateHtml","_compileTemplate","templateElement","svgIcon","attributes","_createEventArgs","paramName","useWithBlock","requestAnimationFrame","_tickProxy","_tick","_started","done","onEnd","onCancel","Transition","timePassed","initial","_easeProxy","ease","easeOutExpo","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","getTouches","changedTouches","identifier","pointerId","TouchAxis","invalidZeroEvents","_updateLocationData","velocity","timeStamp","timeDelta","initialDelta","client","screen","Touch","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","_holdTimeout","_hold","minHold","_trigger","_clickTimeout","_shouldNotMove","_withinIgnoreThreshold","UserEvents","endTime","activeTouches","activeTouchIndex","isMoved","startTime","jQueryEvent","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","global","pressed","_surfaceMoveHandler","_surfaceEndHandler","_elementStartHandler","_elementClickHandler","defaultAction","preventDragEvent","_elementDragStartHandler","_elementSelectHandler","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","_isMultiTouch","touchDelta","touch1","touch2","_apiCall","_maxTouchesReached","_eachTouch","methodName","matchingTouch","dict","defaultThreshold","ZoomSnapBack","tapCapture","DragInertia","transition","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","scrollMovable","alwaysVisible","paneSize","sizeRatio","Scroller","hasScrolling","hasNativeScrolling","_native","useNative","scrollHeader","fixedContainer","wrapInner","inner","avoidScrolling","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","ownsElement","node","verticalSwipe","zoomSnapBack","animatedScroller","scrollTo","scrollTop","scrollLeft","mousewheelScrolling","_wheelScrollHandler","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelTimeout","deltaY","wheelDeltaY","VERTICAL_AXIS","scrollHeight","contentResized","_scale","zoomOut","enable","disable","animatedScrollTo","pullHandled","_paneChange","scrollBar","visibleScrollHints","pullOffset","messages","pullTemplate","releaseTemplate","refreshTemplate","MARKER","LOCATION","layersMap","Jp","_init","scroller","zoomControl","markerLayer","initObserver","initServices","_notifyObserver","crs","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","mousewheelThrottled","MapService","level","zoomLevel","_setExtent","_getExtent","wraparound","locationObject","_layerSize","layerToLocation","pointObject","translateWith","pointResult","eventToView","eventToLayer","eventToLocation","viewSize","_setOrigin","originLocation","_origin","newExtent","raw","layerWidth","layerHeight","_zoomAround","pivot","controls","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPosition","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","defs","_createLayer","layerDefaults","layerOptions","markerDefaults","layerConstructor","_scrollOffset","_panComplete","_panEndTimestamp","_scaleToZoom","gestureCenter","centerLocation","originPoint","tiles","_resetScroller","xBounds","yBounds","_renderLayers","newZoom","toZoom","fromZoom","map_map","mapFn","curr","sortAsc","y0","sortSource","sortTarget","Sankey","nodesOptions","nodes","links","link","nodeWidth","nodePadding","calculate","connectLinksToNodes","calculateNodeValues","calculateNodeDepths","columns","calculateNodeColumns","calculateNodeBreadths","applyNodesOffset","calculateLinkBreadths","nodesMap","sourceLinks","targetLinks","sourceId","targetId","currDepth","currentNodes","maxDepth","columnWidth","x0","kSize","calculateSankey","SankeyElement","nodeColor","nodesColors","resolveNodeOptions","nodeOptions","Link","xC","BEFORE","Label","totalWidth","nodeBox","textSizeBox","goesOutside","textY","textOrigin","textRect","drawingRect","ChartTitle","ChartLegend","LINK","NODE","_initResizeObserver","_destroyResizeObserver","ResizeObserver","entries","contentRect","_resizeObserver","observe","mouseenter","mouseleave","setLinksOpacity","linksVisuals","setOpacity","ev","isLink","isNode","isLegendItem","highlightLinks","nodeVisual","nodesVisuals","relatedTarget","nodeName","disconnect","titleBox","sankeyBox","legendArea","titleHeight","calculatedNodes","nodeEl","nodeOps","nodeInstance","labelVisual","sankey","linkOptions","calcOptions","titleVisual","legendVisual","visualNodes","sortedLinks","sourceNode","targetNode","linkOps","resolveLinkOptions","colorType","linkVisual","textOps","resolveLabelOptions","SANS","SANS11","SANS12","SANS16","TRANSPARENT","lineSeriesLegendItem","areaSeriesLegendItem","areaNoMarkersSeriesLegendItem","areaSeries","rangeAreaSeries","boxPlotSeries","outliersField","meanField","bulletSeries","lineSeries","radarAreaSeries","radarLineSeries","waterfallSeries","funnelSeries","pyramidSeries","trendlineSeriesDefaults","rangeArea","verticalRangeArea","barSeries","bubbleSeries","candlestickSeries","columnSeries","heatmap","heatmapSeries","pieSeries","donutSeries","funnel","pyramid","horizontalWaterfall","ohlcSeries","radarColumn","radarColumnSeries","polarScatter","polarScatterSeries","rangeBar","rangeBarSeries","rangeColumnSeries","scatterSeries","scatterLineSeries","verticalBoxPlot","baseTheme","isWindowAvailable","desktopBrowserRxs","mobileBrowserRxs","testRx","rxs","detectMobileOS","cordova","PhoneGap","appMode","standalone","protocol","detectDesktopBrowser","browserInfo","touchEnabled","fieldList","_match","setterCache","nextField","arrays","isPresent","isBlank","isNumeric","isDate","isCompositeFilterDescriptor","filters","ifElse","compose","reduceRight","safe","_","pairwise","accessor","isNotEmpty","isNotEmptyArray","runOrEmpty","formatDescriptors","formatter","sanitizeDateLiterals","removeAfterDot","directionFormatter","take","formatSort","formatGroup","formatAggregates","aggregateFormatter","formatDateValue","JSON","stringify","UTC","getMinutes","transformSkip","calcPage","transformTake","transformGroup","transformSort","transformAggregates","filterFormatter","isNullOrEmptyString","isNotNullOrEmptyString","operator","formatDate","ignoreCase","prop","g1","toCamelCase","convert","mapper","translateAggregate","translateAggregates","translateGroup","hasSubgroups","Member","member","HasSubgroups","Items","Key","compare","localeCompare","compareDesc","descriptorAsFunc","descriptor","_a","_b","isTransformerResult","__value","identity","aggregateBy","descriptors","transformers","expandAggregates","functions","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","calc","NEGATIVE_INFINITY","POSITIVE_INFINITY","aggregatesFuncs","agg","aggregatesCombinator","normalizeOperator","equal","equalto","ge","greater","greaterthan","greaterthanequal","isempty","isequalto","isgreaterthan","isgreaterthanorequalto","islessthan","islessthanorequalto","isnotempty","isnotequalto","isnull","le","less","lessthan","lessthanequal","notequal","notequals","notequalto","notsubstringof","operatorMap","normalizeFilters","logic","normalizeDescriptor","or","and","operatorsMap","doesnotcontain","doesnotendwith","doesnotstartwith","lastIndexOf","endswith","eq","gt","gte","isnotnull","lt","lte","neq","startswith","dateRegExp","transformCompositeFilter","combiner","transformFilter","itemProp","typedGetter","convertValue","op","compileFilter","filterBy","normalizeGroups","groupBy","originalData","groupValue","valueToString","__position","groupCombinator","aggregateResult","filteredData","orderBy","comparer","composeSortDescriptors","skipCount","takeCount","filterDescriptor","sortDescriptors","hasFilters","hasGroups","counter","reduced","touchRegExp","normalizeEvent","isTouch","Draggable","supportPointerEvent","release","mouseOnly","_pressHandler","_dragHandler","_releaseHandler","_ignoreMouse","_mouseOnly","_touchstart","_touchmove","_touchend","_restoreMouse","_mouseup","_pointerdown","isPrimary","_pointermove","_pointerup","cancelDrag","bindTo","_unbindFromCurrent","_bindToCurrent","_usePointers","default","node_map","BaseNode","initClip","clearClip","setClip","ctx","beginPath","renderPoints","setTransform","loadElements","cors","childNode","insertAt","globalAlpha","opactity","traversable","renderTo","save","restore","group_node","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","root_node","quad_root","QuadRoot","shapes","_add","_quadNode","pointShapes","QuadNode","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","quad_node","ROOT_SIZE","zIndexComparer","_zIndex","shapes_quad_tree","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","levelWeight","parents","bboxChange","_insertShape","elementsArray","_insert","childrenChange","action","sectors","getSectors","inRoot","bottomX","bottomY","renderPath","prevOut","bezierCurveTo","closePath","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","LinearGradient","createLinearGradient","RadialGradient","createRadialGradient","addGradientStops","stop","addColorStop","toCssRgba","strokeStyle","mozDash","webkitLineDash","onLoad","loading","createPromise","img","crossOrigin","complete","onload","onerror","drawImage","resolve","reject","textAlign","strokeText","fillText","canvas_surface","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","_surfacePoint","rootElement","loadingStates","promise","resolveDataURL","toDataURL","promiseAll","_enableTracking","SurfaceCursor","_resetCursor","_shapeCursor","_defaultCursor","_getCursor","_setCursor","_suspendedTracking","currentShape","_currentShape","animationFrameProxy","wnd","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","__WEBPACK_DEFAULT_EXPORT__","formats","resolvedColor","resolveColor","processor","re","channels","normalizeByte","padDigit","namedColors","percBrightness","fromBytes","Bytes","fromRGB","RGB","fromHSV","HSV","fromHSL","HSL","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","colorNames","regexp","BaseColor","toHSV","toRGB","toBytes","rgb","toDisplay","NaN","hex","hue2rgb","alphaFromHex","matchUserAgent","timeout","lastExecTime","throttled","elapsed","removeSelf","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","HasObservers","_suspended","_observerField","OptionsStore","_wrap","composite","_clear","wrapped","getArray","observable","_kendoExportVisual","domNode","elementPadding","coord","closeOrLess","tolerance","accessors","withAccessors","setCenter","anticlockwise","xRotation","getCenter","radian","_arcInterval","subIntervalsCount","subIntervalAngle","transformation","nextAngle","_intervalCurvePoints","cp1","cp2","extremeAngles","ellipseExtremeAngles","extremeX","extremeY","currentAngleX","bboxStartAngle","currentAngleY","currentPoint","currentPointX","currentPointY","oldStart","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","PRECISION","lineIntersection","s1x","s2x","s1y","s2y","nx","ny","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","normalizeArcParameters","parameters","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","_pointAt","lineIntersectionsCount","intersects","minX","maxX","minY","maxY","det","IDENTITY","scaleCopy","toMatrix","doRound","arg0","arg1","MAX_NUM","MIN_NUM","getCornerRadius","tr","br","bl","expandCopy","rectOuter","rectInner","intersect","rect1","rect2","isOutOfEndPoint","calculateCurveAt","toCubicPolynomial","ComplexNumber","real","cNumber","addConstant","negate","multiplyConstant","nthRoot","nthR","isReal","complex_number","solveCubicEquation","solveQuadraticEquation","squareRoot","b3a","y3","z1","z2","hasRootsInRange","rootField","roots","Segment","withPoints","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","_curveExtremes","x3","x4","_intersectionsTo","intersectionsCount","curveIntersectionsCount","rayIntersection","intersectsRay","_isOnCurveTo","endSegment","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","Transformation","_matrix","_optionsChange","stops_array","StopsArray","ElementsArray","optionsAccessor","GradientStop","withOptions","TBase","defineOptionsAccessors","gradient_stop","Gradient","_createStops","_userSpace","definitionId","removeStop","_radius","_fallbackFill","IDENTITY_MATRIX_HASH","combinedMatrix","currentTransform","matrixHash","_bboxCache","_matrixHash","strokeWidth","newFill","childrenField","setAccessor","getAccessor","defineAccessors","capitalized","geometryAccessor","defineGeometryAccessors","pointAccessor","definePointAccessors","GeometryCircle","parentTransform","elementTransform","elementMatrix","_clippedBBox","transformedPoint","_hasFill","_hasStroke","_splice","howMany","_clearObserver","_setObserver","_reparent","removeAt","elementsBoundingBox","elementsClippedBoundingBox","newParent","geometry_elements_array","GeometryElementsArray","WEIGHT","EXTREMUM_ALLOWED_DEVIATION","getControlPoints","getTangent","secondCP","firstCP","toLineParamaters","insertPosition","reflectionPoint","third","quadraticToCubicControlPoints","scaledPoint","shape_map","isRelative","arcTo","previousCommand","lastControlIn","cubicControlPoints","SEGMENT_REGEX","SPLIT_REGEX","segmentStart","segmentEnd","_addArcSegments","output","print","currentType","pathWidth","boundingBox","segmentBox","curveFromPoints","pointsToCurve","pointsIn","parsePath","pathInstance","params","command","parseParameters","number","ShapeMap","measureText","applyTransform","elementBoundingBox","TRANSFORM","DefinitionMap","isDefinition","clearDefinitions","createDefinitions","setElement","updateDefinition","toggleAttr","allCss","classList","mapTransform","hasDefinitions","definition","definitionChange","refUrl","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","href","hashIndex","gradient_stop_node","GradientStopNode","renderOffset","gradient_node","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","linear_gradient_node","LinearGradientNode","radial_gradient_node","RadialGradientNode","clip_node","ClipNode","renderClipRule","definition_node","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","styleAttr","replaceStyleAttr","restoreStyleAttr","querySelectorAll","styleString","applyStyle","testFragment","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","lru_cache","LRUCache","_length","put","_head","_tail","newer","older","baselineMarkerSize","defaultMeasureBox","TextMetrics","_cache","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","textStr","offsetTop","text_metrics","REPLACE_REGEX","SPACE","second","resolveFn","rejectFn","defId","pageYOffset","clientTop","pageXOffset","clientLeft","getPixels","KEY_STR","encodeBase64","input","utfInput","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","BOM","hi","encodeUnit","codeUnit","encodeUTF16BE","trail","saveAs","fileName","postToProxy","forceProxy","proxyURL","canDownload","saveAsDataURI","msSaveBlob","saveAsBlob","blob","contentType","base64","atob","Uint8Array","Blob","buffer","dataURI","URL","createObjectURL","fileSaver","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","form","proxyTarget","formData","proxyData","submit","formatRegExp","IntlError","formatMessage","flattenValues","flatten","formattedMessage","errors","NoLocale","NoCurrency","NoSupplementalCurrency","NoCurrencyRegion","NoCurrencyDisplay","NoGMTInfo","NoWeekData","NoFirstDay","NoValidCurrency","NoDateFieldNames","prev","cldr","en","_unicodeVersion","_cldrVersion","language","territory","numbers","symbols","decimal","list","percentSign","plusSign","minusSign","exponential","superscriptingExponent","perMille","infinity","nan","timeSeparator","approximatelySign","scientific","currency","currencies","BGN","displayName","EUR","USD","localeCurrency","accounting","calendar","gmtFormat","gmtZeroFormat","u","dateTimeFormats","full","long","medium","short","availableFormats","Bh","Bhm","Bhms","EBhm","EBhms","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMd","GyMMM","GyMMMd","GyMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","ms","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","yQQQ","yQQQQ","timeFormats","abbreviated","wide","quarters","dayPeriods","midnight","am","noon","pm","morning1","afternoon1","evening1","night1","eras","dateFields","era","year","quarter","month","week","weekOfMonth","dayOfYear","weekday","weekdayOfMonth","dayperiod","hour","minute","zone","millisecond","supplemental","likelySubtags","currencyData","region","US","_from","weekData","weekendStart","weekendEnd","getLocaleInfo","localeInfo","suffixes","fullName","localeFullName","availableLocaleInfo","script","DECIMAL","CURRENCY","ACCOUNTING","PERCENT","SCIENTIFIC","CURRENCY_PLACEHOLDER","PERCENT_PLACEHOLDER","NUMBER_PLACEHOLDER","LIST_SEPARATOR","GROUP_SEPARATOR","POINT","EMPTY","DEFAULT_LOCALE","LATIN_NUMBER_FORMATS","LATIN_NUMBER_SYMBOLS","patternRegExp","cldrCurrencyRegExp","getPatterns","getGroupSize","loadCurrencyUnitPatterns","currencyInfo","currencyFormats","loadNumbersInfo","includes","standard","predefinedDatePatterns","YEAR_REGEX","SHORT_DATE","datePatterns","getOwnPropertyNames","getCalendarNames","isObj","formatType","loadCalendarNames","localeCalendar","getEraNames","eraNameMap","eraAbbr","eraNames","eraNarrow","eraFormatName","loadCalendarDateFields","fieldInfo","getPredefinedFormat","pathIdx","loadCalendarPatterns","cldrCalendar","loadCalendarInfo","gregorian","localeTerritory","territoryFromName","likelyName","part","variant","MILLISECOND","UNIT_PATTERN_ONE","UNIT_PATTERN_OTHER","placeholderPattern","extractUnit","loadUnits","loadLocale","main","fractions","dateFieldName","fieldNameInfo","nameType","dateFormatNames","standAlone","lowerNameType","formatNames","cloneLower","lowerArray","lowerObject","parseRangeDate","DEFAULT_CURRENCY_FRACTIONS","SYMBOL","INVALID_CURRENCY_CODE","GLOBAL_CURRENCIES","getCurrencyInfo","throwIfNoValid","currencyDisplayInfo","lengthComparer","territoryCurrencyCode","regionCurrencies","regionCurrency","latestValidUntil","latestValidUntilRange","latestStillValid","latestStillValidDate","_tender","_to","validFrom","validTo","stillValidDate","DAYS_OF_WEEK","DEFAULT_TERRITORY","weekendRange","numberSymbols","isNegativeZero","formatCurrencySymbol","currencyDisplay","groupInteger","decimalIndex","groupSizes","integerEnd","integer","integerLength","newGroupSize","isCurrencyStyle","padString","MAX_PRECISION","decimals","DEFAULT_DECIMAL_ROUNDING","DEFAULT_PERCENT_ROUNDING","trailingZeroRegex","standardNumberFormat","isCurrency","minimumFractionDigits","toExponential","maximumFractionDigits","fractionOptions","currencyFractions","currencyFractionOptions","_digits","negativeZero","fraction","minimumIntegerDigits","useGrouping","currencyUnitPattern","applyPattern","ch","literalRegExp","PLACEHOLDER","setStyleOptions","formatOptions","setFormatLiterals","literals","quoteChar","literal","SHARP","trailingZerosRegExp","trailingPointRegExp","commaRegExp","placeholderIndex","index1","index2","customNumberFormat","setValueSpecificFormat","hasNegativeFormat","zeroFormat","isConstantFormat","constant","setGroupOptions","hasGroup","roundNumber","zeroIndex","sharpIndex","hasZero","hasSharp","trailingZeros","trimTrailingZeros","lastZero","trimRegex","setPlaceholderIndices","lastZeroIndex","applyCustomFormat","replacePlaceHolders","replacement","replaceStyleSymbols","replaceLiterals","standardFormatRegExp","standardFormatOptions","formatAndPrecision","formatNumber","exponentRegExp","nonBreakingSpaceRegExp","cleanNegativePattern","parseNumber","isPercent","cleanLiterals","negativeCurrency","currencyNumber","cleanCurrencyNumber","displays","currencyDisplays","cleanNumber","negativeSignIndex","isNegative","divideBy100","strNumber","REMOVAL_PENALTY","ADDITION_PENALTY","LENGHT_DELTA","PENALTIES","VALUE_FORMAT_LENGTH","TIME_SPECIFIERS_REGEX","DATE_OPTIONS_MAP","specifier","getSpecifier","getHourSpecifier","hour12","STAND_ALONE_SPECIFIERS","specifiersRegex","resolvedFormats","getSpecifierRegex","skeletonSpecifiers","skeleton","findBestMatch","specifiers","specifiersLength","bestMatches","maxScore","currentFormat","score","bestMatch","matchSpecifier","datePattern","datetime","skeletonFromOptions","option","spcifier","repeat","skeletonFormat","timeStartIndex","search","dateSkeleton","timeSkeleton","cacheFormat","dateNameType","formatLength","fun","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","dateFormatRegExp","formatMonth","formatQuarter","formatTimeZone","shortHours","optionalMinutes","localizedName","zZeroOffset","hoursMinutes","formatDayOfWeek","formatDayOfWeekIndex","firstDayIndex","dayIndex","formatters","convertTimeZone","fromOffset","toOffset","fromLocalOffset","offsetDate","toLocalOffset","timeZoneOffsetRegExp","offsetRegExp","numberRegExp","leadingSpacesRegex","trailingSpacesRegex","standardDateFormats","FORMATS_SEQUENCE","outOfRange","lookAhead","getNumber","valueIdx","getIndexByName","nameLength","subValue","matchLength","matchIdx","checkLiteral","parseTimeZoneOffset","noSeparator","zLiteral","calendarGmtFormats","hoursMatch","minutesMatch","hoursOffset","minutesOffset","parseMonth","parseDayOfWeek","dayOfWeek","parsers","addFormatSpaces","parseExact","createDate","pmHour","hasTime","setFullYear","parseValue","parseMicrosoftDateFormat","tzoffset","parseMicrosoftDateOffset","parseFormats","defaultFormats","currentYear","periodFormats","shortFormat","invalid","NAME_TYPES","minLength","LITERAL","addLiteral","lastPart","isHour12","splitDateFormat","patternLength","external","string","nodebuffer","nodestream","arraybuffer","ArrayBuffer","uint8array","_keyStr","stringToArrayLike","stringifyByChunk","chunk","len","subarray","fromCharCodeSupportsTypedArrays","arrayLikeToString","getTypeOf","canUseApply","stringifyByChar","resultStr","applyFromCharCode","arrayLikeToArrayLike","arrayFrom","arrayTo","byteLength","transformTo","outputType","checkSupport","inputType","MAX_VALUE_16BITS","pretty","res","self","prepareContent","inputData","isBinary","isOptimizedBinaryString","isBase64","FileReader","reader","readAsArrayBuffer","dataType","resultIndex","dataUrlPrefix","totalLength","decode","string2binary","GenericWorker","streamInfo","generatedError","extraStreamInfo","isPaused","isFinished","isLocked","_listeners","emit","flush","cleanUp","listener","pipe","registerPrevious","mergeStreamInfo","processChunk","pause","withError","withStreamInfo","me","utf8len","_utf8len","utf8encode","buf","m_pos","str_len","buf_len","string2buf","utf8decode","c_len","utf16buf","buf2string","Utf8DecodeWorker","leftOver","previousData","nextBoundary","utf8border","usableData","Utf8EncodeWorker","ConvertWorker","destType","accumulate","helper","updateCallback","dataArray","chunkType","_internalType","resultType","_outputType","mimeType","_mimeType","err","transformZipOutput","newBlob","remainingBytes","StreamHelper","worker","internalType","_worker","updateCb","evt","__proto__","binary","createFolders","compression","compressionOptions","comment","unixPermissions","dosPermissions","DataWorker","dataP","dataIsReady","_tickScheduled","_tickAndRepeat","DataLengthProbe","propName","makeTable","crc32wrapper","crc","crc32","crc32str","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","compressedContent","getContentWorker","uncompressWorker","data_length","getCompressedWorker","createWorkerFrom","uncompressedWorker","compressWorker","ZipObject","_dataBinary","internalStream","askUnicodeString","_decompressWorker","isUnicodeString","async","onUpdate","_compressWorker","magic","arrayType","resolved","Uint16Array","Uint32Array","FlateWorker","_pako","_pakoAction","_pakoOptions","_createPako","Deflate","Inflate","onData","compressions","STORE","DEFLATE","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_END","decToHex","dec","bytes","generateZipParts","streamedContent","streamingEnded","platform","encodeFileName","dosTime","dosDate","file","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","isDir","generateUnixExternalFileAttr","generateDosExternalFileAttr","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","header","fileRecord","dirRecord","ZipFileWorker","streamFiles","bytesWritten","zipComment","zipPlatform","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","currentFilePercent","remainingFiles","openedSource","record","closedSource","localDirLength","dirEnd","centralDirLength","generateCentralDirectoryEnd","prepareNextSource","sources","DataReader","zero","checkOffset","checkIndex","newIndex","setIndex","byteAt","readInt","readString","readData","lastIndexOfSignature","sig","readAndCheckSignature","readDate","dostime","ArrayReader","sig0","sig1","sig2","sig3","StringReader","Uint8ArrayReader","readerFor","ZipEntry","loadOptions","isEncrypted","bitFlag","useUTF8","readLocalPart","localExtraFieldsLength","fileNameLength","compressionMethod","findCompression","decompressed","readCentralPart","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","localHeaderOffset","readExtraFields","parseZIP64ExtraField","fileComment","processAttributes","madeBy","fileNameStr","extraReader","extraFieldId","extraFieldLength","extraFieldValue","handleUTF8","decodeParamType","fileCommentStr","upath","findExtraFieldUnicodePath","fileNameByteArray","decodeFileName","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","ZipEntries","files","checkSignature","expectedSignature","signature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","readCentralDir","zip64","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","prepareReader","checkEntryCRC32","zipEntry","zip","checkCRC32","optimizedBinaryString","zipEntries","results","fileAdd","o","forceTrailingSlash","parentFolder","folderAdd","zipObjectContent","lastSlash","createFolders$1","isRegExp","JSZip","newObj","cb","filename","relativePath","folder","newFolder","kids","generate","generateInternalStream","opts","zipFileWorker","fileCompression","zipCompression","compressionName","getCompression","generateWorker","generateAsync","loadAsync","dateToJulianDays","BASE_DATE","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","thing","parseJSON","ESC","func","foreach","XMLHEAD","RELS","DRAWINGS_RELS_XML","rels","rId","numChar","colIndex","letter","ref","$ref","filterRowIndex","frozenRows","freezePane","rowSplit","toWidth","px","maximumDigitWidth","Worksheet","sharedStrings","borders","_strings","_styles","_borders","_validations","_comments","_drawings","drawings","_hyperlinks","hyperlinks","relsToXML","comments","WORKSHEET_RELS","sheetIndex","toXML","mergeCells","mergedCells","inflate","rowData","rowsByIndex","indexRows","_source","cells","sorted","sortByIndex","fillCells","_readCells","autoFilter","validations","defaultCellStyleId","defaultCellStyle","_hasDisabledCells","disabled","_lookupStyle","lastRow","_getLastRow","lastCol","_getLastCol","WORKSHEET","frozenColumns","showGridLines","legacyDrawing","hasDisabledCells","skipCustomHeight","rowHeight","ci","autoWidth","ri","toHeight","formula","writeFormula","spreadsheetFilters","sqref","showErrorMessage","allowBlank","showDropDown","errorTitle","formula1","formula2","colSplit","commentsXML","COMMENTS_XML","drawingsXML","images","drw","parseRef","topLeftCell","colOffset","pixelsToExcel","rowOffset","imageId","LEGACY_DRAWING","_lookupString","indexes","uniqueCount","json","_lookupBorder","cellData","_cell","cellIndex","EMPTY_CELL","borderLeft","borderRight","borderTop","borderBottom","dBorders","diagonal","defStyle","borderId","colSpan","displayValue","stripFunnyChars","dateToSerial","packTime","mm","ss","serial","packDate","cellName","validation","_addValidation","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","comparerType","allowNulls","showButton","messageTemplate","titleTemplate","countData","greaterThanOrEqualTo","lessThanOrEqualTo","General","t0","convertColor","maybeRGB","$0","$1","Workbook","_images","_imgId","_sheets","sheets","imageFilename","toZIP","createZip","docProps","CORE","creator","lastModifiedBy","created","modified","toJSON","sheetCount","APP","sheet","xl","WORKBOOK_RELS","media","sheetIds","WORKBOOK","filterNames","userNames","localSheetId","quoteSheet","hidden","sheetName","def","localName","worksheets","drawingsRels","sheetRels","commentFiles","drawingFiles","sheetXML","relsXML","hasFont","underline","bold","italic","fontFamily","fontSize","fontInPt","fontInPx","convertFontSize","fills","STYLES","fi","borderTemplate","fontId","fillId","numFmtId","indent","SHARED_STRINGS","CONTENT_TYPES","toBlob","borderSideTemplate","borderStyle","diag","pushUnique","getSpan","rowSpan","getrow","getcol","upperStr","insertCell","topLeftRef","spanCell","nextRow","insertCellAt","appendCell","SPREADSHEET_FILTERS","generators","SPREADSHEET_CUSTOM_FILTER","criteria","customOperator","customValue","SPREADSHEET_DYNAMIC_FILTER","dynamicFilterType","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","custom","dynamic","doesnotmatch","esc","quarter1","quarter2","quarter3","quarter4","january","february","march","april","may","june","july","august","september","october","november","december","es2015_align","anchorRect","anchorAlign","elementRect","elementAlign","anchorHorizontal","anchorVertical","elementHorizontal","elementVertical","horizontalMargin","verticalMargin","addScroll","es2015_window","defaultView","es2015_document","cachedWidth","windowViewport","win","getDocument","innerHeight","innerWidth","scrollbarWidth","bounding_offset","viewport","es2015_offset","rectOfHiddenElement","until","scrollPosition","docElement","element_scroll_position","offset_parent","offsetParent","position_with_scroll","offsetParentElement","offsetRect","parentOffset","parentStyles","elementScrollPosition","parentScrollPosition","offsetParentScrollPosition","positionScale","removeScroll","viewPortSize","anchorSize","anchorAlignPoint","elementAlignPoint","marginToAdd","isBeforeAnchor","restrict_to_view","collisions","viewPort","elementTop","elementLeft","viewPortHeight","viewPortWidth","isVerticalFit","isHorizontalFit","isVerticalFlip","isHorizontalFlip","flippedVertical","flippedHorizontal","fittedVertical","fittedHorizontal","flipped","fitted","sibling","nextElementSibling","sibling_container","parentElements","siblingElements","containerElement","memoize","called","elementSource","canUseDOM","currentDocument","isDifferent","caretAltUpIcon","caretAltRightIcon","caretAltDownIcon","caretAltLeftIcon","caretAltToRightIcon","caretAltToLeftIcon","caretAltExpandIcon","chevronUpIcon","chevronRightIcon","chevronDownIcon","chevronLeftIcon","arrowRightIcon","arrowLeftIcon","columnsIcon","reorderIcon","moreVerticalIcon","homeIcon","displayInlineFlexIcon","dropletSliderIcon","maxWidthIcon","rightDoubleQuotesIcon","undoIcon","redoIcon","clockIcon","calendarIcon","printIcon","linkIcon","unlinkIcon","lockIcon","unlockIcon","cancelIcon","checkIcon","checkCircleIcon","xIcon","xCircleIcon","plusIcon","minusIcon","sortAscSmallIcon","sortDescSmallIcon","filterIcon","filterClearIcon","hyperlinkOpenIcon","windowIcon","windowRestoreIcon","windowMinimizeIcon","searchIcon","stickIcon","unstickIcon","setColumnPositionIcon","starOutlineIcon","starIcon","exclamationCircleIcon","paletteIcon","dropletIcon","slidersIcon","dropletSlashIcon","boldIcon","italicIcon","underlineIcon","fontFamilyIcon","foregroundColorIcon","strikethroughIcon","subscriptIcon","supscriptIcon","listOrderedIcon","listUnorderedIcon","indentIcon","outdentIcon","insertTopIcon","insertMiddleIcon","insertBottomIcon","alignLeftIcon","alignCenterIcon","alignRightIcon","alignJustifyIcon","codeSnippetIcon","selectAllIcon","applyFormatIcon","clearCssIcon","tableAddIcon","tableColumnInsertLeftIcon","tableColumnInsertRightIcon","tableRowInsertAboveIcon","tableRowInsertBelowIcon","tableColumnDeleteIcon","tableRowDeleteIcon","tableDeleteIcon","cellsMergeIcon","cellSplitHorizontallyIcon","fontSizeIcon","tableWizardIcon","mapMarkerIcon","mapMarkerTargetIcon","fileAddIcon","fileImageIcon","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","_has","TypeError","shrinkBuf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","chunks","Buf8","Buf16","Buf32","Int32Array","fnUntyped","typedOK","strApplyOK","strApplyUintOK","_buf2binstring","adler32","adler","s1","s2","crcTable","BAD","TYPE","inflate_fast","strm","_in","_out","beg","dmax","wsize","whave","wnext","s_window","hold","bits","lcode","dcode","lmask","dmask","here","from_source","next_in","avail_in","next_out","avail_out","lencode","distcode","lenbits","distbits","dolen","msg","sane","MAXBITS","ENOUGH_LENS","ENOUGH_DISTS","CODES","LENS","DISTS","lbase","lext","dbase","dext","inflate_table","lens","lens_index","codes","table_index","work","incr","mask","here_bits","here_op","here_val","sym","drop","used","huff","base_index","offs","extra","extra_index","LENS$1","DISTS$1","Z_OK$1","Z_STREAM_ERROR$1","HEAD","ENOUGH_LENS$1","ENOUGH_DISTS$1","zswap32","InflateState","havedict","flags","check","wbits","ncode","nlen","ndist","have","lendyn","distdyn","back","was","inflateInit2","windowBits","inflateReset2","inflateReset","inflateResetKeep","total_in","total_out","lenfix","distfix","virgin","fixedtables","updatewindow","last_bits","last_op","last_val","hbuf","inf_leave","xflags","extra_len","hcrc","data_type","inflateSetDictionary","dictionary","dictLength","ZStream","GZheader","chunkSize","opt","ended","status","inflateGetHeader","_mode","next_out_utf8","utf8str","allowBufError","binstring2buf","inflateEnd","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","STORED_BLOCK","STATIC_TREES","DYN_TREES","MIN_MATCH","MAX_MATCH","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","pending_buf","pending","send_bits","bi_valid","bi_buf","send_code","tree","bi_reverse","gen_codes","bl_count","next_code","init_block","dyn_ltree","dyn_dtree","bl_tree","opt_len","static_len","last_lit","bi_windup","smaller","_n2","_m2","pqdownheap","heap","heap_len","compress_block","ltree","dtree","lc","lx","d_buf","l_buf","build_tree","desc","stree","heap_max","gen_bitlen","xbits","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","_tr_stored_block","stored_len","copy_block","_tr_tally","lit_bufsize","MIN_MATCH$1","MAX_MATCH$1","MIN_LOOKAHEAD","errorCode","rank","zero$1","flush_pending","pending_out","flush_block_only","_tr_flush_block","opt_lenb","static_lenb","max_blindex","detect_data_type","black_mask","l_desc","d_desc","build_bl_tree","bl_desc","strategy","send_all_trees","lcodes","dcodes","blcodes","block_start","strstart","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","ins_h","hash_shift","hash_mask","deflate_stored","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","max_lazy_match","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","configurationTable","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE$1","MAX_BITS$1","deflateReset","deflateResetKeep","_tr_init","tr_static_init","lm_init","deflate","old_flush","Z_OK","bstate","deflate_huff","deflate_rle","_tr_align","bi_flush","toString$1","memLevel","gzip","deflateInit2","deflateSetHeader","deflateSetDictionary","avail","tmpDict","_dict_set","deflateEnd","deflate$1","deflator","__WEBPACK_AMD_DEFINE_RESULT__","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","iterator","deprecate","deprecationMessage","warn","nextKey","merge","inherit","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","splitStr","hasParent","inStr","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","doc","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","init","inputHandler","pointersLen","changedPointersLen","changedPointers","isFirst","isFinal","session","computeInputData","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","deltaTime","getAngle","getDistance","computeDeltaXY","offsetDelta","prevDelta","prevInput","deltaX","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getScale","getRotation","maxPointers","computeIntervalInputData","lastInterval","srcEvent","recognize","props","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","removePointer","eventTypeNormalized","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SingleTouchInput","started","normalizeSingleTouches","changed","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","allTouches","targetTouches","changedTargetTouches","DEDUP_TIMEOUT","TouchMouseInput","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","touchMap","cssSupports","CSS","supports","TouchAction","compute","actions","recognizers","recognizer","getTouchAction","cleanTouchActions","hasPanX","hasPanY","preventDefaults","prevented","hasNone","preventSrc","STATE_POSSIBLE","Recognizer","uniqueId","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","oldCssProps","createInputInstance","inputClass","toggleCssProps","recognizeWith","requireFailure","cssProps","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","isValid","directionTest","hasMoved","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stopped","curRecognizer","existing","triggerDomEvent","gestureEvent","initEvent","INPUT_MOVE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Tap","Pan","Swipe","Pinch","Rotate","Press","define","exports","__webpack_require__","module","BehaviorSubject","Subject","_subscribe","subscriber","subscription","hasError","thrownError","_throwIfClosed","subscribe","lift","observerOrNext","isSubscriber","Subscriber","isObserver","isSubscription","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","unsubscribe","Symbol_observable","operations","pipeFromArray","toPromise","config","ReplaySubject","_bufferSize","Infinity","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","currentObservers","subject","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","Subscription","arrRemove","asObservable","COMPLETE_NOTIFICATION","createNotification","kind","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","Function","thisArg","ConsumerObserver","partialObserver","handleUnhandledError","useDeprecatedNextContext","useDeprecatedSynchronousErrorHandling","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","hasLift","getSubject","_teardown","connect","connection","createOperatorSubscriber","refCount","higherOrderRefCount","combineLatest","scheduler","popScheduler","resultSelector","popResultSelector","observables","argsArgArrayOrObject","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","createObject","mapOneOrManyArgs","execute","executeSchedule","concatAll","mergeAll","defer","observableFactory","innerFrom","forkJoin","remainingCompletions","remainingEmissions","sourceIndex","observeOn","operate","subscribeOn","schedule","scheduleAsyncIterable","Symbol","asyncIterator","scheduled","isInteropObservable","scheduleObservable","isArrayLike","scheduleArray","isPromise","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","isEventTarget","isNodeStyleEventEmitter","addListener","removeListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","mergeMap","subTarget","fromInteropObservable","obs","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","iterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__awaiter","__asyncValues","e_1_1","catch","asyncScheduler","timer","concurrent","popNumber","of","throwError","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","argsOrArgArray","buffers","completed","onNext","onComplete","onFinalize","OperatorSubscriber","shouldUnsubscribe","auditTime","audit","durationSelector","durationSubscriber","isComplete","endDuration","cleanupDuration","catchError","selector","handledResult","innerSub","syncUnsub","concatMap","project","debounceTime","activeTask","lastTime","emitWhenIdle","targetTime","defaultIfEmpty","delayWhen","delayDurationSelector","subscriptionDelay","ignoreElements","mapTo","distinctUntilChanged","comparator","keySelector","defaultCompare","previousKey","currentKey","finalize","hasDefaultValue","throwIfEmpty","EmptyError","ii","mergeInternals","onBeforeNext","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","refCounter","sharedConnection","conn","accumulator","seed","scanInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","onSubscriber","skipWhile","taking","startWith","switchMap","innerSubscriber","innerIndex","outerIndex","seen","takeUntil","notifier","tapObserver","isUnsub","throttleTime","duration$","leading","trailing","sendValue","endThrottling","send","cleanupThrottling","startThrottle","defaultErrorFactory","Action","intervalProvider","setInterval","delegate","AsyncAction","recycleAsyncId","requestAsyncId","_scheduler","_execute","_delay","errored","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","animationFrameProvider","request","cancelAnimationFrame","timestamp","animationFrameScheduler","AnimationFrameScheduler","flushId","_scheduled","AnimationFrameAction","getSymbolIterator","getPrototypeOf","objectProto","getKeys","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","isObservable","__asyncGenerator","getReader","__await","read","releaseLock","liftedSource","callOrApply","not","pred","fns","CommonService","userState$","organisationDetail$","_userState","_organisationDetail","_routeParam_companyId","_routeParam_entityId","_all_apps","_company_details","_navigationLinkListSubject","_hasDocumentAccess","userState","organisationDetail","routeParam_companyId","routeParam_entityId","all_apps","company_details","navigationLinkListSubject","hasDocumentAccess","static","_angular_core__WEBPACK_IMPORTED_MODULE_1__","Yz7","factory","ɵfac","providedIn","DocumentPublishManager","_serviceFactory","_operation","i0","i1","core","DocumentPublishManagerService","documenPublishManager","getUserList","requestObj","getSenderEmailOptionList","getCustomerEntityDistributionListEmailList","sendEmail","CdkAccordionModule","ɵmod","ɵinj","ClipboardModule","extendStyles","importantProperties","setProperty","removeProperty","toggleNativeDragInteractions","toggleVisibility","combineTransforms","initialTransform","parseCssTimeUnitsToMs","multiplier","parseCssPropertyValue","computedStyle","getPropertyValue","getMutableClientRect","clientRect","isInsideClientRect","adjustClientRect","isPointerNearClientRect","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","_document","getViewportScrollPosition","handleScroll","_getEventTarget","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","scrollY","scrollX","deepCloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","activeEventListenerOptions","dragImportantProperties","DragRef","_disabled","_dropContainer","coerceBooleanProperty","_toggleNativeDragInteractions","_handles","_config","_ngZone","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_disabledHandles","_direction","dragStartDelay","beforeStarted","released","entered","exited","dropped","moved","_pointerDown","targetHandle","_getTargetHandle","_initializeDragSequence","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_endDragSequence","isDragging","isReceiving","run","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","constrainPosition","_initialClientRect","activeTransform","_applyRootElementTransform","_getDragDistance","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","handles","coerceElement","disabledHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","_removeRootElementListeners","runOutsideAngular","_initialTransform","SVGElement","_ownerSVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","change","_containInsideBoundaryOnResize","_parentDragRef","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","disableHandle","enableHandle","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_preview","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","dropContainer","placeholder","_createPlaceholderElement","createComment","shadowRoot","_getShadowRoot","_createPreviewElement","replaceChild","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isFakeEvent","isFakeTouchstartFromScreenReader","isFakeMousedownFromScreenReader","draggable","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","isPointerOverContainer","_isOverContainer","previousIndex","previousContainer","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","preview","rootRect","viewRef","viewContainer","createEmbeddedView","detectChanges","getRootNode","matchElementSize","getTransform","placeholderRect","getTransformTransitionDurationInMs","transitionedProperties","propertyIndex","rawDurations","rawDelays","propertyName","placeholderConfig","placeholderTemplate","handleElement","referenceRect","_getViewportScrollPosition","svgMatrix","svgPoint","createSVGPoint","matrixTransform","dropContainerLock","lockAxis","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","rootNodes","ELEMENT_NODE","sourceRect","SingleAxisSortStrategy","_itemPositions","_previousSwap","withItems","pointerDelta","_getItemIndexFromPointerPosition","isHorizontal","currentItem","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","moveItemInArray","fromIndex","toIndex","isDraggedItem","elementToOffset","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","withSortPredicate","_sortPredicate","getActiveItemsSnapshot","updateOnScroll","elementToMeasure","immediateSibling","itemPositions","lastItemRect","firstItemRect","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","receivingStarted","receivingStopped","_isDragging","_draggables","_siblings","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","_scrollNode","scrollStep","scrollBy","withScrollableParents","registerDropContainer","_sortStrategy","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_cacheParentPositions","previousItems","connectedTo","withOrientation","_scrollableElements","_clientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","getElementScrollDirections","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","_stopReceiving","_canReceive","elementFromPoint","nativeElement","_startReceiving","activeSiblings","initiator","receiver","draggedItems","activeCapturingEventOptions","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","_clearGlobalListeners","streams","eventOptions","ngOnDestroy","DOCUMENT","ɵprov","token","DEFAULT_CONFIG","DragDrop","createDrag","createDropList","DragDropModule","providers","imports","CdkScrollableModule","CdkListboxModule","CdkStepperModule","BidiModule","CdkTableModule","ScrollingModule","CdkTreeModule","MatFormFieldModule","MatCommonModule","CommonModule","ObserversModule","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","provide","InjectionToken","deps","Overlay","useFactory","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","scrollStrategies","reposition","MatAutocompleteModule","OverlayModule","MatOptionModule","MatBadgeModule","A11yModule","MatBottomSheetModule","DialogModule","PortalModule","MatButtonToggleModule","MatRippleModule","MatCardModule","_MatCheckboxRequiredValidatorModule","MatCheckboxModule","MAT_CHIPS_DEFAULT_OPTIONS","MatChipsModule","ErrorStateMatcher","useValue","separatorKeyCodes","ENTER","MatStepperIntl","changes","optionalLabel","completedLabel","editableLabel","MAT_STEPPER_INTL_PROVIDER","Optional","SkipSelf","MAT_STEPPER_INTL_PROVIDER_FACTORY","parentIntl","MatStepperModule","MatIconModule","TextFieldModule","MatInputModule","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","startDateLabel","endDateLabel","formatYearRange","formatYearRangeLabel","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY","MatDatepickerModule","MatButtonModule","MatDividerModule","MatExpansionModule","MatGridListModule","MatLineModule","MatListModule","MatPseudoCheckboxModule","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_MENU_SCROLL_STRATEGY_FACTORY","MatMenuModule","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MatSelectModule","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY","scrollThrottle","MatTooltipModule","MatPaginatorIntl","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","page","pageSize","MAT_PAGINATOR_INTL_PROVIDER","MAT_PAGINATOR_INTL_PROVIDER_FACTORY","MatPaginatorModule","MatProgressBarModule","MatProgressSpinnerModule","MatRadioModule","MatSidenavModule","MatSliderModule","_MatSlideToggleRequiredValidatorModule","MatSlideToggleModule","MatSnackBarModule","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","MatSortModule","MatTableModule","MatTabsModule","MatToolbarModule","MatTreeModule","CdkMenuModule","MaterialExampleModule","oAB","cJS","MatDialogModule","MatNativeDateModule","EditorModule","routes","loadChildren","DashboardModule","preload","SettingsModule","ContactsModule","OfficesModule","DocumentsModule","DocumentdownloadModule","ImpersonateModule","redirectTo","AppRoutingModule","RouterModule","forRoot","useHash","preloadingStrategy","PreloadAllModules","AppComponent","myButtonClicked","http","notifierService","commonService","documentPublishManagerService","showLoad","serviceName","ngOnInit","i2","i3","i4","Xpm","selectors","decls","vars","consts","rf","AppComponent_div_0_Template","invalidTimingValue","ɵRuntimeError","ngDevMode","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","player","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","makeAnimationEvent","triggerName","fromState","toState","totalTime","getOrSetDefaultValue","parseTimelineCommand","separatorPos","getParentElement","host","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","multi","elem","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","matchesElement","_selector","computeStyle","animate","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","copyObj","convertToMap","styleMap","copyStyles","backfill","formerStyles","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","sequence","PARAM_REGEX","extractStyleParams","interpolateParams","varName","localVal","invalidParamValue","iteratorToArray","DASH_CASE_REGEXP","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","ANY_STATE","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","expr","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","metadata","warnings","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","invalidTrigger","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","sub","invalidState","metadataName","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","ast","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","applyParamDefaults","elm","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","listen","baseEvent","restart","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","destroyed","markedForDestroy","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","isElementNode","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","previousValue","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","post","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","oldValue","valuesMap","elementPropsMap","cloakVals","failedElements","nodeSet","localRootMap","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","eventPhase","SpecialCasedStyles","initialStylesByElement","_startStyles","_endStyles","initialStyles","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","_renderer","createRenderer","encapsulation","ViewEncapsulation","None","issueAnimationCommand","BrowserAnimationFactory","RendererAnimationPlayer","_command","_listen","renderer","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","onRendererDestroy","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","queueMicrotask","scheduleListenerCallback","_onDestroy","destroyNode","namespace","createText","newChild","refChild","isMove","oldChild","isHostElement","selectRootElement","selectorOrNode","preserveContent","nextSibling","setStyle","removeStyle","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","SHARED_ANIMATION_PROVIDERS","useClass","ɵAnimationStyleNormalizer","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","InjectableAnimationEngine","appRef","RendererFactory2","instantiateRendererFactory","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","withConfig","ngModule","BrowserModule","HeaderModule","SidebarModule","MainbodyModule","AppModule","bootstrap","GridModule","ChartsModule","ScrollViewModule","TooltipsModule","MultiSelectModule","HttpClientModule","FormsModule","ReactiveFormsModule","ToastrModule","timeOut","positionClass","TagInputModule","DialogsModule","ButtonsModule","DropDownsModule","__NgCli_bootstrap_1","bootstrapModule","tokens","stateChangeExpr","animateChild","stagger","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","timeAtPosition","longestPlayer","longestSoFar","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_platform","_nonce","_matchMedia","isBrowser","matchMedia","noopMatchMedia","WEBKIT","BLINK","createEmptyStyleRule","nonce","insertRule","CSP_NONCE","BreakpointObserver","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","coerceArray","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","response","breakpoints","queries","ID_DELIMITER","addAriaReferencedId","getAriaReferenceIds","existingId","removeAriaReferencedId","filteredIds","ListKeyManager","_activeItemIndex","_activeItem","_letterKeyStream","_typeaheadSubscription","_vertical","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","_skipPredicateFn","_pressedLetters","tabOut","QueryList","_itemChangesSubscription","newItems","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","_getItemsArray","getLabel","setActiveItem","cancelTypeahead","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","onKeydown","keyCode","isModifierAllowed","modifier","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","setLastItemActive","PAGE_UP","targetIndex","_setActiveItemByIndex","PAGE_DOWN","hasModifierKey","toLocaleUpperCase","NINE","activeItemIndex","activeItem","isTyping","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","FocusKeyManager","setFocusOrigin","InteractivityChecker","isDisabled","hasAttribute","isVisible","hasGeometry","getClientRects","isTabbable","frameElement","getFrameElement","getWindow","getTabIndexValue","tabIndexValue","IOS","isPotentiallyTabbableIOS","FIREFOX","isFocusable","isPotentiallyFocusable","isHiddenInput","isInputElement","isNativeFormElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","ignoreVisibility","FocusTrap","_enabled","_startAnchor","_endAnchor","_toggleAnchorTabIndex","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","isEnabled","toggleAnchors","isStable","onStable","FocusTrapFactory","deferCaptureElements","buttons","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","modalityEventListenerOptions","InputModalityDetector","mostRecentModality","_modality","ngZone","_mostRecentTarget","_lastTouchMs","_onKeydown","_onMousedown","_onTouchstart","modalityDetected","modalityChanged","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","monitor","checkChildren","rootNode","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","_isLastInteractionFromInputLabel","isFromInteraction","_originTimeoutId","_emitOrigin","rootNodeFocusListeners","modality","mostRecentTarget","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","inject","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","documentWindow","computedColor","bodyClasses","highContrastModeDetector","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","Directionality","EventEmitter","_resolveDirectionality","rawValue","coerceNumberProperty","fallbackValue","_isNumberValue","coerceCssPixelValue","elementOrRef","ElementRef","CdkDialogContainer_ng_template_0_Template","DialogConfig","panelClass","hasBackdrop","backdropClass","disableClose","ariaDescribedBy","ariaLabelledBy","ariaModal","autoFocus","restoreFocus","closeOnNavigation","closeOnDestroy","closeOnOverlayDetachments","CdkDialogContainer","BasePortalOutlet","_elementRef","_focusTrapFactory","_interactivityChecker","_overlayRef","_focusMonitor","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledByQueue","attachDomPortal","portal","_portalOutlet","_contentAttached","_initializeFocusTrap","_handleBackdropClicks","_captureInitialFocus","_trapFocus","_restoreFocus","attachComponentPortal","attachTemplatePortal","_recaptureFocus","_containsFocus","_forceFocus","_focusByCssSelector","elementToFocus","_focusTrap","focusedSuccessfully","_focusDialogContainer","focusConfig","focusTargetElement","_getFocusedElementPierceShadowDom","backdropClick","i1$1","ɵcmp","viewQuery","CdkPortalOutlet","_t","hostAttrs","hostVars","hostBindings","dependencies","DialogRef","overlayRef","keydownEvents","outsidePointerEvents","ESCAPE","focusOrigin","_detachSubscription","detachments","containerInstance","closedSubject","componentInstance","updatePosition","updateSize","addPanelClass","removePanelClass","DIALOG_SCROLL_STRATEGY","DIALOG_DATA","DEFAULT_DIALOG_CONFIG","DIALOG_SCROLL_STRATEGY_PROVIDER","DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY","Dialog","openDialogs","_parentDialog","_openDialogsAtThisLevel","afterOpened","_afterOpenedAtThisLevel","_overlay","_injector","_defaultOptions","_overlayContainer","scrollStrategy","_afterAllClosedAtThisLevel","_ariaHiddenElements","afterAllClosed","_getAfterAllClosed","_scrollStrategy","componentOrTemplateRef","getDialogById","overlayConfig","_getOverlayConfig","dialogRef","dialogContainer","_attachContainer","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","closeAll","reverseForEach","dialog","OverlayConfig","positionStrategy","centerHorizontally","centerVertically","disposeOnNavigation","userInjector","injector","viewContainerRef","OverlayRef","containerType","containerPortal","ComponentPortal","Injector","componentFactoryResolver","attach","TemplateRef","_createInjector","$implicit","templateContext","TemplatePortal","contentRef","componentRef","fallbackInjector","emitEvent","overlayContainer","getContainerElement","BACKSPACE","DELETE","modifiers","metaKey","MutationObserverFactory","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","stream","mutations","childList","subtree","CdkObserveContent","_unsubscribe","debounce","_debounce","_contentObserver","_currentSubscription","ngAfterContentInit","ɵdir","inputs","outputs","exportAs","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","CloseScrollStrategy","_scrollDispatcher","_detach","detach","scrollable","overlayElement","getElementRef","_initialScrollPosition","NoopScrollStrategy","isElementScrolledOutsideView","scrollContainers","containerBounds","isElementClippedByScrolling","scrollContainerRect","RepositionScrollStrategy","autoClose","overlayRect","ScrollStrategyOptions","configKeys","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_outsidePointerEvents","_addEventListeners","_cursorOriginalValue","OverlayContainer","_containerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","_host","_keyboardDispatcher","_location","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_positionStrategy","backdropElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","attachments","getConfig","updatePositionStrategy","sizeConfig","updateScrollStrategy","enablePointer","showingClass","backdropToDetach","_backdropTimeout","cssClasses","isAdd","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","_preferredPositions","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_positionChanges","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","_previousPushAmount","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","originX","startX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","overlayY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentOverflow","cssClass","STANDARD_DROPDOWN_BELOW_POSITIONS","STANDARD_DROPDOWN_ADJACENT_POSITIONS","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","_width","_height","shouldBeFlushHorizontally","shouldBeFlushVertically","xPosition","xOffset","marginLeft","marginRight","marginBottom","OverlayPositionBuilder","flexibleConnectedTo","nextUniqueId","_componentFactoryResolver","_positionBuilder","_directionality","_animationsModuleType","_createHostElement","_createPaneElement","portalOutlet","_createPortalOutlet","_appRef","ApplicationRef","DomPortalOutlet","i5","i6","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","hasV8BreakIterator","Intl","v8BreakIterator","supportsPassiveEvents","shadowDomIsSupported","Platform","_platformId","isPlatformBrowser","EDGE","TRIDENT","ANDROID","SAFARI","PLATFORM_ID","supportsPassiveEventListeners","scrollToFunction","_supportsShadowDom","createShadowRoot","attachShadow","ShadowRoot","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","Portal","_attachedHost","setAttachedHost","component","projectableNodes","templateRef","elementRef","DomPortal","_attachedPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","outletElement","_defaultInjector","anchorNode","componentFactory","resolveComponentFactory","createComponent","NULL","attachView","hostView","viewCount","detachView","_getComponentRootNode","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","clearImmediate","immediateProvider","AsapScheduler","AsapAction","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","ViewportRuler","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_history","history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","hostname","port","pathname","newPath","replaceState","go","getState","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","includeHash","queryParams","externalUrl","HashLocationStrategy","locationStrategy","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","_basePath","_stripOrigin","_stripIndexHtml","normalize","isCurrentPathEqualTo","_stripBasePath","basePath","strippedUrl","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","ɵɵinject","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TRL","TRY","TTD","TWD","TZS","UAH","UGX","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","DateFormat","getLocaleTimeFormat","TimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","DateTimeFormat","getLocaleNumberSymbol","NumberSymbols","getLocaleNumberFormat","NumberFormats","checkFullData","ExtraData","LocaleId","extractTime","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setUTCFullYear","timeSetter","setUTCHours","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","addDateMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","newDate","localeId","getLocaleId","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","num","negWrap","neg","strNum","getDatePart","formatFractionalSeconds","localeMinus","extended","getDateTranslation","getLocaleMonthNames","formStyle","MonthsFormat","MonthsStandalone","getLocaleDayNames","DaysFormat","DaysStandalone","currentHours","currentMinutes","rules","getLocaleExtraDayPeriodRules","rule","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","DayPeriodsFormat","DayPeriodsStandalone","getLocaleEraNames","erasData","JANUARY","THURSDAY","getThursdayThisWeek","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","requestedTimezoneOffset","valueOf","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","patternParts","positiveParts","trunkLen","parseCookieValue","cookieStr","encodeURIComponent","cookie","eqIndex","cookieName","cookieValue","decodeURIComponent","WS_REGEXP","EMPTY_ARRAY","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","initialClasses","klass","ngClass","rawClass","ngDoCheck","_updateState","_applyStateDiff","nextEnabled","touched","stateEntry","_toggleClass","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","_differs","_differ","ngForTemplate","_applyChanges","forEachOperation","adjustedPreviousIndex","applyViewChange","ilen","forEachIdentityChange","ngTemplateContextGuard","NgIf","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","ngIfThen","assertTemplate","ngIfElse","ɵstringify","SwitchView","_templateRef","_created","enforceState","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","DashCase","forEachRemovedItem","forEachAddedItem","forEachChangedItem","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","ngOnChanges","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","untracked","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_ref","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","markForCheck","ɵpipe","pure","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","DatePipe","defaultTimezone","dateFormat","LOCALE_ID","DecimalPipe","_locale","isValue","strToNumber","PercentPipe","formatPercent","CurrencyPipe","_defaultCurrencyCode","currencyCode","getCurrencySymbol","getLocaleCurrencies","Currencies","symbolNarrow","formatCurrency","getNumberOfCurrencyDigits","DEFAULT_CURRENCY_CODE","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","platformId","isPlatformServer","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementById","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","XhrFactory","HttpHandler","HttpBackend","HttpHeaders","headers","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","Headers","setHeaderEntries","getAll","lcName","copyFrom","applyUpdate","toDelete","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","HttpParams","updates","cloneFrom","fromString","fromObject","paramParser","rawParams","codec","param","eqIdx","appendAll","eKey","HttpContext","isArrayBuffer","isBlob","isFormData","FormData","HttpRequest","fourth","reportProgress","withCredentials","responseType","mightHaveBody","urlWithParams","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","statusText","ok","HttpHeaderResponse","HttpResponse","HttpErrorResponse","addBody","HttpClient","req","events$","res$","jsonp","callbackParam","patch","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","interceptor","initialRequest","downstreamRequest","HTTP_INTERCEPTORS","HTTP_INTERCEPTOR_FNS","HTTP_ROOT_INTERCEPTOR_FNS","legacyInterceptorFnFactory","chain","pendingTasks","ɵInitialRenderPendingTasks","taskId","HttpInterceptorHandler","backend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","runInContext","XSSI_PREFIX","HttpXhrBackend","xhrFactory","ɵloadImpl","xhr","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","partialText","onUpProgress","upload","readyState","DONE","XSRF_ENABLED","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpFeatureKind","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","Fetch","provideHttpClient","useExisting","feature","ɵproviders","makeEnvironmentProviders","LEGACY_INTERCEPTOR_FN","withInterceptorsFromDi","makeHttpFeature","ɵkind","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","assertDefined","actual","expected","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","_injectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValue","injectableDef","_global","globalThis","_desc","ngMetadataName","__NG_ELEMENT_ID__","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","convertToBitFlags","skipSelf","injectArgs","flag","getInjectFlag","attachInjectFlag","decorator","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","EMPTY_OBJ","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","classIndexOf","classToSearch","startingIndex","foundIndex","setUpAttributes","native","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isImplicitAttrsSection","isInlineTemplate","tNode","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","ngContentSelectors","onPush","changeDetection","directiveDefs","pipeDefs","getStandaloneInjector","signals","schemas","tView","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hashSelectors","contentQueries","char","imul","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","declarations","transitiveCompileScopes","invertObject","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","getPipeDef$1","isStandalone","getNgModuleDef","throwNotFound","ngModuleDef","declaredInputs","providersResolver","inputTransforms","inputConfig","setInput","findHostDirectiveDefs","hostDirectives","defExtractor","dep","HOST","TVIEW","FLAGS","PARENT","NEXT","DESCENDANT_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","HYDRATION","REACTIVE_TEMPLATE_CONSUMER","REACTIVE_HOST_BINDING_CONSUMER","HEADER_OFFSET","HAS_TRANSPLANTED_VIEWS","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","activeConsumer","inNotificationPhase","setActiveConsumer","consumer","REACTIVE_NODE","producerNode","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","producerUpdateValueVersion","consumerIsLive","consumerPollProducersForChange","consumerMarkDirty","producerNotifyConsumers","consumerBeforeComputation","consumerAfterComputation","prevConsumer","producerRemoveLiveConsumerAtIndex","assertConsumerNode","producer","seenVersion","consumerDestroy","assertProducerNode","lastIdx","idxProducer","throwInvalidWriteToSignalErrorFn","nonReactiveReadsFn","NOOP_CLEANUP_FN","WATCH_NODE","hasRun","cleanupFn","SimpleChange","firstChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","hookOrListener","SVG_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","slotValue","getConstant","resetPreOrderHookFlags","markViewForRefresh","updateViewsToRefresh","clearViewRefreshFlag","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isParent","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","inI18n","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","callHookInternal","directive","hook","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","footer","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","annotationCls","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","Inject","hasInSkipHydrationBlockFlag","Important","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","lContainer","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","applyView","createTextNode","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","targetIdx","destroyHooksFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","policy$1","policy","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","setDocument","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","DOMParserHelper","inertDocumentHelper","getInertBodyElement","InertDocumentHelper","defaultDoc","inertDocument","createHTMLDocument","templateEl","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","tags","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","elAttrs","elAttr","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","SecurityContext","HTML","STYLE","SCRIPT","RESOURCE_URL","ɵɵsanitizeHtml","sanitizer","getSanitizer","sanitize","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ɵɵtrustConstantHtml","ɵɵsanitizeUrlOrResourceUrl","tag","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","collectProviders","provider","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","scopes","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","onDestroyHooks","removeOnDestroy","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","resolveInjectorInitializers","initializers","initializer","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","_retrieveHydrationInfoImpl","retrieveHydrationInfo","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","injectElementRef","createElementRef","unwrapElementRef","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","Version","major","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","getOriginalError","ErrorHandler","_console","handleError","originalError","_findOriginalError","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","Zone","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","isAngularZone","onInvokeTask","task","applyThis","applyArgs","shouldBeIgnoredByZone","__ignore_ng_zone__","invokeTask","onEnter","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ZONE_IS_STABLE_OBSERVABLE","isStableFactory","_stable","isCurrentlyStable","stableSub","unstableSub","merge$1","ɵɵresolveWindow","ɵɵresolveDocument","maybeUnwrapFn","AfterRenderEventManager","renderDepth","validateBegin","markViewDirty","PRESERVE_HOST_CONTENT","currentConsumer","getReactiveLViewConsumer","getOrCreateCurrentLViewConsumer","commitLViewConsumerIfHasProducers","createLViewConsumer","REACTIVE_LVIEW_CONSUMER_NODE","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","ɵɵinvalidFactory","createLView","tHostNode","environment","hydrationInfo","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","allocIdx","executeTemplate","templateFn","prevSelectedIndex","isUpdatePhase","effectiveConsumer","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","rendererFactory","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","directives","pipes","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","components","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","dirIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","setElementAttribute","initialInputData","writeToDirectiveInput","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","renderChildComponents","EffectManager","queue","effectFn","destroyRef","allowSignalWrites","watch","registerOnCleanup","unregisterOnDestroy","isQueueEmpty","computeStaticStyling","writeToHost","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","detectChangesInternal","notifyErrorHandler","afterRenderEventManager","refreshView","effectManager","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","detectChangesInView","detectChangesInComponent","viewAttachedToChangeDetector","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","storeLViewOnDestroy","onDestroyCallback","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","detachViewFromDOM","attachToAppRef","RootViewRef","ComponentFactoryResolver","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","parentInjector","refArray","componentType","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","changeDetectorRef","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","elementAttributeInternal","interpolation1","v0","suffix","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","embeddedTView","_locateOrCreateContainerAnchor","createContainerAnchorImpl","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","elementStartFirstCreatePass","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","getNamespace$1","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","interpolatedValue","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classKeyValueArraySet","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","bindings","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","_locateOrCreateTextNode","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","v1","interpolation2","ɵɵtextInterpolate5","v2","v3","v4","interpolation5","ɵɵclassMapInterpolate1","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","LocaleDataIndex","PluralCase","ng","common","locales","FirstDayOfWeek","WeekendRange","CurrencyCode","CurrencySymbol","CurrencyName","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","LOCALE_ID$1","getTIcu","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","anchorRNode","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","commentValue","commentNodeIndex","elementNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","getCaseIndex","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","BINDING_REGEXP","ICU_REGEXP","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","countBindings","opCodes","ɵɵi18nAttributes","i18nAttributesFirstPass","previousElementIndex","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","tI18n","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","createNgModule","NgModuleRef","_parent","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","createEnvironmentInjector","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction5","exp5","ɵɵpureFunction6","exp6","ɵɵpureFunction7","exp7","ɵɵpureFunction8","exp8","ɵɵpureFunctionV","exps","pureFunctionVInternal","bindingRoot","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","ɵɵpipeBind4","symbolIterator","_results","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","addLViewToLContainer","addToDOM","insertView","containerLength","trackMovedView","addViewToDOM","parentNativeNode","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","createEmbeddedViewImpl","embeddedLView","createAndRenderEmbeddedLView","declarationLView","templateTNode","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","insertImpl","componentFactoryOrType","isComponentFactory","isType","ngModuleRef","contextInjector","skipDomInsertion","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","viewRefsArr","detachedView","_locateOrCreateAnchorNode","createAnchorNode","commentNode","insertAnchorNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","storeCleanupWithContext","ɵɵtemplateRefExtractor","isNgModule","APP_INITIALIZER","ApplicationInitStatus","initialized","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","Console","getGlobalLocale","$localize","InitialRenderPendingTasks","hasPendingTasks","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","APP_BOOTSTRAP_LISTENER","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","PlatformRef","runPlatformInitializers","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","eventCoalescing","runCoalescing","ngZoneEventCoalescing","ngZoneRunCoalescing","moduleRef","createNgModuleRefWithProviders","internalProvideZoneChangeDetection","ngZoneFactory","ngZoneChangeDetectionScheduler","NgZoneChangeDetectionScheduler","initialize","INTERNAL_APPLICATION_ERROR_HANDLER","ngZoneApplicationErrorHandlerFactory","exceptionHandler","_callAndReportToErrorHandler","initStatus","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","objs","_bootstrapListeners","_runningTick","_views","internalErrorHandler","zoneIsStable","componentTypes","componentOrFactory","cf","compRef","_loadComponent","warnIfDestroyed","userErrorHandler","applicationRef","_onMicrotaskEmptySubscription","isDevMode","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","collection","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","platformCore","ApplicationModule","booleanAttribute","reflectComponentType","isSignal","BaseControlValueAccessor","onChange","onTouched","registerOnTouched","registerOnChange","setDisabledState","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","ɵCheckboxControlValueAccessor_BaseFactory","$event","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","control","maxValidator","required","requiredValidator","requiredTrue","requiredTrueValidator","email","emailValidator","minLengthValidator","maxLengthValidator","maxlength","requiredLength","actualLength","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","validators","composeAsync","minlength","toObservable","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","pristine","untouched","statusChanges","valueChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","isTouched","isUntouched","isPristine","isInvalid","isPending","isSubmitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","updateValueAndValidity","setParent","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","patchValue","_reduceChildren","_syncPendingControls","subtreeUpdated","updated","_reduceValue","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","resetForm","removeListItem","isFormControlState","formState","FormControl","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","formControlBinding$1","NgModel","resolvedPromise","_changeDetectorRef","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","_checkParentType","disabledValue","ɵNgNoValidate","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","_isSameGroup","fireUncheck","controlPair","_control","setDisabledStateFired","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningSentOnce","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","ɵRequiredValidator_BaseFactory","ɵCheckboxRequiredValidator_BaseFactory","MIN_LENGTH_VALIDATOR","MinLengthValidator","toInteger","ɵMinLengthValidator_BaseFactory","ɵInternalFormsSharedModule","FormArray","_registerControl","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","warnOnNgModelWithFormControl","BLOCK_MARKER$1","$localize$1","messageParts","translation","stripBlock","BLOCK_MARKER","messagePart","rawMessagePart","findEndOfBlock","cooked","cookedIndex","rawIndex","ɵ$localize","_c8","_c9","HOST_SELECTOR_MDC_CLASS_PAIR","mdcClasses","_MatButtonMixin","mixinColor","mixinDisabled","mixinDisableRipple","MatButtonBase","ripple","_rippleLoader","getRipple","attachRipple","disableRipple","_disableRipple","_updateRippleDisabled","_animationMode","MatRippleLoader","_isFab","configureRipple","pair","_hasHostAttributes","destroyRipple","attribute","setDisabled","MatIconButton","animationMode","centered","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","MATERIAL_SANITY_CHECKS_FACTORY","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_color","colorPalette","mixinTabIndex","defaultTabIndex","_tabIndex","mixinErrorState","updateErrorState","oldState","errorState","newState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","_parentFormGroup","_parentForm","stateChanges","MAT_DATE_LOCALE","MAT_DATE_LOCALE_FACTORY","DateAdapter","_localeChanges","localeChanges","getValidDateOrNull","isDateInstance","deserialize","setLocale","compareDate","getYear","sameDate","firstValid","secondValid","clampDate","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","matDateLocale","useUtcForDisplay","getDayOfWeek","getMonthNames","dtf","timeZone","_format","getDateNames","getDayOfWeekNames","getYearName","getFirstDayOfWeek","getNumDaysInMonth","_createDateWithOverflow","parseFormat","displayFormat","addCalendarYears","addCalendarMonths","addCalendarDays","toIso8601","_2digit","MAT_NATIVE_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","RippleRef","_animationForciblyDisabledThroughCss","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","_delegateEventHandler","handleEvent","addHandler","handlersForEvent","handlersForElement","removeHandler","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","RippleRenderer","_eventManager","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","distanceToFurthestCorner","distX","distY","transitionDuration","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","transitionProperty","rippleRef","persistent","_mostRecentTransientRipple","eventListeners","onTransitionEnd","_finishRippleTransition","onTransitionCancel","_destroyRipple","rippleEl","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","isFakeMousedown","_lastTouchStartEvent","rippleDisabled","rippleConfig","terminateOnPointerUp","MAT_RIPPLE_GLOBAL_OPTIONS","MatRipple","_setupTriggerEventsIfEnabled","globalOptions","_globalOptions","_rippleRenderer","launch","configOrX","unbounded","MatOptionSelectionChange","isUserInput","_countGroupLabelsBeforeOption","optionIndex","optionGroups","optionsArray","groupCounter","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","eventListenerOptions","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","ANIMATION_MODULE_TYPE$1","_globalRippleOptions","_hosts","_onInteraction","_createRipple","hosts","existingRipple","MatDialogContainer_ng_template_2_Template","MatDialogConfig","delayFocusTrap","OPEN_CLASS","OPENING_CLASS","CLOSING_CLASS","_MatDialogContainerBase","focusTrapFactory","dialogConfig","interactivityChecker","focusMonitor","_animationStateChanged","_openAnimationDone","TRANSITION_DURATION_PROPERTY","parseCssTime","MatDialogContainer","checker","_animationsEnabled","_hostElement","_enterAnimationDuration","enterAnimationDuration","_exitAnimationDuration","exitAnimationDuration","_animationTimer","_finishDialogOpen","_clearAnimationClasses","_finishDialogClose","_startOpenAnimation","_requestAnimationFrame","_waitForAnimationToComplete","_startExitAnimation","MatDialogRef","_containerInstance","_afterOpened","_beforeClosed","_closeFallbackTimeout","_result","_closeDialogVia","interactionType","dialogResult","afterClosed","beforeClosed","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY","_MatDialogBase","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_idPrefix","dialogConfigClass","_dialog","cdkRef","cdkConfig","_closeDialogs","dialogs","MatDialog","parentDialog","dialogElementUid","MatDialogTitle","_dialogRef","getClosestDialog","MatDialogContent","MatDialogActions","_c0","ttWindow","getMatIconNameNotFoundError","iconName","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","SvgIconConfig","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","addSvgIconResolver","resolver","cleanLiteral","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","cachedIcon","cloneSvg","_loadSvgIconFromConfig","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","errorMessage","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","_setSvgAttributes","_toSvgElement","_svgElementFromString","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","configNamespace","isSafeUrlWithOptions","_MatIconBase","MAT_ICON_DEFAULT_OPTIONS","MAT_ICON_LOCATION","MAT_ICON_LOCATION_FACTORY","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_inline","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_iconRegistry","ariaHidden","_previousFontSetClass","_currentIconFetch","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","fontSetClasses","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","urlParsingNode","pathName","resetBaseElement","getCookie","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","plugin","_plugins","_findPluginFor","getZone","EventManagerPlugin","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","appId","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","COMPONENT_REGEX","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","decoratePreventDefault","hostEl","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","withServerTransition","setTitle","newTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segmentGroup","route","pathMatch","hasChildren","posParams","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","pathCompareMap","exact","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","UrlSegmentGroup","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","serialize","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","encodeURI","primary","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","MATRIX_PARAM_SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","matchMatrixKeySegments","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","mt","squashSegmentGroup","newChildren","childCandidate","grandChildOutlet","grandChild","mergeTrivialChildren","isUrlTree","createSegmentGroupFromRoute","targetGroup","rootSegmentGroup","createSegmentGroupFromRouteRecursive","currentRoute","childOutlets","childSnapshot","outlet","createUrlTreeFromSegmentGroup","relativeTo","commands","nav","computeNavigation","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","toRoot","findStartingPositionForTargetGroup","Position","isMatrixParams","createPositionApplyingDoubleDots","dd","newSegmentGroup","processChildren","updateSegmentGroupChildren","updateSegmentGroup","isCommandWithOutlets","oldRoot","oldSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","slicedCommands","createNewSegmentGroup","getOutlets","childrenOfEmptyChild","createNewSegmentChildren","IMPERATIVE_NAVIGATION","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","reason","NavigationSkipped","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","BeforeActivateRoutes","RedirectRequest","OutletContext","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","Tree","pathFromRoot","findNode","findPath","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","urlTree","rootComponent","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","urlSubject","paramsSubject","queryParamsSubject","fragmentSubject","dataSubject","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","_resolve","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","parentContexts","changeDetector","inputBinder","INPUT_BINDER","supportsBindingToComponentInputs","activatedComponentRef","isTrackedInParentContexts","deactivate","initializeOutletWithName","unsubscribeFromRouteData","activateWith","isActivated","activatedRoute","activatedRouteData","cmp","bindActivatedRouteToOutletComponent","childContexts","OutletInjector","RoutedComponentInputBinder","outletDataSubscriptions","subscribeToRouteData","dataSubscription","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isNavigationCancelingError$1","ɵEmptyOutletComponent","standardizeConfig","loadComponent","getOutlet","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","inputBindingEnabled","activate","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","NoMatch","AbsoluteRedirect","noMatch$1","absoluteRedirect","newTree","ApplyRedirects","noMatchError","lineralizeSegments","applyRedirectCommands","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","getOrCreateRouteInjectorIfNeeded","currentInjector","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","guard","isCanMatch","matcher","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","primarySegment","configLoader","rootComponentType","allowRedirects","applyRedirects","processSegmentGroup","routeState","createUrlTreeFromSnapshot","inheritParamsAndData","routeNode","processSegment","sortedConfig","sortByMatchingOutlets","outletChildren","last$1","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","noLeftoversInUrl","rawSegment","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","newSegments","_loadedComponent","getResolve","getChildConfig","childConfig","childInjector","matchedOnOutlet","_loadedRoutes","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","cfg","canLoadFails","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","ROUTES","RouterConfigLoader","componentLoaders","childrenLoaders","compiler","onLoadStartListener","loadRunner","maybeUnwrapDefaultExport","onLoadEndListener","loader","factoryOrRoutes","rawRoutes","requireStandaloneComponents","isWrappedDefaultExport","NavigationTransitions","hasRequestedNavigation","navigationId","currentNavigation","lastSuccessfulNavigation","transitionAbortSubject","rootContexts","afterPreactivation","handleNavigationRequest","setupNavigations","router","initialUrlTree","initialRouterState","currentUrlTree","currentRawUrl","currentBrowserUrl","extractedUrl","urlHandlingStrategy","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","overallTransitionState","initialUrl","previousNavigation","browserUrlTree","urlTransition","navigated","onSameUrlNavigation","shouldProcessUrl","serializer","recognize$1","finalUrl","routesRecognized","navStart","skipLocationChange","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","closestInjector","isCanDeactivate","isBoolean","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivate","canActivateObservables","isCanActivate","guardsEnd","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getOwnPropertySymbols","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","titleStrategy","updateTitle","isRedirectingNavigationCancelingError$1","ee","navCancel","isBrowserTriggeredNavigation","TitleStrategy","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ɵDefaultRouteReuseStrategy_BaseFactory","ROUTER_CONFIGURATION","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","NavigationResult","COMPLETE","FAILED","REDIRECTING","afterNextNavigation","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","Router","navigationTransitions","browserPageId","canceledNavigationResolution","currentPageId","ɵrouterPageId","disposed","ɵConsole","isNgZoneEnabled","malformedUriErrorHandler","lastSuccessfulId","urlUpdateStrategy","componentInputBindingEnabled","eventsSubscription","resetConfig","rawUrlTree","routerState","subscribeToNavigationEvents","isPublicRouterEvent","setBrowserUrl","restoreHistory","mergedTree","scheduleNavigation","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateToSyncWithBrowser","locationSubscription","stateCopy","parseUrl","serializeUrl","getCurrentNavigation","createUrlTree","navigationExtras","queryParamsHandling","preserveFragment","relativeToUrlSegmentGroup","removeEmptyProps","navigateByUrl","navigate","validateCommands","isActive","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","PreloadingStrategy","RouterPreloader","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","scrollOffset","provideInitialNavigation","bindToComponentInputs","ROUTER_INITIALIZER","forChild","locationInitialized","ButtonComponent_kendo_icon_wrapper_0_Template","ctx_r0","ButtonComponent_span_1_Template","ctx_r1","ButtonComponent_span_2_Template","ctx_r2","ButtonComponent_span_5_Template","ctx_r3","arrowIcon","ButtonComponent_kendo_icon_wrapper_6_Template","ctx_r4","_c1","_c2","_c3","ListComponent_li_1_ng_template_1_ng_template_1_Template","_c4","a0","ListComponent_li_1_ng_template_1_Template","dataItem_r1","itemTemplate","ListComponent_li_1_ng_template_2_kendo_icon_wrapper_1_Template","ListComponent_li_1_ng_template_2_img_2_Template","ListComponent_li_1_ng_template_2_span_3_Template","ctx_r9","getText","ListComponent_li_1_ng_template_2_Template","ListComponent_li_1_Template","_r15","index_r2","ctx_r14","stopImmediatePropagation","onClick","ctx_r16","onBlur","_c5","_c6","_c7","SplitButtonComponent_span_4_Template","SplitButtonComponent_ng_template_8_Template","_r7","ctx_r6","onItemClick","ctx_r8","keyDownHandler","keyUpHandler","listId","textField","_c11","DropDownButtonComponent_ng_template_3_Template","_r6","ctx_r5","ctx_r7","buttonId","ChipComponent_kendo_icon_wrapper_0_Template","ChipComponent_kendo_icon_wrapper_1_Template","customIconClass","ChipComponent_span_2_Template","chipAvatarClass","ChipComponent_span_4_Template","ChipComponent_ng_content_5_Template","ChipComponent_span_7_Template","_r8","onMenuClick","defaultMenuIcon","menuSvgIcon","menuIcon","ChipComponent_span_8_Template","_r10","onRemoveClick","removeSvgIcon","defaultRemoveIcon","removeIcon","KendoButtonService","buttonClicked","buttonClicked$","packageMetadata","productName","productCodes","publishDate","licensingDocsUrl","isDocumentNode","sel","msMatchesSelector","SIZES","small","large","ROUNDNESS","getStylingClasses","stylingOption","toRemove","toAdd","getThemeColorClasses","prevFillMode","fillMode","BUTTON_TAG_NAME","ButtonComponent","localization","toggleable","selectedChange","_rounded","_fillMode","_themeColor","_focused","subs","validatePackage","togglable","selected","_selected","_iconClass","_icon","isDocumentAvailable","isFirefox","handleClasses","rounded","newRounded","newFillMode","newThemeColor","handleThemeColor","isFocused","toggleClass","classButton","isToggleable","iconButtonClass","hasText","roleSetter","classDisabled","classActive","onFocus","look","elementTagName","isSpanOrKendoButton","toggleAriaPressed","_onButtonClick","Keys","Space","Enter","isButton","isBrowserSafari","isSafari","isChanged","setSelected","hasObservers","shouldSet","addFillMode","themeColorClass","LocalizationService","L10N_PREFIX","PreventableEvent","ButtonGroupComponent","navigable","currentTabIndex","lastFocusedIndex","focusHandler","defocus","firstFocusableIndex","disabledClass","stretchedClass","ariaDisabled","wrapperWidth","wrapperTabIndex","newSelectionValue","isSelectionSingle","handleSubs","navigateFocus","verifySettings","navigationButtons","focusedIndex","ArrowRight","ArrowLeft","ButtonModule","IconsModule","ButtonGroupModule","ButtonItemTemplateDirective","FocusService","focused","resetFocus","FocusableDirective","focusService","subscribeEvents","TemplateContextDirective","insertedViewRef","ListComponent","onItemBlur","sizeClass","getIconClasses","ListModule","KeyEvents","keydown","keypress","keyup","NavigationAction","Undefined","Open","Close","EnterPress","EnterUp","Tab","Navigate","NAVIGATION_CONFIG","NavigationService","enterpress","enterup","tab","useLeftRightArrows","keyEvent","isEnterOrSpace","ArrowDown","ArrowUp","Escape","flipNavigation","Home","End","PopupContainerService","ListButton","navigationService","wrapperRef","popupService","elRef","cdr","containerService","_open","_popupSettings","popupClass","_isFocused","popupSubs","isClosePrevented","openState","componentTabIndex","appendTo","popupSettings","settings","popupAlign","popupRef","popup","newSettings","popupClasses","isOpen","togglePopupVisibility","_toggle","emitItemClickHandler","focusButton","destroyPopup","subscribeListItemFocusEvent","subscribeComponentBlurredEvent","subscribeNavigationEvents","handleTab","wrapperContains","blurWrapper","onArrowKeyNavigate","onNavigationEnterUp","onNavigationOpen","onNavigationClose","isHost","keyHandler","_itemClick","focusWrapper","createPopup","popupAnchorViewportLeave","i3$1","buttonClass","Messages","ComponentMessages","ɵMessages_BaseFactory","splitButtonLabel","LocalizedSplitButtonMessagesDirective","NAVIGATION_SETTINGS_PROVIDER$2","SplitButtonComponent","arrowButtonIcon","arrowButtonSvgIcon","buttonClick","itemClick","activeArrow","buttonText","arrowButtonClicked","_buttonAttributes","buttonAttributes","newButtonAttributes","handleButtonAttributes","hasContent","widgetClasses","replaceMessagePlaceholder","onButtonFocus","relatedTargetInList","onArrowButtonClick","toggleButtonActiveState","toggleArrowButtonActiveState","onButtonClick","onButtonBlur","containerRef","popupTemplate","updateButtonText","anyChanged","toggleButtonIconClass","isIconButton","hasIcon","hasTextContent","mainButton","arrowButton","arrowButtonClass","i18n_9","SplitButtonModule","PopupModule","ToggleButtonTabStopModule","NAVIGATION_SETTINGS_PROVIDER$1","DropDownButtonComponent","openPopup","handleFocus","popupElement","isPresent$1","buttonList","DropDownButtonModule","ChipComponent","localizationService","removable","hasMenu","menuToggle","contentClick","hostClass","hasIconClass","avatarClass","selectedClass","focusedClass","chip","attachElementEventHandlers","kendoIconClass","verifyIconSettings","removeIconClass","iconsToCheck","isDeleteOrBackspace","Delete","Backspace","ChipListComponent","_navigable","currentActiveIndex","sizeValue","single","isRemoveClicked","clickedChip","chips","removedChip","setSelection","dynamicRTLSubscription","updateChips","selectedChips","cur","clearSelection","chiplist","isLeftArrow","isRightArrow","removeEventArgs","handleArrowKeys","normalizeActiveIndex","chipEl","ChipModule","FloatingActionButtonModule","EventsModule","CrosshairTooltipComponent_ng_template_0_Template","CrosshairTooltipsContainerComponent_kendo_chart_crosshair_tooltip_0_Template","key_r1","TooltipPopupComponent_ng_template_0_1_ng_template_0_Template","TooltipPopupComponent_ng_template_0_1_Template","seriesTooltipTemplateRef","seriesTooltipContext","TooltipPopupComponent_ng_template_0_2_ng_template_0_Template","TooltipPopupComponent_ng_template_0_2_Template","seriesSharedTooltipTemplateRef","seriesSharedTooltipContext","TooltipPopupComponent_ng_template_0_Template","TooltipPopupComponent_ng_template_2_Template","TooltipPopupComponent_ng_template_3_tr_4_td_1_Template","point_r15","TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_1_Template","TooltipPopupComponent_ng_template_3_tr_4_td_2_ng_container_2_Template","TooltipPopupComponent_ng_template_3_tr_4_td_2_Template","TooltipPopupComponent_ng_template_3_tr_4_ng_template_4_Template","TooltipPopupComponent_ng_template_3_tr_4_Template","ctx_r24","colorMarker_r12","colorMarker","nameColumn_r13","nameColumn","TooltipPopupComponent_ng_template_3_Template","points_r9","categoryText_r10","colspan_r11","colspan","ChartComponent_div_5_ng_template_1_Template","ChartComponent_div_5_Template","donutCenterStyle","donutCenterTemplate","ChartComponent_div_6_Template","getTouch","domEvent","shouldBindGroup","groupNames","eventGroups","DomEvents","hammerInstance","eventHandlers","panstart","panmove","panend","pinchstart","pinchmove","pinchend","previousArgs","xLocation","yLocation","pointer1","pointer2","eventGroup","nameIdx","dateValueAxisFormats","DomEventsBuilder$1","HAMMER","DonutCenterTemplateDirective","ItemChange","CollectionService","onItemChange$","THROTTLE_MS","Change","ConfigurationService","initSource","onFastChange$","onChange$","copyChanges","toSimpleChanges","CollectionItemComponent","configurationService","collectionService","notifyChanges","SettingsComponent","configKey","markAsVisible","SeriesTooltipComponent","seriesTooltipTemplate","SeriesDrilldownTemplateDirective","SeriesItemComponent","togglePointVisibility","pv","seriesTooltip","drilldownTemplate","closeField","colorField","currentField","downColorField","drilldownField","errorHighField","errorLowField","explodeField","fromField","lowerField","medianField","noteTextField","openField","q1Field","q3Field","summaryField","toField","upperField","visibleInLegendField","xErrorHighField","xErrorLowField","yErrorHighField","yErrorLowField","COLLISION","collision","positionMode","onInit","bodyFactory","CrosshairTooltipComponent","PopupService","POPUP_CONTAINER","i4$1","AXES","CrosshairTooltipsContainerComponent","tooltipKeys","tooltipsMap","tooltipComponents","crossahirTooltipComponents","createCrosshairTooltips","newMap","mapTooltips","removeTooltip","tooltips","axesCrosshairTooltipOptions","tooltipIdx","SeriesTooltipTemplateDirective","SharedTooltipTemplateDirective","TooltipTemplatePoint","xLow","xHigh","yLow","yHigh","TooltipTemplateService","setTemplate","seriesTemplates","setSeriesTemplates","setSharedTemplate","sharedTemplate","getSharedTemplate","TooltipPopupComponent","templateService","defaultSharedTooltipTemplate","sharedTemplateContext","pointTemplateRef","wrapPoints","defaultSeriesTooltipTemplate","mouseleaveSubscription","ChartInstanceObserver","legendItemClick","fontWeight","computedBackgroundColor","ThemeService","loadTheme","readTheme","readDefaultTheme","queryColor","chartBaseTheme","setColors","setFonts","setSeriesColors","destroyElement","seriesTemplate","mapColor","queryStyle","setInactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","unsetColor","letterPos","seriesPos","BaseEvent","ɵPreventableEvent_BaseFactory","LegendEvent","NoteEvent","RenderEvent","_e","SeriesEvent","EVENT_MAP$1","axisLabelClick","AxisLabelClickEvent","DragEvent","dragEnd","DragEndEvent","dragStart","DragStartEvent","legendItemHover","LegendItemHoverEvent","legendItemLeave","LegendItemLeaveEvent","noteClick","NoteClickEvent","noteHover","NoteHoverEvent","noteLeave","NoteLeaveEvent","paneRender","PaneRenderEvent","plotAreaClick","PlotAreaClickEvent","plotAreaHover","PlotAreaHoverEvent","plotAreaLeave","PlotAreaLeaveEvent","SelectEvent","SelectEndEvent","SelectStartEvent","seriesClick","SeriesClickEvent","seriesHover","SeriesHoverEvent","seriesOver","SeriesOverEvent","seriesLeave","SeriesLeaveEvent","ZoomEvent","zoomEnd","ZoomEndEvent","zoomStart","ZoomStartEvent","InstanceEventService","LegendItemClickEvent","CollectionComponent","processChanges","readItems","SeriesComponent","tooltipTemplateService","readTooltipTemplates","templates","DrilldownEvent","emitter","ChartComponent","themeService","instanceEventService","drilldownLevelChange","resizeRateLimit","showLicenseWatermark","suppressTransitions","hostClasses","drilldownState","shouldShowValidationUI","refreshWait","drilldownLevel","currentLevel","seriesComponents","removed","canRender","chartMouseleave","domSubscriptions","subscriptions","intlChange","rtlChange","onDrilldown","seriesCollection","seriesCollectionComponent","seriesComponent","drilldownValue","autoResize","resizeTimeout","redrawTimeout","createInstance","exportImage","exportRoot","surfaceOptions","exportSVG","exportGroup","rootGroup","getPlotArea","instanceObserver","onResize","reloadTheme","onLegendItemClick","onRender","getDonutCenterStyle","onShowTooltip","crossahirTooltips","tooltipInstance","onHideTooltip","activeEmitter","updateDirection","setChartAreaSize","tooltipMouseleave","inZone","deferredRedraw","isRTL","i8","CategoryAxisItemComponent","CategoryAxisComponent","CategoryAxisLabelsComponent","CategoryAxisTitleComponent","LegendComponent","SeriesLabelsComponent","TitleComponent","ValueAxisItemComponent","ValueAxisComponent","ValueAxisLabelsComponent","ValueAxisTitleComponent","ChartModule","BreadCrumbModule","ResizeSensorModule","WatermarkModule","StockChartModule","SparklineModule","alignSelf","WatermarkOverlayComponent_div_0_Template","_r3","closeBanner","bannerStyles","licenseKeyUrl","buttonStyles","skipFirstChange","propertyNames","desktopBrowser","setHTMLAttributes","DraggableDirective","enableDrag","kendoPress","kendoDrag","kendoRelease","toggleDraggable","destroyDraggable","DraggableModule","closestInScope","scope","matchSelf","findElement","focusableRegex","hasTabIndex","findFocusableChild","checkVisibility","isFocusableWithTabKey","EventsOutsideAngularDirective","ResizeService","resizeBatchService","acceptedSize","acceptSize","lastWidth","lastHeight","checkChanges","checkSize","initSize","WRAP_STYLE","EXPAND_CHILD_STYLE","SHRINK_CHILD_STYLE","ResizeCompatService","isScheduled","expandChild","shrinkChild","HAS_OBSERVER","ResizeObserverService","resizeObserver","ResizeBatchService","ResizeSensorComponent","rateLimit","serviceType","resizeService","KendoInput","Alt","Control","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","F1","F2","F10","Insert","KeyA","KeyB","KeyC","KeyD","KeyE","KeyF","KeyG","KeyH","KeyI","KeyJ","KeyK","KeyL","KeyM","KeyN","KeyO","KeyP","KeyQ","KeyR","KeyS","KeyT","KeyU","KeyV","KeyW","KeyX","KeyY","KeyZ","NumpadDecimal","PageDown","PageUp","Shift","focusableSelector","splitStringToArray","parseCSSClassNames","parseArrayClassNames","parseObjectClassNames","parseStringClassNames","currentClassName","classesArray","boxShadow","lineHeight","outline","bannerPresentOnPage","WatermarkOverlayComponent","watermarkStyle","bannerMounted","isBannerRendered","banner","allowed","isPackageValid","PrefixTemplateDirective","_showSeparator","showSeparator","SuffixTemplateDirective","SeparatorComponent","AdornmentsModule","ScrollbarWidthService","cloneDate","addDays","setDate","isEqual","candidate","lastDayOfMonth","addMonths","expectedMonth","setMonth","setYear","addYears","addDecades","addCenturies","normalizeYear","firstDecadeOfCentury","lastDecadeOfCentury","firstYearOfDecade","lastYearOfDecade","lastMonthOfYear","durationInCenturies","durationInDecades","addWeeks","firstDayOfMonth","Direction","Forward","Backward","weekDay","newDay","durationInMonths","firstMonthOfYear","durationInYears","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","calcWeekInYear","firstWeekInYear","diffInMS","moveDateToWeekStart","prevDayOfWeek","weekInYear","prevWeekDate","nextWeekDate","weekNumber","Mask","partMap","padZero","unpadZero","dateSymbolMap","parseToInt","setYears","areDatePartsEqualTo","SHORT_PATTERN_LENGTH_REGEXP","DateObject","formatPlaceholder","cycleTime","twoDigitYearMax","autoCorrectParts","leadingZero","typedMonthPart","knownParts","_partiallyInvalidDate","invalidDateParts","startDateOffset","sampleFormat","dateFormatString","setExisting","resetInvalidDate","cldrKeys","monthNames","allFormattedMonths","allDayPeriods","modifyExisting","getExisting","getFormattedDate","getTextAndFormat","customFormat","partiallyInvalidText","formattedDate","formattedDates","getFormattedInvalidDates","getInvalidDatePartValue","partsForSegment","getPartsForSegment","datePartText","formattedDatesForSymbol","getInvalidDatePart","formattedInvalidDate","modifyPart","invalidDateFound","timeModified","isMonth","isDay","symbolExists","invalidDatePartValue","resetInvalidDateSymbol","monthValue","dayValue","dateCandidate","newValueCandidate","modifyDateSymbolWithValue","dateCandidateExists","markDatePartsAsExisting","setInvalidDatePart","shouldNormalizeCentury","normalizeCentury","parsePart","currentChar","resetSegmentValue","cycleSegmentValue","rawTextValue","rawInputValue","isDeleting","originalFormat","isInCaretMode","dateParts","datePartsLiterals","datePartIndex","flatDateParts","datePart","parseResult","switchToNext","resetPart","hasInvalidDatePart","resetLeadingZero","rawValueStartsWithLiteral","rawValueEndsWithLiteral","rawValueHasConsecutiveLiterals","baseDate","baseFormat","replaced","basePrefix","baseSuffix","convertedBaseFormat","hasFixedFormat","datePartStartIndex","segmentLength","formatToTextLengthDiff","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","incrementLeadingZero","partPattern","patternValue","tryParse","middleNumber","autoCorrectedPrefixAndSuffix","isCurrentCharParsable","monthNumber","peekedValue","peek","peekedDate","patternSatisfied","datePartValue","textToParse","parsedValue","valueCandidate","symbolMap","hasLeadingZero","setLeadingZero","getLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","dateFormatParts","partLength","returnValue","resultText","resultFormat","processTextSymbolsEnded","ignoreFormatSymbolsCount","formatSymbolIndex","formatSymbolIndexModifier","resetInvalidDatePart","shouldResetInvalidDate","modifyDateSymbolWithOffset","segmentPart","maskPartIndex","defaultPrevented","DateInputInteractionMode","Caret","TOUCH_START","MOUSE_DOWN","MOUSE_UP","INPUT","KEY_DOWN","FOCUS","BLUR","MOUSE_SCROLL","MOUSE_WHEEL","VALUE_CHANGE","BLUR_END","FOCUS_END","defaultDateInputOptions","hasPlaceholder","Ri","jr","un","mr","ys","dr","Mo","Jo","Ee","Kr","selectNearestSegmentOnFocus","selectPreviousSegmentOnBackspace","enableMouseWheel","allowCaretMode","autoSwitchParts","autoSwitchKeys","autoFill","DateInput","dateObject","currentText","interactionMode","previousElementSelection","createDateObject","setTextAndFormat","forceUpdate","onElementDragStart","onElementDrop","onElementClick","onElementMouseDown","onElementMouseUp","onElementInput","onElementKeyDown","onElementFocus","onElementBlur","onElementChange","onElementPaste","onElementMouseWheel","setDateObjectOptions","getDateObjectOptions","resetLocale","selectNearestSegment","mouseDownStarted","focusedPriorToMouseDown","switchedPartOnPreviousKeyAction","selectionPresent","selectionStart","selectionEnd","placeholderToggled","caret","selectionByIndex","triggerInput","isPasteInProgress","updateOnPaste","keyDownEvent","isBackspaceKey","isDeleteKey","originalInteractionMode","hasCaret","restorePreviousInputEventState","oldExistingDateValue","oldDateValue","oldText","previousElementValue","approximateStringMatching","newText","formatPattern","oldTextSeparator","oldSegmentText","newSegmentText","deletedSymbol","elementValue","navigationOnly","parsePartsResults","switchPart","parsePartResult","lastParseResult","lastParseResultHasNoValue","parsingFailedOnDelete","newExistingDateValue","hasExistingDateValueChanged","newDateValue","symbolForSelection","currentSelection","diffChar","forceUpdateWithSelection","switchDateSegment","selectionBySymbol","tryTriggerValueChange","triggerInputEnd","triggerFocus","refreshElementValue","triggerFocusEnd","triggerBlur","triggerBlurEnd","triggerChange","triggerKeyDown","keyEventMatchesAutoSwitchKeys","isTabKey","getStepFromSymbol","shouldPreventDefault","modifyDateSegmentValue","triggerMouseWheel","inputFormat","oldDateObjectValue","setSelectionRange","currentSymbol","symbolCandidate","previousFormatSymbol","readonly","msDigits","millisecondDigitsInFormat","millisecondStepFor","triggerValueChange","elementValueLength","selectionOffset","setElementValue","restorePreviousElementValue","restorePreviousElementSelection","verifyValue","getDateObject","showPlaceholder","newElementValue","isPosition","selectDateSegment","keyObject","currentDate","ViewComponent_ng_template_0_Template","ViewComponent_tr_2_Template","ViewComponent_tr_3_ng_template_1_td_0_ng_template_1_Template","row_r4","getWeekNumber","firstDate","ViewComponent_tr_3_ng_template_1_td_0_ng_template_2_Template","cellContext","ViewComponent_tr_3_ng_template_1_td_0_Template","_r14","ctx_r12","handleWeekNumberClick","weekNumberTemplateRef","getWeekNumberContext","ViewComponent_tr_3_ng_template_1_Template","_r0","ViewComponent_tr_3_ng_container_2_td_1_ng_template_2_Template","cell_r17","ViewComponent_tr_3_ng_container_2_td_1_3_ng_template_0_Template","ViewComponent_tr_3_ng_container_2_td_1_3_Template","ctx_r21","ViewComponent_tr_3_ng_container_2_td_1_Template","ctx_r25","cellIndex_r18","rowIndex_r5","ctx_r19","getStyles","tableCellIndex","isSelected","isRangeStart","isRangeMid","isRangeEnd","getMonthLabel","ViewComponent_tr_3_ng_container_2_Template","shouldRenderCellContent","ViewComponent_tr_3_Template","HorizontalViewListComponent_ng_template_0_caption_1_Template","date_r5","getCaptionClass","getCaptionTitle","HorizontalViewListComponent_ng_template_0_thead_2_th_2_Template","name_r11","i_r12","ctx_r10","wideWeekNames","HorizontalViewListComponent_ng_template_0_thead_2_Template","weekNames","HorizontalViewListComponent_ng_template_0_Template","ctx_r13","handleClassicCalendarFocus","ctx_r15","handleClassicCalendarBlur","cellClick","ctx_r17","weekNumberCellClick","ctx_r18","cellEnter","cellLeave","ctx_r20","focusedCellChange","class_r6","views","getActiveDescendant","getTabIndex","showViewHeader","isMonthView","showOtherMonthDays","activeView","cellUID","focusedDate","selectedDates","selectionRange","activeRangeEnd","cellTemplateRef","HorizontalViewListComponent_2_ng_template_0_Template","HorizontalViewListComponent_2_Template","nextAnimationDate","HorizontalViewListComponent_3_ng_template_0_Template","HorizontalViewListComponent_3_Template","date_r22","HorizontalViewListComponent_4_ng_template_0_Template","HorizontalViewListComponent_4_Template","prevAnimationDate","HeaderComponent_0_ng_template_0_Template","HeaderComponent_0_Template","headerTemplateRef","activeViewValue","HeaderComponent_ng_template_1_ng_template_1_Template","HeaderComponent_ng_template_1_ng_template_2_Template","HeaderComponent_ng_template_1_button_5_Template","_r9","prevButtonClick","isPrevDisabled","prevButtonTitle","HeaderComponent_ng_template_1_button_8_Template","_r11","nextButtonClick","isNextDisabled","nextButtonTitle","HeaderComponent_ng_template_1_Template","handleNavigation","parentViewButtonTitle","titleTemplateRef","showNavigationButtons","todayAvailable","handleTodayClick","todayMessage","FooterComponent_0_ng_template_0_Template","FooterComponent_0_Template","footerTemplateRef","FooterComponent_ng_template_1_Template","getToday","MultiViewCalendarComponent_kendo_calendar_header_1_Template","handleTodayButtonClick","navigateView","prevView","nextView","activeViewEnum","activeDate","headerId","headerTitleTemplateRef","MultiViewCalendarComponent_kendo_calendar_footer_3_Template","_c16","_c17","NavigationComponent_li_4_ng_template_2_Template","date_r2","navigationTitle","NavigationComponent_li_4_ng_template_3_Template","NavigationComponent_li_4_Template","index_r3","ViewListComponent_table_1_th_3_Template","name_r6","i_r7","ViewListComponent_table_1_Template","ViewListComponent_col_6_Template","ViewListComponent_tbody_7_Template","date_r9","headerTitle","ViewListComponent_kendo_calendar_footer_8_Template","CalendarComponent_ng_container_1_kendo_calendar_navigation_1_Template","_r4","onPageChange","navigationItemTemplateRef","CalendarComponent_ng_container_1_Template","handleDateChange","handleCellClick","handleActiveDateChange","ctx_r11","handleBlur","tmp_6_0","navigation","weekDaysFormat","activeCellTemplate","CalendarComponent_ng_container_2_Template","_r17","handleActiveViewChange","handleNavigate","handleMultiViewCalendarValueChange","ctx_r22","ctx_r23","handleMultiViewCalendarKeydown","bottomView","topView","animateNavigation","monthCellTemplateRef","yearCellTemplateRef","decadeCellTemplateRef","centuryCellTemplateRef","disabledDates","_c26","_c27","_c28","DateInputComponent_span_3_Template","arrowDirection","handleButtonClick","_c33","dragstart","_c34","_c35","_c36","_c37","DatePickerComponent_ng_template_8_ng_container_0_Template","DatePickerComponent_ng_template_8_Template","DatePickerComponent_kendo_resize_sensor_10_Template","_r12","DatePickerComponent_ng_template_13_ng_container_10_Template","DatePickerComponent_ng_template_13_Template","_c48","DatePickerComponent_ng_template_14_Template","_r18","handleChange","mergeTime","isAdaptive","calendarType","animateCalendarNavigation","cellTemplate","monthCellTemplate","yearCellTemplate","decadeCellTemplate","centuryCellTemplate","weekNumberTemplate","headerTitleTemplate","headerTemplate","footerTemplate","navigationItemTemplate","handleKeydown","_c49","PrevView","NextView","FirstInView","LastInView","LowerView","UpperView","EMPTY_SELECTIONRANGE","MIDNIGHT_DATE","MIN_DATE","MAX_DATE","requiresZoneOnBlur","isArrowWithShiftPressed","isSet","setTime","setHours$1","dateInRange","noop$2","shiftWeekNames","domContainerFactory","hasExistingValue","isInSelectionRange","areDatesEqual","sortDates","getSizeClass","getRoundedClass","getFillModeClass","solid","DEFAULT_ROUNDED","DEFAULT_SIZE","DEFAULT_FILL_MODE","windowSize","EMPTY_DATA$3","ACTIONS$3","decadeOfCentury","upStep$1","downStep$1","CenturyViewService","addToDate","datesList","isActiveView","viewDate","lastDate","cellOffset","cellDate","nextCentury","isInRange","isWeekend","isRangeSplitEnd","isRangeSplitStart","isToday","cellTitle","isInArray","aboveMin","belowMax","beginningOfPeriod","firstYear","lastDayOfPeriod","decade","rowLength","viewsCount","viewsInRange","EMPTY_DATA$2","ACTIONS$2","yearOfDecade","upStep","downStep","DecadeViewService","nextDecade","EMPTY_DATA$1","ACTIONS$1","MonthViewService","isDateDisabled","firstMonthDate","firstMonthDay","lastMonthDate","lastMonthDay","cellDay","otherMonth","isOtherMonth","lowerBound","upperBound","abbrMonthNames","wideMonthNames","prependCell","EMPTY_DATA","ACTIONS","YearViewService","changedYear","candidateValue","CalendarViewEnum","century","services$1","nextCalendarId","BusViewService","viewChanged","calendarId","configure","moveDown","moveUp","moveToBottom","canMoveDown","canMoveUp","WeekNamesService","getWeekNames","includeWeekNumber","noop$1","DisabledDatesService","isNumberArray","disabledWeekDays","isDateArray","normalizedDisabledDates","notifyInvalidInput","notifyServiceChange","KForOfContext","kForOf","KForOf","kForTemplate","kForTrackBy","getTypeNameForDebugging","viewContainerLength","tuples","ViewComponent","bus","disabledDatesService","focusedCellId","disabledDatesChange","showWeekNumbers","updateData","currentCellIndex","unsubscribeCallback","cellCtx","rowCtx","firstWeekDateContext","pushToAcc","stringifyClassObject","availableDates","cellMouseoverHandler","mouseLeaveHandler","clickHandler","closestCell","cellByIndex","emitCellLeave","HorizontalViewListComponent","weekService","activeDateChange","focusCalendar","blurCalendar","getComponentClass","intlSubscription","handleMultiViewCalendarFocus","handleMultiViewCalendarBlur","horizontalHostClass","verticalHostClass","getComponentMonthClass","getComponentYearClass","getComponentDecadeClass","getComponentCenturyClass","activeDescendant","initService","activeViewChanged","viewsHasChanged","isInDates","getTake","setAriaActivedescendant","setTableMinWidth","animateView","initialContainerWidth","tableWidth","tabRect","containerGap","columnGap","oncancel","onfinish","isListInRange","canNavigate","containerWidth","HeaderComponent","rangeLength","todayButtonClick","l10nChange","setTodayAvailability","nextDate","isTodayInRange","_r1","i10","SelectionService","performSelection","selectionMode","rangePivot","isDateSelected","anyArrow","lastClicked","CellTemplateDirective","MonthCellTemplateDirective","YearCellTemplateDirective","DecadeCellTemplateDirective","CenturyCellTemplateDirective","WeekNumberCellTemplateDirective","HeaderTitleTemplateDirective","minError","maxError","KEY_TO_ACTION","HeaderTemplateDirective","FooterTemplateDirective","FooterComponent","showFooter","MultiViewCalendarLocalizedMessagesDirective","VALUE_DOC_LINK$5","RANGE_CALENDAR_VALUE_ACCESSOR","MultiViewCalendarComponent","RANGE_CALENDAR_RANGE_VALIDATORS","selectionService","showCalendarHeader","rangeValidation","disabledDatesRangeValidation","activeViewChange","valueChange","blurEvent","focusEvent","onClosePopup","onTabPress","onShiftTabPress","isHovered","_min","_max","_focusedDate","onControlChange","onControlTouched","minValidateFn","maxValidateFn","disabledDatesRangeValidateFn","setClasses","multiViewCalendarHeaderIdLabel","calendarHeaderIdLabel","lastSelected","_selectionRange","_cellTemplateRef","_monthCellTemplateRef","_yearCellTemplateRef","_decadeCellTemplateRef","_centuryCellTemplateRef","_weekNumberTemplateRef","_footerTemplateRef","_headerTitleTemplateRef","_headerTemplateRef","bottomViewEnum","topViewEnum","widgetId","ariaActivedescendant","handleFocusout","handleMouseEnter","handleMouseLeave","handleMousedown","handleClick","arrowUpOrDownKeyPressed","Keys$1","onArrowLeftAndControl","onTKeyPress","onEnterKeyPress","onArrowUpPress","escKey","tabKeyPress","shiftKeyPress","viewList","emitNavigate","updateButtonState","verifyChanges","selectedRange","disabledDatesInRange","disabledDatesRangeValidator","preventScroll","canNavigateDown","sameDates","parseSelectionToValue","todayDate","isSameView","isBottomView","setActiveDate","emitCellEvent","selectionModifiers","headerElement","i18n_8","i18n_10","i18n_12","i18n_14","div$1","ul$1","li$1","th","tbody","thead","scrollable$1","navigationList","navElement","viewFactory","renderWeekHeader","viewElement","contentElement","getScrollable","monthView","yearView","decadeView","getBody","CalendarDOMService","ensureHeights","calendarHeight","calculateHeights","hostContainer","batch","monthViewHeight","headerHeight","scrollableContentHeight","calendarWidth","monthViewWidth","scrollableContentWidth","yearViewHeight","scrollableYearContentHeight","yearViewWidth","decadeViewHeight","centuryViewHeight","decadeViewWidth","centuryViewWidth","navigationItemHeight","viewHeight","viewDimension","viewWidth","viewProp","hostClone","RowHeightService","detailRowHeight","heights","expandDetail","updateRowHeight","collapseDetail","ScrollAction","PageAction","ScrollerService","scrollObservable","firstLoaded","bottomOffset","topOffset","rowHeightService","lastLoaded","lastScroll","offsetBufferRows","rowsForHeight","skipWithOffset","scrollSubscription","onScroll","offsetSize","firstItemIndex","lastItemIndex","nonVisibleBuffer","SCROLLER_FACTORY_TOKEN","DEFAULT_SCROLLER_FACTORY","ScrollDirection","scrollModifiers","scrollNormalizers","scrollValidators","VirtualizationComponent","scrollerFactory","scrollBarWidthService","itemHeight","itemWidth","maxScrollDifference","scrollOffsetSize","scrollDuration","activeIndexChange","pageChange","scrollChange","wrapperClasses","dispatcher","horizontalClass","totalVertexLength","containerOffsetSize","getContainerProperty","containerScrollSize","containerScrollPosition","createRowHeightService","containerScrollSubscription","scroll$","emitActiveIndex","animationSubscription","activeIndex","itemIndex","isIndexVisible","containerTop","containerBottom","isListScrolled","scrollToIndex","scrollToBottom","animateToIndex","indexOffset","getContainerScrollDirection","scrollRange","modifyScroll","normalizeScroll","isScrollValid","takeWhile","inclusive","containerScroll","maxScroll","containerMaxScroll","difference","differenceToScroll","staticOffset","lastActiveIndex","NavigationComponent","dom","indexToScroll","maxViewHeight","totalChanged","virtualization","ViewListComponent","cols","minViewsToRender","headerComponent","getBottomOffset","generateDates","isEqualMonthYear","date1","date2","updateIndex","isScrolled","getScrollableHeight","ScrollSyncService","magnitude","divideByMagnitude","powerByMagnitude","sync","navScrolled","monthScrolled","navSubscription","scrollSiblingOf","viewSubscription","scrolledElement","siblingComponent","calculateScroll","NavigationItemTemplateDirective","PickerService","sameDateSelected","dateCompletenessChange","MultiViewCalendarCustomMessagesComponent","override","CalendarMessages","ɵCalendarMessages_BaseFactory","CalendarLocalizedMessagesDirective","VALUE_DOC_LINK$4","virtualizationProp","CALENDAR_VALUE_ACCESSOR","CalendarComponent","CALENDAR_RANGE_VALIDATORS","KENDO_INPUT_PROVIDER","scrollSyncService","pickerService","activeViewDateChange","syncNavigation","_type","_showOtherMonthDays","popupId","activeViewDate","lastDayInPeriod","_disabledDates","_navigationItemTemplateRef","multiViewCalendar","localizationChangeSubscription","viewChangeSubscription","navigationView","unbindCallback","pageChangeSubscription","currentlyFocusedElement","blurTarget","focusTarget","emitSameDate","emitBlur","emitFocus","handleComponentClick","arrowKeyPressed","focusToday","infiniteCalendarTable","i18n_18","i18n_20","i18n_22","i18n_24","incompleteDateValidator","incomplete","incompleteDate","Arrow","DateInputMessages","ɵDateInputMessages_BaseFactory","DateInputLocalizedMessagesDirective","nextId","DATE_PART_REGEXP","TIME_PART_REGEXP","DateInputIntl","_localeData","localeData","DateInputComponent","ariaReadOnly","incompleteDateValidation","spinners","valueUpdate","formatSections","hasMousedown","focusedPriorToMousedown","isDateIncomplete","incompleteValidator","_focusableId","_formatPlaceholder","kendoDate","kendoDateObject","focusableId","pickerType","_pickerType","spinup","spindown","setSpinnerFill","inputElement","inputValue","formControl","handleDragAndDrop","initKendoDate","updateFormatSections","verifyRange","updateIncompleteValidationStatus","setComponentClasses","setAriaInvalid","onWidgetValueChange","inputEnd","onWidgetInputEnd","focusEnd","onWidgetFocus","blurEnd","onWidgetBlur","onWidgetKeyDown","spinner","oldFill","isPopupOpen","hasPopup","i18n_29","i18n_31","i7","TOUCH_ENABLED","CalendarCustomMessagesComponent","DatePickerMessages","ɵDatePickerMessages_BaseFactory","DatePickerLocalizedMessagesDirective","DatePickerComponent","readOnlyInput","_navigation","disabledDatesValidation","adaptiveMode","_show","disabledDatesValidateFn","pickerSubscriptions","handleSameSelection","handleDateCompletenessChange","_subtitle","toggleButton","popupUID","toggleCalendar","actionSheet","disabledDate","disabledDatesValidator","windowBlurSubscription","handleActionSheetCollapse","handleActionSheetClick","handleIconClick","focusInput","handleDateInputClick","handleInputChange","isAdaptiveModeEnabled","expanded","toggleActionSheet","togglePopup","isTabExitingCalendar","toggleFocus","setAriaActiveDescendant","ariaActiveDescendantSubscription","updateActionSheetAdaptiveAppearance","animationContainer","handleWindowBlur","blurArgs","currentFocusTarget","isInsideActionSheet","blurComponent","i1$2","i18n_38","i18n_40","i18n_42","i18n_44","i18n_46","i9","ul","li","listTitle","actionSheetContent","isDateTimePicker","timeListWrapper","isAdaptiveEnabled","TimePickerDOMService","timeListHeight","clamp$3","HOURS_IN_DAY","distanceFromMin$3","limit$3","borderValue","barrier","limitDown$3","limitUp$3","HoursService","boundRange","insertUndividedMax","toListItem","selectedValue","getHour","stepper$3","countFromMin","addLast","addMissing","isRangeChanged","isLastMissing","missing","isMissing","divideByStep","valueInList","lastHour","missingItem","clamp$2","MINUTES_IN_HOUR","distanceFromMin$2","limit$2","limitDown$2","limitUp$2","MinutesService","getMinute","stepper$2","lastMinute","SECONDS_IN_HOUR","distanceFromMin$1","limit$1","limitDown$1","limitUp$1","SecondsService","getSecond","stepper$1","lastSecond","MILLISECONDS_IN_SECOND","distanceFromMin","limitDown","limitUp","MillisecondsService","getMillisecond","stepper","lastMillisecond","isAM","inReverseRange","DayPeriodService","hourAM","candidateAM","normalizedRange","isPM","__","minHour","maxHour","CalendarCommonModule","TemplatesModule","MultiViewCalendarModule","IntlModule","VirtualizationModule","CalendarModule","CalendarsModule","DateInputModule","DatePickerCustomMessagesComponent","ADAPTIVE_MODULES","NavigationModule","TextBoxModule","AdaptiveModule","DatePickerModule","COMPONENT_MODULES$2","DateRangeModule","COMPONENT_MODULES$1","TimePickerModule","DateTimePickerModule","COMPONENT_MODULES","DateInputsModule","DialogActionsComponent_ng_content_0_Template","DialogActionsComponent_ng_container_1_ng_container_1_ng_container_1_Template","DialogActionsComponent_ng_container_1_ng_container_1_ng_template_2_Template","action_r5","DialogActionsComponent_ng_container_1_ng_container_1_Template","isDivider","DialogActionsComponent_ng_container_1_Template","actionsArray","DialogActionsComponent_ng_template_2_Template","DialogComponent_kendo_dialog_titlebar_4_Template","closeTitle","titleId","DialogComponent_ng_content_5_Template","DialogComponent_ng_content_7_Template","DialogComponent_8_ng_template_0_Template","DialogComponent_8_Template","contentTemplate","DialogComponent_ng_content_9_Template","DialogComponent_kendo_dialog_actions_10_Template","actionsLayout","DialogComponent_div_11_Template","WindowTitleBarComponent_ng_content_0_Template","WindowTitleBarComponent_1_ng_template_0_Template","WindowTitleBarComponent_1_Template","WindowMinimizeActionDirective_kendo_icon_wrapper_0_Template","WindowMinimizeActionDirective_span_1_Template","WindowMinimizeActionDirective_span_2_Template","_c10","WindowMaximizeActionDirective_kendo_icon_wrapper_0_Template","WindowMaximizeActionDirective_span_1_Template","WindowMaximizeActionDirective_span_2_Template","WindowRestoreActionDirective_kendo_icon_wrapper_0_Template","WindowRestoreActionDirective_span_1_Template","WindowRestoreActionDirective_span_2_Template","_c12","WindowCloseActionDirective_kendo_icon_wrapper_0_Template","WindowCloseActionDirective_span_1_Template","WindowCloseActionDirective_span_2_Template","WindowComponent_kendo_window_titlebar_2_Template","titleBarTemplate","minimizeButtonTitle","maximizeButtonTitle","restoreButtonTitle","closeButtonTitle","WindowComponent_ng_content_3_Template","WindowComponent_div_4_ng_content_1_Template","WindowComponent_div_4_2_ng_template_0_Template","WindowComponent_div_4_2_Template","WindowComponent_div_4_Template","keepContent","WindowComponent_ng_template_5_div_0_Template","WindowComponent_ng_template_5_Template","resizeDirections","WindowComponent_div_6_Template","_c21","_c22","toClassList","DIALOG_ELEMENTS_HANDLING_ESC_KEY","namesList","validTabIndex","focusable","RESIZE_DIRECTIONS","OFFSET_STYLES","createValueWithUnit","DialogActionsComponent","actionsTemplate","startClassName","centerClassName","endClassName","stretchedClassName","_r2","DIALOG_LOCALIZATION_SERVICE","TitleBarLocalizationService","messageService","dialogLocalization","shortKey","RTL","restoreTitle","maximizeTitle","minimizeTitle","LocalizedMessagesDirective","DialogTitleBarComponent","onCloseClick","i18n_1","DialogCloseResult","DEFAULT_ANIMATION_CONFIG","DialogComponent","contentId","domSubs","generateTitleId","generateContentId","handleThemeColorClass","htmlAttributes","tIndex","_htmlAttributes","setServiceClasses","_cssClass","titlebarContent","handleInitialFocus","titlebarView","actionsView","initDomEvents","animateContent","defAnimationConfig","animatedElement","animationSpecs","animations","animationType","endScale","createPlayer","onKeyDown","handleActionButtonFocus","keepFocusWithinComponent","primaryButton","findPrimary","autoFocusedElement","initiallyFocusedElement","shouldFocusPrimary","findPrimaryButton","focusableActionButtons","getAllFocusableChildren","firstFocusable","lastFocusable","getFirstAndLastFocusable","shiftTabAfterFirstFocusable","i2$1","i18n_4","DialogContentBase","dialogTitleBar","dialogActions","DialogContainerService","DialogInjector","getDialogRef","DialogService","initializeDialog","contentFrom","apiClose","preventAction","dialogRefParameter","isNotComponent$1","hasContentTitle","hasContentActions","titleNodes","actionNodes","newZIndex","resizable","createMoveStream","mouseDown","originalY","DragResizeService","stateChange","resizeStart","resizeEnd","lastAction","dragSubscription","restoreOptions","onDrag","dragStarted","ensureWidth","handleDrag","startOffsetAndPosition","resizeStarted","currentOffsetAndPosition","handleResize","old","newWidth","newHeight","restoreAction","defaultState","storeOptions","maximizeAction","maximizeState","windowViewPort","minimizeAction","minimizeState","applyManualState","clearHeight","closeAction","windowOffset","positionWithScroll","getDocumentElement","setRestoreOption","nextPossibleZIndex","nextZIndex","getWindowViewPort","ResizeHandleDirective","setDisplay","WindowTitleBarComponent","dragDirective","isDraggable","subscribeDrag","subscribeStateChange","unsubscribeDrag","unsubscribeState","titleBar","stateSubscription","handleArrow","handleEscape","handleStateChange","WindowMinimizeActionDirective","Button","_service","buttonType","WindowMaximizeActionDirective","WindowRestoreActionDirective","WindowCloseActionDirective","WindowComponent","widthChange","heightChange","topChange","leftChange","draged","resized","windowSubscription","setOption","setNextZIndex","setInitialOffset","titleBarView","titleBarContent","isTruthy","updateAllOffset","bringToFront","setDimension","showDefaultTitleBar","styleMinWidth","styleMinHeight","stylePosition","wrapperMaximizedClass","wrapperMinimizedClass","onComponentFocus","onComponentBlur","currentZIndex","resizeHandles","i18n_13","i18n_15","i18n_17","i18n_19","WindowCloseResult","WindowRef","WindowContainerService","WindowInjector","getWindowRef","WindowService","windowRef","preventClose","windowRefParameter","isNotComponent","SharedModule","WindowModule","TreeViewGroupComponent_li_0_span_2_Template","node_r2","expandNode","isExpanded","isItemExpandable","getFontIcon","getSvgIcon","TreeViewGroupComponent_li_0_kendo_checkbox_3_Template","checkNode","isItemDisabled","isChecked","TreeViewGroupComponent_li_0_ng_container_7_ng_template_1_Template","TreeViewGroupComponent_li_0_ng_container_7_Template","nodeTemplateRef","TreeViewGroupComponent_li_0_ng_container_8_Template","nodeText","TreeViewGroupComponent_li_0_ul_9_Template","fetchChildren","loadOnDemand","checkboxes","expandIcons","selectable","touchActions","hasCheckbox","expandDisabledNodes","loadMoreButtonTemplateRef","nextFields","loadMoreService","trackBy","disableParentNodesOnly","TreeViewGroupComponent_li_0_Template","parentDataItem","totalNodesCount","setItemClasses","hasTemplate","TreeViewGroupComponent_li_1_span_2_Template","TreeViewGroupComponent_li_1_5_ng_template_0_Template","TreeViewGroupComponent_li_1_5_Template","loadMoreButtonIndex","TreeViewGroupComponent_li_1_ng_container_6_Template","loadMoreTitle","TreeViewGroupComponent_li_1_Template","loadingMoreNodes","TreeViewComponent_span_1_ng_template_3_Template","TreeViewComponent_span_1_Template","_r5","filterChange","filterInputPlaceholder","DataChangeNotificationService","ExpandStateService","collapse","IndexBuilderService","INDEX_SEPARATOR","indexForLevel","lastLevelIndex","LoadingNotificationService","notifyLoaded","webkitMatchesSelector","closestWithMatch","closestNode","skipTab","isLoadMoreButton","focusableNode","nodeId","buildTreeIndex","safeChildren","lastVisibleNode","NavigationModel","ib","firstVisibleNode","lastVisibleChild","visibleSibling","firstFocusableNode","findParent","parentLevel","findVisibleChild","findVisiblePrev","levelIndex","prevNodesHidden","findVisibleNext","hasVisibleChildren","registerItem","loadMoreButton","unregisterItem","childLevel","indexToMatch","isLeaf","nextItemIndex","nextItem","expands","moves","selects","deselectAllButCurrentItem","loadMore","focusableItem","moveToFirstVisibleChild","moveToParent","handleEnter","handleSpace","shouldScroll","isActiveExpanded","notifyMove","activateParent","activateIndex","activateClosest","activateFocusable","selectIndex","notifyLoadMore","itemAtIndex","updateItem","moveAction","notifyExpand","navigationState","NodeChildrenService","childrenLoaded","NodeTemplateDirective","LoadMoreButtonTemplateDirective","DataBoundComponent","ExpandableComponent","isFirstSelected","firstIndex","setFirstSelected","INDEX_REGEX","TreeViewLookupService","currentLookup","registerChildren","replaceItem","addToParent","itemLookup","mapChildren","parentItem","CheckBoxComponent","checkStateChange","checkState","classWrapper","indeterminate","checkBoxClasses","labelledby","buildItem","TreeViewItemDirective","expandService","lookupService","isInitialized","_isExpanded","_isSelected","treeItem","parentTreeItem","registerNavigationItem","setAriaAttributes","updateTabIndex","moveLookupItem","moveNavigationItem","updateNodeAvailability","navState","focusItem","activateItem","shouldExpand","scrollIntoView","indexChange","expandable","checkable","LoadingIndicatorDirective","loadingService","_loading","loadingNotifications","TreeViewItemContentDirective","initialSelection","updateFocusClass","updateSelectionClass","TOP_ITEM","MID_ITEM","BOT_ITEM","TreeViewGroupComponent","indexBuilder","treeViewLookupService","nodeChildrenService","dataChangeNotification","kGroupClass","initialNodesLoaded","singleRecordSubscriptions","localizationSubscriptions","moreNodesAvailable","setGroupSize","registerLoadedNodes","getTotalNodesCount","nodesSubscription","loadMoreNodesSubscription","subscribeToNodesChange","loadMoreNodes","setNodeChildren","mapToTreeItem","fetchMoreNodes","loadMoreLocalNodes","initialLoadMoreButtonIndex","getInitialPageSize","reselectItemAt","emitChildrenLoaded","contentChildren","mappedChildren","i11","TreeViewMessages","ɵTreeViewMessages_BaseFactory","TreeViewComponent","fetchNodes","nodeDragStart","nodeDrag","filterStateChange","nodeDrop","nodeDragEnd","addItem","removeItem","checkedChange","selectionChange","nodeClick","nodeDblClick","filterable","_animate","_nextId","_nodeTemplateRef","nodeTemplateQuery","_loadMoreButtonTemplateRef","loadMoreButtonTemplateQuery","_hasChildren","_isChecked","treeviewId","preloadChildNodes","attachDomHandlers","searchbox","focusIndex","rebindChildren","collapseNode","getNodePageSize","verifyLoadMoreService","setNodePageSize","registerLookupItems","blurHandler","keydownHandler","isContent","lookup","treeItems","buildTreeItem","currentLevelIndex","assetsContainer","i18n_5","innerDiv","CheckBoxModule","InputsModule","TreeViewModule","ListComponent_div_0_1_ng_template_0_Template","ListComponent_div_0_1_Template","fixedGroupTemplate","currentGroup","ListComponent_div_0_ng_template_2_Template","listGroupStickyHeaderTextClass","boxSizing","ListComponent_div_0_Template","listGroupStickyHeaderClass","ListComponent_5_ng_template_0_input_1_Template","itemIndex_r12","onCheckedChange","checkboxClasses","ListComponent_5_ng_template_0_2_ng_template_0_Template","ListComponent_5_ng_template_0_2_Template","dataItem_r11","ListComponent_5_ng_template_0_ng_template_3_Template","ListComponent_5_ng_template_0_Template","listItemClass","startFrom","multipleSelection","isAltRow","optionPrefix","isItemSelected","ListComponent_5_Template","ListComponent_6_ng_template_0_li_0_3_ng_template_0_Template","ListComponent_6_ng_template_0_li_0_3_Template","dataItem_r24","ctx_r29","groupTemplate","ListComponent_6_ng_template_0_li_0_ng_template_4_Template","ListComponent_6_ng_template_0_li_0_Template","ctx_r34","itemIndex_r25","ctx_r26","listGroupItemClass","listGroupItemTextClass","ListComponent_6_ng_template_0_li_1_2_ng_template_0_Template","ListComponent_6_ng_template_0_li_1_2_Template","ctx_r36","ListComponent_6_ng_template_0_li_1_ng_template_3_Template","ctx_r37","ListComponent_6_ng_template_0_li_1_Template","ctx_r41","ctx_r27","offsetIndex","ListComponent_6_ng_template_0_Template","ListComponent_6_Template","ListComponent_kendo_resize_sensor_7_Template","_r43","ctx_r42","listResize","ListComponent_div_8_Template","_r46","ctx_r45","ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_ng_template_2_Template","ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_Template","onValueChange","searchBarValue","ResponsiveRendererComponent_ng_template_2_ng_container_13_Template","ResponsiveRendererComponent_ng_template_2_div_14_Template","onApply","messageFor","ResponsiveRendererComponent_ng_template_2_Template","closePopup","showTextInput","sharedPopupActionSheetTemplate","showActionButtons","AutoCompleteComponent_span_2_ng_template_1_Template","AutoCompleteComponent_span_2_Template","prefixTemplate","AutoCompleteComponent_kendo_separator_3_Template","AutoCompleteComponent_span_6_Template","clearValue","clearButtonVisiblity","AutoCompleteComponent_span_7_Template","AutoCompleteComponent_kendo_separator_8_Template","AutoCompleteComponent_span_9_ng_template_1_Template","AutoCompleteComponent_span_9_Template","suffixTemplate","AutoCompleteComponent_ng_template_10_ng_container_0_Template","AutoCompleteComponent_ng_template_10_Template","AutoCompleteComponent_kendo_resize_sensor_14_Template","_r20","AutoCompleteComponent_ng_template_16_0_ng_template_0_Template","_c19","AutoCompleteComponent_ng_template_16_0_Template","AutoCompleteComponent_ng_template_16_div_3_ng_template_1_Template","AutoCompleteComponent_ng_template_16_div_3_ng_template_2_Template","AutoCompleteComponent_ng_template_16_div_3_Template","noDataTemplate","AutoCompleteComponent_ng_template_16_4_ng_template_0_Template","AutoCompleteComponent_ng_template_16_4_Template","AutoCompleteComponent_ng_template_16_Template","_r30","listBoxId","listHeight","showStickyHeader","_c20","ComboBoxComponent_span_2_ng_template_1_Template","ComboBoxComponent_span_2_Template","ComboBoxComponent_kendo_separator_3_Template","_c29","ComboBoxComponent_span_6_Template","_r16","preventEventDefault","ComboBoxComponent_span_7_Template","ComboBoxComponent_kendo_separator_8_Template","ComboBoxComponent_span_9_ng_template_1_Template","ComboBoxComponent_span_9_Template","ComboBoxComponent_ng_template_13_ng_container_0_Template","ComboBoxComponent_ng_template_13_Template","ComboBoxComponent_kendo_resize_sensor_15_Template","ComboBoxComponent_ng_template_19_0_ng_template_0_Template","ComboBoxComponent_ng_template_19_0_Template","ComboBoxComponent_ng_template_19_div_3_ng_template_1_Template","ComboBoxComponent_ng_template_19_div_3_ng_template_2_Template","ComboBoxComponent_ng_template_19_div_3_Template","ComboBoxComponent_ng_template_19_4_ng_template_0_Template","ComboBoxComponent_ng_template_19_4_Template","ComboBoxComponent_ng_template_19_Template","DropDownListComponent_3_ng_template_0_Template","DropDownListComponent_3_Template","valueTemplate","DropDownListComponent_ng_template_4_Template","DropDownListComponent_span_5_Template","DropDownListComponent_ng_template_8_ng_container_0_Template","DropDownListComponent_ng_template_8_Template","DropDownListComponent_kendo_resize_sensor_10_Template","DropDownListComponent_ng_template_14_ng_template_0_Template","_r23","filterText","handleFilter","onFilterFocus","blurFilterInput","ctx_r28","filterInputClasses","ariaControls","_c38","DropDownListComponent_ng_template_14_ng_template_1_Template","optionLabelSizeClass","isDisabledDefaultItem","getDefaultItemText","DropDownListComponent_ng_template_14_ng_template_2_ng_template_2_Template","DropDownListComponent_ng_template_14_ng_template_2_Template","defaultItem","DropDownListComponent_ng_template_14_3_ng_template_0_Template","DropDownListComponent_ng_template_14_3_Template","DropDownListComponent_ng_template_14_div_6_ng_template_1_Template","DropDownListComponent_ng_template_14_div_6_ng_template_2_Template","ctx_r32","DropDownListComponent_ng_template_14_div_6_Template","DropDownListComponent_ng_template_14_7_ng_template_0_Template","DropDownListComponent_ng_template_14_7_Template","DropDownListComponent_ng_template_14_Template","_r35","isActionSheetExpanded","ariaLive","TagListComponent_div_0_2_ng_template_0_Template","TagListComponent_div_0_2_Template","TagListComponent_div_0_ng_template_3_1_ng_template_0_Template","TagListComponent_div_0_ng_template_3_1_Template","tag_r1","TagListComponent_div_0_ng_template_3_ng_template_2_Template","TagListComponent_div_0_ng_template_3_Template","TagListComponent_div_0_ng_template_5_1_ng_template_0_Template","TagListComponent_div_0_ng_template_5_1_Template","TagListComponent_div_0_ng_template_5_ng_template_2_Template","tagProp","TagListComponent_div_0_ng_template_5_Template","_c39","a3","a4","a5","a6","a7","a8","a9","a10","a11","TagListComponent_div_0_Template","restoredCtx","deleteTag","isTagDisabled","itemId","tagAriaHidden","isGroupTag","_c40","MultiSelectComponent_span_2_ng_template_1_Template","MultiSelectComponent_span_2_Template","MultiSelectComponent_kendo_separator_3_Template","MultiSelectComponent_span_8_Template","clearAll","MultiSelectComponent_span_9_Template","MultiSelectComponent_kendo_separator_10_Template","MultiSelectComponent_span_11_ng_template_1_Template","MultiSelectComponent_span_11_Template","MultiSelectComponent_ng_template_12_ng_container_0_Template","MultiSelectComponent_ng_template_12_Template","MultiSelectComponent_kendo_resize_sensor_14_Template","_r19","MultiSelectComponent_ng_template_18_0_ng_template_0_Template","MultiSelectComponent_ng_template_18_0_Template","MultiSelectComponent_ng_template_18_div_1_2_ng_template_0_Template","MultiSelectComponent_ng_template_18_div_1_2_Template","customItemTemplate","MultiSelectComponent_ng_template_18_div_1_ng_template_3_Template","MultiSelectComponent_ng_template_18_div_1_Template","_r27","customItemSizeClass","MultiSelectComponent_ng_template_18_div_4_ng_template_1_Template","MultiSelectComponent_ng_template_18_div_4_ng_template_2_Template","ctx_r31","MultiSelectComponent_ng_template_18_div_4_Template","MultiSelectComponent_ng_template_18_5_ng_template_0_Template","MultiSelectComponent_ng_template_18_5_Template","MultiSelectComponent_ng_template_18_Template","_r34","ctx_r33","allowCustom","isEmptyString","isObjectArray","selectedIndices","extractedValues","getter$1","matchText","word","inDropDown","setListBoxAriaLabelLebBy","optionsList","listBox","setActionSheetTitle","actionSheetTitle","SearchBarComponent","ariaExpanded","onNavigate","searchBarClass","_userInput","_previousValue","_isSuggestable","_isFilterable","isSuggestable","setAriaAutocomplete","isFilterable","userInput","setInputSize","previousUserInput","suggestedText","caretStart","caretAtEnd","writeInputValue","combineStr","setInputSelection","handleInput","isJapanese","lengthOf","placeholderLength","textLength","tagListId","isLoading","ItemTemplateDirective","GroupTemplateDirective","FixedGroupTemplateDirective","DataService","grouped","groupIndices","isGrouped","getGroupIndices","_flatData","itemsCount","hasProps","closestGroup","itemAt","flatIndex","groupAt","groupItemsIndices","filterAndMap","mappedItem","groupField","itemGroup","groupIndex","DisabledItemsService","dataService","itemDisabled","isIndexDisabled","disabledItemsService","onSelect","indicesToBeRemoved","indicesToBeAdded","newSelection","preventClosingPopup","added","emitMultipleAddedRemoved","isMultipleSelection","addMultiple","deselect","lastClickedIndex","unselectMultiple","resetSelection","selectFromTo","addedIndices","unselectFromTo","indicesToBeUnselected","unselectNotNeededIndices","startOfSelection","endOfSelection","totalItems","SelectPrevious","SelectNext","SelectAll","SelectAllToBeginning","SelectAllToEnd","NavigationEvent","backspace","home","pagedown","pageup","selectnext","selectprevious","selectall","selectalltobeginning","selectalltoend","clampIndex","NoDataTemplateDirective","FilterableComponent","ListItemDirective","SelectableDirective","focusedClassName","selectedClassName","checkOnClick","isMultiselect","popupListScroll","lastScrollTop","scrollToFocused","selectSubscription","scrollToItem","prepareClasses","hasVirtualScrollbar","setOverflow","prefetchData","findCurrentGroup","setGroupAttributes","liItems","previousGroup","childrenliItemsIds","firstGroupReached","positionItems","listContentClass","listClass","listVirtualClass","firstVisibleItem","visibleItems","trunc","prevPage","changePage","scrollWithOnePage","contentOffsetHeight","contentScrollTop","itemOffsetTop","bottomDistance","hasScrollbar","virtualContainer","firstGroupHeaderInTargetedPage","i14","DEFAULTS","normalizeVirtualizationSettings","defaultOverrides","ResponsiveRendererComponent","textInputChange","onExpand","onCollapse","animationDuration","ActionSheetComponent","actionSheetSearchBar","noDataText","checkAllText","selectButtonText","filterInputLabel","popupLabel","applyButton","cancelButton","SharedDropDownEventsDirective","isFocusedChange","cursorInsideWrapper","tabbing","closest$1","clearButtonClicked","AUTOCOMPLETE_VALUE_ACCESSOR","AutoCompleteComponent","highlightFirst","_listHeight","clearButton","opened","inputFocus","inputBlur","onChangeCallback","onTouchedCallback","popupMouseDownHandler","valueChangeSubject","subscribeTouchEvents","responsiveRendererComponent","wrapperOffsetWidth","popupHeight","listContainerClasses","containerClasses","suggestion","hasMatch","suggest","backspacePressed","shouldOpen","triggerPopupEvents","_virtualSettings","touchstartDisposeHandler","onAdaptiveTextBoxChange","focusItemAt","searchbar","popupWrapper","emitChange","searchBarChange","currentTextLength","onFilterChange","handleInputFocus","valueHasChanged","handleInputBlur","insensitiveMatch","handleItemChange","handleItemFocus","findIndexPredicate","_event","openActionSheet","popupOpen","popupClose","closeActionSheet","maxIndex","itemText","COMBOBOX_VALUE_ACCESSOR","ComboBoxComponent","valueNormalizer","defaultVirtualItemHeight","defaultVirtualPageSize","_filtering","_text","customValueSubject","valueSubject","clearValueSubject","setState","valuePrimitive","isPrimitive","_valuePrimitive","popupWidth","attachStreams","createValueStream","attachSelectClickHandler","valueStream","clearFilter","customValueStreams","partition","allowCustomValueStream","disableCustomValueStream","clearValueStream","valueSubscription","merged","selectionChanged","emitValueChange","handleNavigationOpen","updateState","selectClickDisposeHandler","clearState","textEmpty","valueEmpty","_previousDataItem","selectButtonClasses","findDataItem","confirm","getSuggestion","hasSelected","hasFocused","previousText","focusedItemText","textHasChanged","useSuggestion","unresolvedSelection","restoreItemFocus","isCustom","selectClick","focusedDataItem","isInDropDown","i18n_21","i18n_23","i18n_25","i18n_27","ValueTemplateDirective","FilterInputDirective","nextTick","DROPDOWNLIST_VALUE_ACCESSOR","DropDownListComponent","caretAltDownSVGIcon","leftRightArrowsNavigation","haspopup","filterFocused","filterBlurred","hostElementFocused","hostElementBlurred","subscribeFocusEvents","onMouseDown","widgetTabIndex","providedTabIndex","focusComponent","isDisabledClass","isDisabledAttribute","hostTabIndex","readonlyClass","readonlyAttr","isBusy","isAriaExpanded","hostAriaInvalid","hostAriaActivedescendant","focusedItemNotSelected","onKeyPress","assignAriaDescribedBy","unSubscribeFocusEvents","onSelectionChange","itemFromEvent","shouldUsePrevious","shouldUseNewValue","componentBlur","currentOrDefault","defaultItemIndex","charCode","typingTimeout","selectNext","isInLoop","sameCharsOnly","shuffleData","splitIndex","loopMatch","nextMatch","primitive","ofSameType","trimmed","valueLabelId","i18n_30","i18n_32","i18n_34","i18n_36","i14$1","CustomItemTemplateDirective","TagTemplateDirective","GroupTagTemplateDirective","RemoveTagEvent","TagListComponent","disabledIndices","removeTag","hostId","propField","getPropField","positionIndex","_tag","tagPrefix","fieldsCount","valueDepth","MULTISELECT_VALUE_ACCESSOR","MultiSelectComponent","differs","focusedTagIndex","tagMapper","matchingValue","_valueHolder","_checkboxes","selectedDataItems","searchTextAndFocus","differ","valueChangeDetected","normalizeCheckboxesSettings","focusedListIndex","applyValue","cancelValue","addCustomValue","resolveAllValues","customValues","validateComplexValues","resolveValuesInArray","resolveDataItemFromTags","disabledItemsMapper","navigateInput","selectValue","handleBackspace","handleRemoveTag","removeGroupTag","removeSingleTag","_item","createCustomValueStream","unsubscribeEvents","onTagMapperChange","isClosed","isTagFocused","handleClose","handleUp","handleHome","handleEnd","handleDelete","handleRightKey","handleLeftKey","handleDownKey","handleSelectUpDown","handleSelectAllToBeginning","handleSelectAllToEnd","customValueSubscription","dataItemValues","isDataItemDisabled","customItem","handleSelectAll","sortSelectionAscending","selectedItemsCount","dataItemsCount","dataItemsWithoutHeadersCount","focusedItem","largestIndex","indexToSelect","selectRangeFromTo","startsFrom","tagTemplate","groupTagTemplate","i18n_41","i18n_43","i18n_45","i18n_47","i18n_49","SharedDirectivesModule","ActionSheetModule","DropDownTreesModule","SharedEventsModule","AutoCompleteModule","ComboBoxModule","DropDownListModule","OrderedMap","addToStart","addToEnd","addBefore","place","without","subtract","toObject","findDiffStart","childA","childB","sameMarkup","isText","nodeSize","findDiffEnd","posA","posB","iA","iB","same","Fragment","nodesBetween","nodeStart","descendants","textBetween","blockSeparator","leafText","spec","isBlock","isTextblock","lastChild","withText","cut","cutByIndex","RangeError","maybeChild","otherPos","retIndex","curPos","toStringInner","fromJSON","schema","nodeFromJSON","fromArray","joined","compareDeep","Mark","addToSet","placed","excludes","removeFromSet","isInSet","marks","sameSet","setFrom","none","ReplaceError","Slice","openStart","openEnd","insertInto","removeBetween","removeRange","maxOpen","openIsolating","isolating","indexTo","offsetTo","canReplace","$from","$to","replaceOuter","prepareSliceForReplace","$along","resolveNoCache","replaceThreeWay","replaceTwoWay","checkJoin","compatibleContent","joinable","$before","$after","addNode","$start","$end","textOffset","nodeAfter","nodeBefore","checkContent","ResolvedPos","resolveDepth","indexAfter","dOff","posAtIndex","marksAcross","isInline","sharedDepth","blockRange","inlineContent","NodeRange","sameParent","rem","resolveCached","resolveCache","resolveCachePos","resolveCacheSize","emptyAttrs","startPos","hasMarkup","defaultAttrs","mark","includeParents","nodeAt","childAfter","childBefore","rangeHasMark","isAtom","toDebugString","wrapMarks","contentMatchAt","contentMatch","matchFragment","two","validEnd","allowsMarks","canReplaceWith","matchType","canAppend","markFromJSON","ContentMatch","wrapCache","nodeTypes","TokenStream","parseExpr","dfa","nfa","labeled","explore","term","nullFrom","exprs","checkForDeadEnds","dead","hasRequiredAttrs","frag","defaultType","compatible","fillBefore","toEnd","finished","tp","createAndFill","findWrapping","computed","computeWrapping","via","edgeCount","eat","tok","SyntaxError","parseExprSeq","parseExprSubscript","parseExprAtom","resolveName","typeName","parseExprRange","parseNum","hasDefault","computeAttrs","built","given","initAttrs","Attribute","NodeType","markSet","atom","whitespace","isRequired","createChecked","validContent","allowsMarkType","markType","allowedMarks","topType","topNode","MarkType","Schema","linebreakReplacement","instanceSpec","contentExprCache","contentExpr","markExpr","gatherMarks","excl","topNodeType","wrappings","isTagRule","isStyleRule","normalizeLists","ParseContext","addAll","parseSlice","matchTag","matchesContext","getAttrs","matchStyle","schemaRules","priority","parseDOM","ignore","clearMark","fromSchema","domParser","blockTags","address","article","aside","blockquote","fieldset","figcaption","figure","h1","h2","h3","h4","h5","h6","hgroup","hr","noscript","ol","section","tfoot","ignoreTags","listTags","wsOptionsFor","preserveWhitespace","OPT_PRESERVE_WS","NodeContext","pendingMarks","activeMarks","stashMarks","popFromStashMark","applyPending","nextType","markMayApply","inlineContext","parser","topContext","topOptions","topMatch","findPositions","needsBlock","addDOM","addTextNode","addElement","withStyleRules","readStyles","parseStyles","addMarks","removeMarks","removePendingMark","addPendingMark","domNodeBefore","previousSibling","findInText","findInside","matchAfter","ruleID","normalizeList","prevItem","ruleFromNode","ignoreFallback","closeParent","oldNeedsBlock","leafFallback","addElementByRule","consuming","findPlace","continueAfter","startIn","getContent","contentDOM","findAround","findAtPoint","enterInner","textblockFromContext","closeExtra","preserveWS","topOpen","currentPos","textNode","useRoot","minDepth","$context","deflt","findSameMarkInSet","upto","stashMark","mozMatchesSelector","DOMSerializer","serializeFragment","createDocumentFragment","keep","rendered","spanning","markDOM","serializeMark","serializeNodeInner","renderSpec","toDOM","structure","xmlNS","innerContent","domSerializer","nodesFromSchema","marksFromSchema","gatherToDOM","factor16","makeRecover","recoverIndex","MapResult","delInfo","recover","deleted","deletedBefore","deletedAfter","deletedAcross","StepMap","inverted","recoverOffset","mapResult","assoc","simple","oldSize","del","Mapping","maps","appendMap","mirrors","setMirror","appendMapping","mapping","startSize","mirr","getMirror","appendMappingInverted","corr","stepsByID","Step","getMap","stepType","jsonID","stepClass","StepResult","failed","fail","fromReplace","mapFragment","mapped","AddMarkStep","oldSlice","RemoveMarkStep","AddNodeMarkStep","newSet","RemoveNodeMarkStep","ReplaceStep","contentBetween","ReplaceAroundStep","gapFrom","gapTo","clearIncompatible","parentType","clearNewlines","replSteps","newline","canCut","liftTarget","innerRange","around","findWrappingOutside","findWrappingInside","innerMatch","withAttrs","canSplit","typesAfter","$pos","innerType","rest","overrideChild","baseType","canJoin","replaceStep","fitsTrivially","Fitter","unplaced","frontier","findFittable","placeNodes","openMore","dropNode","moveInline","mustMoveInline","placedSize","startDepth","pass","sliceDepth","contentAt","frontierDepth","openAtEnd","dropFromFragment","closeFrontierNode","openFrontierNode","taken","openEndCount","closeNodeStart","addToFragment","contentAfterFits","findCloseLevel","dropInner","invalidMarks","definesContent","defining","definingForContent","closeFragment","oldOpen","newOpen","coveredDepths","AttrStep","DocAttrStep","TransformError","Transform","docs","maybeStep","addStep","docChanged","replaceWith","replaceRange","deleteRange","targetDepths","preferredTarget","definingAsContext","preferredTargetIndex","leftNodes","preferredDepth","leftNode","openDepth","targetDepth","startSteps","replaceRangeWith","insertPoint","covered","gapStart","gapEnd","splitting","wrappers","setBlockType","mapFrom","canChangeType","convertNewlines","supportLinebreak","replaceLinebreaks","startM","endM","replaceNewlines","setNodeMarkup","newNode","setNodeAttribute","setDocAttribute","addNodeMark","removeNodeMark","typeAfter","addMark","removing","adding","removeMark","classesById","$anchor","$head","SelectionRange","lastNode","lastParent","selectionToInsertionEnd","findFrom","textOnly","TextSelection","findSelectionIn","near","bias","AllSelection","atStart","atEnd","selectionClass","getBookmark","between","warnedAboutTextSelection","checkTextSelection","$cursor","ensureMarks","TextBookmark","dPos","NodeSelection","NodeBookmark","isSelectable","AllBookmark","startLen","_newFrom","newTo","Transaction","curSelectionFor","curSelection","storedMarks","selectionSet","setStoredMarks","addStoredMark","removeStoredMark","storedMarksSet","replaceSelection","replaceSelectionWith","inheritMarks","deleteSelection","insertText","setMeta","getMeta","isGeneric","scrolledIntoView","FieldDesc","baseFields","_marks","_old","Configuration","pluginsByKey","EditorState","applyTransaction","filterTransaction","rootTr","transactions","trs","applyInner","haveNew","appendTransaction","newInstance","$config","reconfigure","pluginFields","bindProps","Plugin","createKey","PluginKey","rowTypeAttr","colgroupAttr","resizableAttr","resizeHandle","dataResizeDirTable","dataResizeDirImage","changeStylesString","styleText","newStyle","styleToChange","regExp","filtered","nameValue","reAnyValue","setNodeStyle","styleType","findNthParentNodeOfType","findNthParentNode","filterEmptyAttrs","dispatch","getSelectionText","applyToWordDefault","expandSelection","applyToWord","applyToWordOptions","initialPosition","textBefore","textAfter","matchBefore","tran","expandToWordWrap","cmdState","cmdDispatch","Boolean","setStyleAttr","docum","removeRowType","setRowType","rowsWrapper","styleReplace","reTag","reStyle","replacer","htmlToFragment","fragmentToHtml","pmDocToFragment","restoreTables","emptyElement","HTMLDivElement","captionDiv","caption","createCaption","styleName","domToPmDoc","parseOptions","ProseMirrorDOMParser","parseContent","validateTablesToPmSchema","colgroup","getHtml","markApplies","can","returned","toggleMark","found$1","hasMark","altMarks","altStyle","currMarks","selectionMarks","getActiveMarks","hasNodesWithoutMarks","changeStyleFromMark","toChange","styleMark","changeStyleMark","currentMark","newMarkAttrs","newStyleMark","previousAdded","changeStyle","transaction","currentMarks","newAttrs","object1","object2","keys1","keys2","toggleInlineFormat","markAttrs","styleRemoved","dispatched","markDispatched","applyInlineStyle","marksFromSelection","newStyles","resultStyles","removeLink","cursorNodeIndex","toolMark","linkStart","linkSize","applyLink","commandName","getParentMark","modifyLink","changeTextBlock","stateDoc","blockNodes","blocksInSelection","selNode","stylesToApply","changedStyleResult","currentStyles","reducer","hasNode","parentBlockFormat","paragraph","heading","getBlockFormats","activeNode","alignBlocks","isAligned","cleanFormatting","blockNodeType","exceptMarks","cleanMarks","except","excludedMarkTypes","cleanTextBlockFormatting","class","__rest","liftListItem","itemType","liftToOuterList","endOfList","liftOutOfList","indexBefore","sinkListItem","nestedBefore","listsTypes","orderedList","bulletList","listItem","listType","indentRules","rtlStyle","outdentRules","joinBackward","atBlockStart","endOfTextblock","$cut","findCutBefore","deleteBarrier","textblockAt","delStep","side","only","selectNodeBackward","findCutAfter","newlineInCode","defaultBlockAt","exitCode","above","createParagraphNear","liftEmptyBlock","splitBlock","splitBlockAs","splitNode","splitType","$first","splitBlockKeepMarks","selectAll","joinMaybeClear","canDelAfter","joinAt","selAfter","afterText","afterDepth","selectTextblockSide","selectTextblockStart","selectTextblockEnd","chainCommands","joinForward","atBlockEnd","selectNodeForward","pcBaseKeymap","macBaseKeymap","baseKeymap","wrapIn","wrapping","indentBlocks","newMargin","isIndented","canIndentAsListItem","canOutdentAsListItem","isNestedInOL","isNestedInUL","canBeIndented","isIndentableBlock","outdent","liftBlockquote","getListLiftTarget","resPos","toggleListCommand","listNode","grandgrandParent","isRangeOfSingleType","isRangeOfType","getAncestorNodesBetween","findAncestorPosition","nestableBlocks","newPos","liftListItems","wrapInList","autoJoin","isJoinable","wrapDispatchForJoin","_s","doJoin","outerRange","$insert","doWrapInList","joinBefore","splitDepth","splitPos","pmWrapInList","listAttrs","listItemNodeType","reListStyle","listStyle","execArray","toggleList","fromNode","endNode","listNodes","rootListDepth","liftFollowingList","rootListDepthNum","lifted","listDepth","liftSelectionList","listCol","toggleUnorderedList","bulletListSettings","toggleOrderedList","orderedListSettings","alignLeftRules","alignRightRules","alignCenterRules","alignJustifyRules","alignRemoveRules","domIndex","assignedSlot","reusedRange","textRange","setEnd","setStart","isEquivalentPosition","targetOff","scanFor","atomElements","hasBlockDesc","contentEditable","pmViewDesc","selectionCollapsed","domSel","focusNode","focusOffset","anchorOffset","ie_edge","ie_upto10","ie_11up","ie_version","gecko","_chrome","chrome_version","vendor","maxTouchPoints","mac","webkit_version","windowRect","vp","visualViewport","getSide","scrollRectIntoView","startDOM","scrollThreshold","someProp","scrollMargin","elt","atTop","bounding","moveX","moveY","startY","dX","dY","scrollStack","restoreScrollStack","dTop","preventScrollSupported","findOffsetInNode","coordsClosest","firstBelow","coordsBelow","dxClosest","rowBot","rowTop","childIndex","rects","findOffsetInText","singleRect","inRect","startI","posAtCoords","caretFromPoint","caretPositionFromPoint","offsetNode","caretRangeFromPoint","startContainer","startOffset","targetKludge","posFromCaret","outsideBlock","sawBlock","docView","nearestDesc","posBefore","posAfter","posFromDOM","posFromElement","posAtStart","nonZero","BIDI","coordsAtPos","domFromPos","supportEmptyRange","takeSide","flattenV","rectBefore","rectAfter","flattenH","ignoreForCoords","withFlushedState","viewState","maybeRTL","cachedState","cachedDir","ViewDesc","matchesWidget","matchesMark","matchesNode","outerDeco","innerDeco","matchesHack","parseRule","stopEvent","posBeforeChild","posAtEnd","localPosFromDOM","domBefore","domAfter","onlyNodes","nodeDOM","getDesc","descAt","TrailingHackViewDesc","WidgetViewDesc","domAtom","parseRange","childBase","emptyChildAt","domAfterPos","anchorDOM","headDOM","getSelection","brKludge","domSelExtended","removeAllRanges","ignoreMutation","mutation","contentLost","markDirty","startInside","endInside","markParentsDirty","ignoreSelection","CompositionViewDesc","textDOM","mut","MarkViewDesc","nodeViews","reparseInView","NodeViewDesc","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","sameOuterDeco","updateChildren","composition","composing","localCompositionInfo","localComposition","compositionInChild","updater","ViewTreeUpdater","iterDeco","deco","onWidget","onNode","locals","decoIndex","restNode","widgets","compareSide","cutAt","insideNode","syncToMarks","placeWidget","compIndex","findNodeMatch","findIndexWithChild","updateNodeAt","updateNextNode","addTextblockHacks","destroyRest","protectLocalComposition","renderDescs","iosHacks","oldCSS","compositionNode","textPos","findTextInFragment","childStart","compositionNodes","updateInner","updateOuterDeco","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","selectNode","deselectNode","docViewDesc","pmIsDeco","inParent","trackWrites","parentDOM","descs","written","childDOM","rm","OuterDecoLevel","noDeco","outerDOM","prevComputed","curComputed","curDOM","patchAttributes","prevList","curList","preMatch","parentDesc","curDesc","descI","fI","outer","destroyBetween","maxKeep","markDesc","targetDesc","nextDOM","locked","recreateWrapper","requiresGeckoHackNode","addHackNode","hack","selectionFromDOM","domSelectionRange","inWidget","nearestDescNode","isOnEdge","selectionBetween","editorOwnsSelection","editable","hasFocus","hasSelection","selectionToDOM","syncNodeSelection","allowDefault","curSel","domObserver","delayedSelectionSync","setCurSelection","disconnectSelection","cursorWrapper","selectCursorWrapper","domSelection","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeClassOnSelectionChange","hideSelectionGuard","connectSelection","setEditable","wasDraggable","lastSelectedViewDesc","clearNodeSelection","hasFocusAndSelection","moveSelectionBlock","$side","selectHorizontally","mods","$newHead","nodePos","nodeLen","isIgnorable","skipIgnoredNodes","skipIgnoredNodesBefore","moveNode","isBlockNode","setSelFocus","skipIgnoredNodesAfter","textNodeAfter","textNodeBefore","findDirection","selectVertically","beyond","stopNativeHorizontalDelete","switchEditable","serializeForClipboard","detachedDoc","wrapMap","parseFromClipboard","plainText","inCode","asText","parsed","readHTML","metas","firstTag","restoreReplacedSpaces","contextNode","sliceData","inlineParents","addContext","closeSlice","normalizeSiblings","lastWrap","inLast","addToSibling","closeRight","withWrappers","closeRange","_detachedDoc","editHandlers","passiveHandlers","InputState","lastKeyCode","lastKeyCodeTime","lastClick","lastSelectionOrigin","lastSelectionTime","lastIOSEnter","lastIOSEnterFallbackTimeout","lastFocus","lastAndroidDelete","composingTimeout","compositionEndedAt","compositionID","compositionPendingChanges","domChangeCount","setSelectionOrigin","ensureListeners","currentHandlers","runCustomHandler","eventBelongsToView","bubbles","eventCoords","runHandlerOnContext","updateSelection","handleDoubleClick","handleTripleClick","defaultTripleClick","forceDOMFlush","endComposition","inOrNearComposition","forceFlush","captureKeyDown","getMods","safariDownArrowBug","selectNodeModifier","flushed","isNear","MouseDown","targetPos","mightDrag","startDoc","addAttr","setUneditable","updateAllowDefault","handleSingleClick","selectClickedNode","selectedNode","selectAt","selectClickedLeaf","contextmenu","timeoutComposition","scheduleComposeEnd","clearComposition","timestampFromCustomEvent","flushingSoon","compositionstart","compositionupdate","markCursor","compositionend","pendingRecords","brokenClipboardAPI","doPaste","preferPlain","singleNode","sliceSingleNode","clipboardData","uris","clearData","setData","captureCopy","selectNodeContents","paste","plain","capturePaste","Dragging","dragCopyModifier","dataTransfer","draggedSlice","effectAllowed","dragging","dragend","dragover","dragenter","eventPos","$mouse","insertPos","fits","beforeInsert","beforeinput","flushSoon","compareObjs","WidgetType","noSpec","Decoration","InlineType","inclusiveStart","inclusiveEnd","DecorationSet","local","decorations","buildTree","findInner","childOff","mapInner","newLocal","oldChildren","baseOffset","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","childOffset","mapAndGatherRemainingDecorations","gather","byPos","addInner","takeSpansForNode","moveSpans","withoutNulls","removeInner","localSet","DecorationGroup","removeOverlap","localsInner","mappedDecos","spans","hasNulls","localStart","working","insertAhead","viewDecorations","observeOptions","characterDataOldValue","attributeOldValue","useCharData","SelectionState","DOMObserver","handleDOMChange","onCharData","suppressingSelectionUpdates","removedNodes","takeRecords","suppressSelectionUpdates","ignoreSelectionChange","newSel","typeOver","registerMutation","brs","readSel","scrollToSelection","checkCSS","cssChecked","whiteSpace","cssCheckWarned","attributeName","addedNodes","rangeToSelectionRange","endContainer","endOffset","currentAnchor","domAtPos","resolveSelection","parsedSel","skipClosingAndOpening","fromEnd","mayOpen","isSurrogatePair","EditorView","mounted","prevDirectPlugins","pluginViews","_props","directPlugins","checkStateComponent","mount","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","readDOMChange","preferredPos","preferredSide","parseBetween","from_","to_","findDiff","endA","endB","nextSel","$fromA","inlineChange","looksLikeBackspace","$newStart","$newEnd","$next","markChange","chFrom","chTo","isMarkChange","curMarks","prevMarks","initInput","updatePluginViews","handleDOMEvents","prevProps","updateStateInner","setProps","updateSel","pluginsChanged","changedNodeViews","nA","nB","updateDoc","oldScrollPos","overflowAnchor","storeScrollPos","refDOM","refTop","localRect","forceSelUpdate","selectionContextChanged","sel1","sel2","chromeKludge","findCompositionNode","textNodeBefore$1","textNodeAfter$1","descAfter","descBefore","anchorInRightPlace","updateDraggedNode","resetScrollPos","newRefTop","destroyPluginViews","pluginView","movedPos","focusPreventScroll","setActive","updateRoot","posAtDOM","endOfTextblockVertical","nearest","endOfTextblockHorizontal","modify","oldNode","oldOff","oldBidiLevel","caretBidiLevel","newOff","pasteHTML","ClipboardEvent","pasteText","destroyInput","isDestroyed","dispatchTransaction","deepActiveElement","safariShadowSelectionRange","getComposedRanges","getTargetRanges","execCommand","contenteditable","normalizeKeyName","keymap","handleKeyDown","baseName","direct","noShift","fromCode","readFromCache","addToCache","cachePos","cacheSize","TableMap","problems","findCell","colCount","nextCell","rectBetween","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","cellsInRect","positionAt","rowStart","rowEnd","rowEndIndex","computeMap","tableRole","findWidth","hasRowSpan","rowNode","rowWidth","prevRow","rowspan","mapPos","colWidths","cellNode","colwidth","colW","widthIndex","expectedPos","tableMap","badWidths","findBadColWidths","colWidth","freshColWidth","getCellAttrs","extraAttrs","widthAttr","widths","getFromDOM","setCellAttrs","setDOMAttr","tableNodeTypes","tableEditingKey","cellAround","isInTable","selectionCell","$anchorCell","$headCell","$cell","cellNear","pointsAtCell","inSameTable","$cellA","$cellB","tableStart","removeColSpan","addColSpan","CellSelection","_CellSelection","tableChanged","isRowSelection","rowSelection","isColSelection","colSelection","rowContent","cellRect","extraLeft","extraRight","forEachCell","anchorTop","headTop","headRect","anchorLeft","headLeft","anchorCell","headCell","CellBookmark","_CellBookmark","drawCellSelection","fixTablesKey","PluginKey2","changedDescendants","curSize","fixTables","fixTable","tablePos","mustAdd","prob","fitSlice","isolateHorizontal","cellTop","cellLeft","isolateVertical","updatePos","insertCells","recomp","growTable","emptyHead","header_cell","start2","emptyRow","Fragment2","Slice2","shiftArrow","deleteCellSelection","maybeSetSelection","Selection2","atEndOfCell","cellSel","baseContent","Slice3","handlePaste","pastedCells","ensureRectangular","Fragment3","clipCells","newRows","handleMouseDown","startEvent","startDOMCell","domInCell","setCellSelection","cellUnderMouse","$anchor2","starting","TextSelection2","cellPos","mousePos","selectedRect","addColumn","refColumn","columnIsHeader","headerCell","removeColumn","mapStart","addRow","rowPos","refRow","rowIsHeader","removeRow","deleteRow","cellsOverlapRectangle","indexTop","indexLeft","indexBottom","indexRight","mergedPos","mergedCell","Fragment4","splitCell","splitCellWithType","getCellType","cellWrapping","baseAttrs","lastCell","isHeaderEnabledByType","cellPositions","toggleHeader","useDeprecatedLogic","deprecated_toggleHeader","isHeaderRowEnabled","isHeaderColumnEnabled","selectionStartsAt","newType","relativeCellPos","deleteTable","tableEditing","allowTableNodeSelection","Plugin2","createSelectionBetween","dist_handleTripleClick","normalizeSelection","NodeSelection2","isCellBoundarySelection","isTextSelectionAcrossCells","fromCellBoundaryNode","toCellBoundaryNode","PluginKey3","blockquoteDOM","hrDOM","preDOM","olDOM","ulDOM","liDOM","domAttributes","commonAttributes","hasAttrs","exclude","pmAttributes","tagMark","cellAttribute","cellAttributes","colgroupNodes","colgroupSchema","parseStrColgroup","tNodes","tableNodes","cellAttrs","tableGroup","table_row","table_cell","cellContent","table_header","tableAttrs","shouldSkip","shouldSkipColgroup","colgroupEl","table_wrapper","table_caption_external","horizontal_rule","code_block","hard_break","ordered_list","bullet_list","list_item","RopeSequence","leafAppend","leafPrepend","appendInner","Append","sliceInner","getInner","forEachInner","forEachInvertedInner","Leaf","prototypeAccessors","configurable","defineProperties","leftLen","rope_sequence_dist","Branch","eventCount","popEvent","preserveItems","remap","remapping","addAfter","Item","addTransform","histOptions","oldItems","lastItem","DEPTH_OVERFLOW","cutOffEvents","cutPoint","mirrorOffset","addMaps","rebased","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","emptyItemCount","compress","HistoryState","undone","prevRanges","prevTime","prevComposition","rangesFor","mapRanges","cachedPreserveItems","cachedPreserveItemsPlugins","mustPreserveItems","historyPreserveItems","historyKey","closeHistoryKey","hist","historyTr","historyState","appended","redo","newGroup","newGroupDelay","isAdjacentTo","adjacent","undo","buildCommand","histTransaction","newHist","InputRule","stringHandler","cutOff","undoable","undoInputRule","isInputRules","toUndo","strikethrough","subscript","superscript","buildKeymap","strong","em","buildListKeymap","splitListItem","itemAttrs","grandParent","depthBefore","depthAfter","splitListItemKeepMarks","msoListRegExp","isPartOfListItem","createList","listStyleType","guessUnorderedListStyle","guessOrderedListStyle","mapListsCandidates","listTypes","trimStartText","convertToLi","COMMENT_NODE","ownerElement","sanitizeClassAttr","stylesSplit","styleValueSplit","sanitizeStyleAttr","st","supportedStyles","pasteCleanup","convertMsLists","extractListLevels","listsCandidates","rootMargin","rootIndex","lastRootLi","isLastRootLi","rootList","listData","lastMargin","levels","datalist","datalevel","listIndex","levelType","toList","stripTags","tagPattern","sanitizeNode","setAttributes","CustomNodeView","StyleView","directions","southeast","east","south","north","west","southwest","northwest","northeast","imageResizeKey","sizeType","reSize","ResizeState","activeHandle","nodePosition","setDragging","imageResizing","lockRatio","viewObj","attachResize","removeResize","pluginState","prevRect","offsetLeft","resizeState","handleMouseMove","lockWidth","lockHeight","handlesWrapper","currAttrs","changedWidth","newImage","handleMouseUp","caretColorKey","TableView","renderColgroup","tBody","colgroupStr","TableWrapperView","tableResizeKey","tableColumnResizeKey","tableRowResizeKey","otherResizing","activeResize","otherResizeHandle","getTable","domCellAround","cellIndexes","dataCell","tableSpansMap","colsCount","curColSpan","colSp","rowSp","ind","curInd","edgeCell","parentTable","setHandle","updateHandle","commonDir","horizontalDir","verticalDir","tableSize","colsWidth","rowsHeight","toPercents","tableNode","tableDom","widthChanged","curWindow","diffX","diffY","compStyles","nodeHeight","parsedStyles","calcStyle","wrapperAttrs","wrapperPos","tableResizing","prevSelected","prevNode","$o","TableRowView","GapCursor","GapBookmark","closedBefore","closedAfter","allowGapCursor","findGapCursorFrom","mustMove","$cur","dirStr","$found","clickPos","drawGapCursor","reTable","reRow","reCell","addRowBefore","pmAddRowBefore","js","addRowAfter","pmAddRowAfter","tableCell","addCol","Ms","addColumnBefore","pmAddColumnBefore","addColumnAfter","pmAddColumnAfter","deleteColumn","pmDeleteColumn","deleteCol","FileLinkDialogComponent_ng_container_15_Template","textForWithPrefix","FormatDropDownListComponent_ng_template_2_span_1_Template","dataItem_r2","FormatDropDownListComponent_ng_template_2_span_2_Template","FormatDropDownListComponent_ng_template_2_span_3_Template","FormatDropDownListComponent_ng_template_2_span_4_Template","FormatDropDownListComponent_ng_template_2_span_5_Template","FormatDropDownListComponent_ng_template_2_span_6_Template","FormatDropDownListComponent_ng_template_2_span_7_Template","FormatDropDownListComponent_ng_template_2_span_8_Template","FormatDropDownListComponent_ng_template_2_Template","EditorFormatComponent_ng_template_0_Template","EditorFormatComponent_ng_template_2_span_4_Template","EditorFormatComponent_ng_template_2_Template","openDialog","applyFormatSVGIcon","EditorComponent_kendo_toolbar_2_Template","EditorComponent_div_3_Template","EditorComponent_div_4_Template","iframeOnLoad","EditorComponent_div_7_Template","_c124","_c125","getAttributes","createDefaultAttributes","isSchemaNode","schemaNodeName","createSemanticNode","semanticNodes","marks$1","nodes$1","progress_kendo_angular_editor_marks","alignRemove","editorCommands","createLink","insertFile","unlink","foreColor","backColor","alignJustify","alignLeft","alignRight","formatAttr","formatBlockElements","getHTML","insertImage","insertOrderedList","insertUnorderedList","setHTML","setHtml","insertTable","newTable","createTable","tableRows","initialToolBarState","viewSource","disabledToolBarState","isNullOrUndefined","conditionallyExecute","EditorLocalizationService","_rtl","SourceDialogComponent","onCancelAction","onConfirmAction","editor","textarea","getSource","textFor","ImageDialogComponent","imageData","srcInputId","altTextInputId","widthInputId","heightInputId","getNodeFromSelection","normalizeDimension","safeString","srcInput","FileLinkDialogComponent","linkForm","linkData","titleText","linkMark","getMark","setLinkText","getSelectionText$1","hrefInput","ProviderService","EditorToolsService","needsCheck","EditorPasteEvent","cleanedHtml","originalHtml","commandIcons","commandSVGIcons","MY_TOKEN","EditorCommandBaseDirective","providerService","toolsService","showText","showIcon","toolbarOptions","onStateChange","pointerdownHandler","_toolBarState","EditorCommandButton","toolBarState","EditorAlignLeftButtonDirective","EditorAlignCenterButtonDirective","EditorAlignRightButtonDirective","EditorAlignJustifyButtonDirective","EditorCommandDialog","EditorInsertImageButtonDirective","EditorIndentButtonDirective","EditorOutdentButtonDirective","EditorCreateLinkButtonDirective","EditorUnlinkButtonDirective","EditorInsertOrderedListButtonDirective","EditorInsertUnorderedListButtonDirective","EditorBoldButtonDirective","EditorItalicButtonDirective","EditorUnderlineButtonDirective","MessagesDirective","ɵMessagesDirective_BaseFactory","insertTableHint","dialogApply","dialogCancel","dialogInsert","dialogUpdate","fileText","fileTitle","fileWebAddress","imageAltText","imageHeight","imageWebAddress","imageWidth","linkOpenInNewWindow","linkText","linkTitle","linkWebAddress","DropDownToolDirective","FormatDropDownListComponent","dropDownList","FormatDialogComponent","formatDropDownList","EditorFormatComponent","ToolBarToolComponent","dialogService","formatItems","itemArgs","outerWidth","dialogSettings","toolbar","dialogContent","canFocus","formatButton","handleKey","toolbarTemplate","i6$1","EMPTY_PARAGRAPH","defaultPasteCleanupSettings","removeAttributes","removeHtmlComments","removeInvalidHTML","removeMsClasses","removeMsStyles","removeCommentsIf","removeInvalidHTMLIf","getPasteCleanupAttributes","removeEntries","removeEmptyEntries","EditorComponent","iframe","valueModified","_readonly","inForm","_iframeCss","keepBuiltInCss","afterViewInit","contentAreaLoaded","trOnChange","htmlOnChange","transformPastedContent","dirtyHtml","dispatchPasteEvent","pasteCleanupSettings","transformPastedHTML","transformPastedText","changeValue","contentWindow","nextDoc","onPaste","nativeEvent","_pasteEvent","focusedNode","iframeCss","_schema","EditorErrorMessages","resizableClass","isReadonly","isIE","detectIE","trident","resizableOptions","defaultToolbarComponent","userToolBarComponent","toolbarElement","defaultToolbar","userToolBarElement","selectionText","normalizeSize","dialogName","focusChangedProgrammatically","_styleObserver","currentSchema","containerNativeElement","contentNode","iframeDoc","contentDocument","isCssPathSet","linkEl","defaultPlugins","editorView","getToolbarState","dist_handleKeyDown","tableResize","handleWidth","cellMinWidth","startWidth","curPluginState","updateColumnWidth","tableDomWidth","dragged","draggedWidth","displayColumnWidth","handleDecorations","cellsPositions","cPos","rowHeightStr","tableHeight","draggedHeight","startHeight","displayRowHeight","widgetPos","markViews","decAttrs","viewMountElement","contentAreaClasslist","shouldEmitFocus","filter$1","normalizeProperties","attributeFilter","pixelWidth","pixelHeight","isMinProp","isMaxProp","isWidthProp","originalContent","cleanContent","ToolBarComponent","i18n_16","i18n_26","i18n_28","i18n_48","i18n_50","i18n_52","i18n_54","i18n_56","i18n_58","i18n_60","i18n_62","i18n_64","i18n_66","i18n_68","i18n_70","i18n_72","i18n_74","i18n_76","i18n_78","i18n_80","i18n_82","i18n_84","i18n_86","i18n_88","i18n_90","i18n_92","i18n_94","i18n_96","i18n_98","i18n_100","i18n_102","i18n_104","i18n_106","i18n_108","i18n_110","i18n_112","i18n_114","i18n_116","i18n_118","i18n_120","i18n_122","i7$1","EditorBlockquoteDirective","EditorRedoButtonDirective","EditorUndoButtonDirective","EditorViewSourceButtonDirective","EditorStrikethroughButtonDirective","EditorInsertFileButtonDirective","EditorCleanFormattingButtonDirective","EditorSelectAllButtonDirective","ColorPickerModule","NumericTextBoxModule","ToolBarModule","TextAreaModule","FormFieldModule","LabelModule","defaultGroupHeaderTemplate","createArray","defaultItemId","updateContext","embeddedView","updateGroupHeaderContext","updateGroupFooterContext","updateFooterContext","destroyColumns","ExporterColumn","headerCellOptions","cellOptions","groupHeaderCellOptions","groupFooterCellOptions","footerCellOptions","groupFooterTemplate","groupHeaderTemplate","groupHeaderColumnTemplate","workbookOptions","sourceColumns","exporterColumns","addColumns","exporterColumn","toExporterColumns","ExcelExporter","_trimColumns","allColumns","_leafColumns","_prepareColumn","_visibleColumns","hierarchy","hasGroupHeaderColumn","collapsible","workbook","_columns","_hierarchyRows","_rows","_freezePane","_filter","_depth","_createPaddingCells","paddingCellOptions","_dataRow","_groupHeaderCells","_dataRows","_footer","dataCells","cellIdx","itemLevel","hasFooter","_hasFooterTemplate","previousItemId","previousLevel","_hierarchyFooterRows","_hierarchyFooter","parentId","_prependHeaderRows","templateData","_isColumnVisible","exportable","excel","_headerRow","firstCell","headerPaddingCellOptions","headerRows","_prepareHeaderRows","parentCell","parentRow","childRow","totalColSpan","_headerDepth","ColumnBase","ExcelExportModule","switchMapTo","innerObservable","scrollableRoot","DOCUMENT_NODE","isScrollable","getScrollableParent","DOCUMENT_FRAGMENT_NODE","DRAG_AND_DROP_DISPATCH_ACTION","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","MOUSE_MOVE","CONTEXT_MENU","TOUCH_MOVE","TOUCH_END","TOUCH_CANCEL","SCROLL","CANCEL","dispatchDragAndDrop","onIsPressedChange","onIsScrollingChange","onVelocityChange","onOffsetChange","onPageOffsetChange","onClientOffsetChange","onScrollOffsetChange","onInitialScrollOffsetChange","payload","autoScrollDirection","overrideScrollableParent","scrollableParent","isScrollEvent","pageOffset","clientOffset","ignoreMouse","Window","onPress","initialScrollOffset","autoScroll","newVelocity","autoScrollVelocity","mouseX","mouseY","AUTO_SCROLL_AREA","scrollableViewPort","onDragStart","dropElement","candidates","ration","getRatio","targetRect","intersectionArea","drops","isPointerInsideContainer","onDragLeave","onDragEnter","onDragOver","onRelease","onDrop","onDragEnd","HintComponent_ng_container_0_Template","getAction","closestBySelector","setElementStyles","allPointerDownEvents","allPointerMoveEvents","allPointerUpEvents","DragStateService","dragTarget","dropTarget","dragTargets","dropTargets","isScrolling","initialClientOffset","dragIndex","dropIndex","scrollInterval","setCallbacks","setPressed","setScrolling","vel","yIsScrollable","xIsScrollable","xInBounds","setVelocity","setClientOffset","setPageOffset","setInitialClientOffset","setScrollOffset","setInitialScrollOffset","dragTargetPresent","dropTargetPresent","drags","onInitialClientOffsetChange","HintComponent","contextData","DragTargetPressEvent","normalizedEvent","dragEvent","DragTargetDragReadyEvent","DragTargetDragStartEvent","DragTargetDragEndEvent","DragTargetDragEvent","DragTargetReleaseEvent","DropTargetEvent","isDragStartPrevented","isDragPrevented","DragTargetContainerDirective","dragDelay","onDragReady","currentDragTarget","dragTimeout","hintComponent","defaultHint","currentDragTargetElement","previousDragTargets","positionsMap","_dragTargetFilter","_dragDisabled","_dragData","_dragTargetId","dragTargetFilter","dragDisabled","initializeDragTargets","dragTargetId","dragData","clearPreviousTargets","hintElem","destroyHint","allDragTargets","queryHost","dragHandles","isHandleSelectorValid","dragHandle","hintTemplate","isTargetPresent","onPointerDown","isDragHandle","onPointerMove","onPointerUp","handlePress","emitZoneAwareEvent","getDragIndex","handleDragStart","createHint","targetIdArgs","dragTargetIndex","targetDataArgs","calculatePosition","thresholdNotReached","performDrag","handleRelease","handleDragEnd","isDroppedOverParentTarget","pointerDownSubscription","pointerMoveSubscription","pointerUpSubscription","pointerMoveStreams","pointerUpStreams","pointerDownStreams","eventProps","hintElement","createCustomHint","createDefaultHint","hintClass","dragTargetEl","dt","serviceDragTarget","setCursorStyle","getStylesPerElement","hintCoordinates","DropTargetContainerDirective","currentDropTargetElement","previousDropTargets","_dropTargetFilter","_dropDisabled","dropTargetFilter","dropDisabled","initializeDropTargets","allDropTargets","handleDragEnter","currDropTargetElem","currDropTarget","getDropIndex","handleDragLeave","handleDragOver","handleDrop","dropTargetEl","serviceDropTarget","dropTargetIndex","DragAndDropModule","HAS_TYPED_ARRAYS","BASE64","keyStr","BinaryStream","ensure","write","writeString","writeByte","readByte","readShort","writeShort","readLong","writeLong","readLong_","writeLong_","times","eof","readFixed","writeFixed","readShort_","writeShort_","readFixed_","writeFixed_","nbytes","saveExcursion","writeBase64","sortedKeys","Table","rawData","SimpleGlyph","compound","CompoundGlyph","glyphIds","idOffsets","old2new","NameEntry","platformID","platformSpecificID","languageID","nameID","POSTSCRIPT_GLYPHS","CmapEntry","codeMap","segCount","endCode","startCode","idDelta","idRangeOffset","glyphId","ngroups","endCharCode","glyphCode","FONT_MAPPINGS","serif","monospace","zapfdingbats","fontAlias","nodeInfo","kendo","ToolbarComponent_0_ng_template_0_Template","ToolbarComponent_0_Template","toolbarTemplateRef","PagerNumericButtonsComponent_option_2_Template","pageLabel","PagerNumericButtonsComponent_option_3_Template","num_r8","currentPage","PagerNumericButtonsComponent_option_4_Template","PagerNumericButtonsComponent_button_7_Template","PagerNumericButtonsComponent_button_8_Template","_r13","num_r11","PagerNumericButtonsComponent_button_9_Template","focusout","PagerComponent_div_0_Template","onInnerFocusIn","focusTrapTabIndex","PagerComponent_ng_container_1_Template","PagerComponent_ng_container_2_kendo_pager_prev_buttons_2_Template","PagerComponent_ng_container_2_kendo_pager_numeric_buttons_3_Template","buttonCount","PagerComponent_ng_container_2_kendo_pager_input_4_Template","PagerComponent_ng_container_2_kendo_pager_next_buttons_5_Template","PagerComponent_ng_container_2_kendo_pager_info_6_Template","PagerComponent_ng_container_2_kendo_pager_page_sizes_7_Template","pageSizes","PagerComponent_ng_container_2_Template","previousNext","PagerComponent_div_3_Template","PagerComponent_kendo_resize_sensor_4_Template","resizeHandler","lastTarget","GroupPanelComponent_div_0_Template","GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template","group_r6","directionChange","first_r8","last_r9","toggleMenu","index_r7","groupTitles","getDirectionIcon","getDirectionSvgIcon","isChipMenuOpen","gridId","GroupPanelComponent_kendo_chiplist_1_Template","GroupPanelComponent_div_2_Template","GroupPanelComponent_ng_template_3_Template","ColGroupComponent_col_1_Template","ColGroupComponent_col_2_Template","ColGroupComponent_col_3_Template","column_r4","isSorted","getColumnComponent","StringFilterMenuComponent_kendo_dropdownlist_1_Template","logicChange","filterMenuDropDownLabel","logicOperators","StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template","operators","secondFilter","filterService","menuTabbingService","NumericFilterMenuComponent_kendo_dropdownlist_1_Template","NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template","DateFilterMenuComponent_kendo_dropdownlist_1_Template","DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template","BooleanFilterMenuComponent_li_1_Template","item_r1","onShiftTab","columnLabel","idPrefix","radioId","FilterMenuContainerComponent_ng_container_3_Template","childService","childFilter","FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template","FilterMenuContainerComponent_ng_container_4_1_Template","filterMenuTemplateRef","FilterMenuContainerComponent_ng_container_4_Template","_c13","_c14","FilterMenuComponent_ng_template_3_Template","ColumnMenuItemComponent_div_3_Template","contentState","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template","onTab","showStick","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template","ColumnMenuPositionComponent_ng_template_1_Template","showLock","_c15","ColumnListComponent_label_1_Template","column_r2","displayTitle","ColumnListComponent_div_2_Template","applyChanges","cancelChanges","actionsClass","applyText","resetText","ColumnMenuChooserComponent_ng_template_1_Template","isLast","ColumnMenuFilterComponent_ng_template_1_Template","ColumnMenuAutoSizeColumnComponent_kendo_grid_columnmenu_item_0_Template","autoSizeColumn","ColumnMenuAutoSizeAllColumnsComponent_kendo_grid_columnmenu_item_0_Template","autoSizeAllColumns","ColumnMenuComponent_ng_template_3_Template","columnMenuTemplateRef","columnMenuTemplate","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template","_r21","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template","_r22","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template","hasLock","hasStick","expandedPosition","ColumnMenuComponent_ng_template_5_span_5_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_6_Template","_r24","expandedColumns","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_column_7_Template","_r25","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_all_columns_8_Template","_r26","ColumnMenuComponent_ng_template_5_span_9_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_10_Template","expandedFilter","ColumnMenuComponent_ng_template_5_Template","_r29","hasSort","hasPosition","hasColumnChooser","hasAutoSizeColumn","hasAutoSizeAllColumns","hasFilter","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_1_Template","ctx_r35","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template","_r39","ctx_r38","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_1_Template","ctx_r40","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_sort_0_Template","_r51","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_1_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_lock_2_Template","_r52","ctx_r44","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_stick_3_Template","_r53","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_4_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_position_5_Template","_r54","ctx_r47","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_6_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_column_7_Template","_r55","ctx_r49","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_all_columns_8_Template","_r56","ctx_r50","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_1_Template","ctx_r57","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_2_Template","_r60","ctx_r59","ctx_r58","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_Template","ColumnMenuComponent_ng_template_7_Template","_r62","ctx_r61","showGeneralTab","_c18","FilterCellOperatorsComponent_kendo_dropdownlist_0_Template","dropdownKeydown","filterSVGIcon","FilterCellOperatorsComponent_button_1_Template","clearClick","clearKeydown","clearText","FilterCellComponent_ng_container_0_ng_container_2_Template","FilterCellComponent_ng_container_0_ng_container_3_1_ng_template_0_Template","FilterCellComponent_ng_container_0_ng_container_3_1_Template","filterCellTemplateRef","FilterCellComponent_ng_container_0_ng_container_3_Template","FilterCellComponent_ng_container_0_Template","FilterRowComponent_td_0_Template","FilterRowComponent_td_1_Template","FilterRowComponent_td_2_Template","columnIndex_r5","sticky","addStickyStyles","filterClass","logicalRowIndex","getLogicalColIndex","filterLabel","_c23","HeaderComponent_tr_1_th_1_Template","HeaderComponent_tr_1_th_2_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_template_3_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_container_4_Template","column_r8","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_filter_menu_5_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_column_menu_6_Template","columnMenuSettings","sortable","_c24","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_Template","leafIndex","showFilterMenu","showColumnMenu","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_template_4_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_container_5_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_icon_wrapper_7_Template","sortDescriptor","sortableLabel","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_span_8_Template","sortOrder","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_filter_menu_9_Template","ctx_r30","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_column_menu_10_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_Template","onSortClick","showSortNumbering","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_3_Template","selectAllCheckboxId","selectAllCheckboxLabel","HeaderComponent_tr_1_ng_container_3_th_1_span_4_Template","_c25","lastColumn","HeaderComponent_tr_1_ng_container_3_th_1_Template","_r44","onHeaderKeydown","columnIndex_r9","last_r10","levelIndex_r3","sortState","isFirstOnRow","logicalColumnIndex","totalColumnLevels","headerClass","headerStyle","isNavigable","isSortable","isCheckboxColumn","showSelectAll","HeaderComponent_tr_1_ng_container_3_th_2_ng_template_3_Template","HeaderComponent_tr_1_ng_container_3_th_2_ng_container_4_Template","HeaderComponent_tr_1_ng_container_3_th_2_kendo_grid_column_menu_5_Template","HeaderComponent_tr_1_ng_container_3_th_2_span_6_Template","HeaderComponent_tr_1_ng_container_3_th_2_Template","ctx_r54","lockedColumnsCount","HeaderComponent_tr_1_ng_container_3_Template","isColumnGroupComponent","HeaderComponent_tr_1_Template","unlockedColumnsCount","totalColumns","detailTemplate","columnsForLevel","trackByIndex","HeaderComponent_tr_2_Template","leafColumns","CellComponent_ng_container_1_ng_container_1_1_ng_template_0_Template","CellComponent_ng_container_1_ng_container_1_1_Template","CellComponent_ng_container_1_ng_container_1_ng_container_2_ng_container_1_Template","childColumn_r12","CellComponent_ng_container_1_ng_container_1_ng_container_2_Template","childColumns","CellComponent_ng_container_1_ng_container_1_ng_container_3_Template","CellComponent_ng_container_1_ng_container_1_ng_container_4_Template","selectionCheckboxId","selectionCheckboxLabel","CellComponent_ng_container_1_ng_container_1_ng_container_5_Template","CellComponent_ng_container_1_ng_container_1_Template","isSpanColumn","isBoundColumn","isNew","isRowReorderColumn","CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template","CellComponent_ng_container_1_ng_template_2_0_Template","loadingTemplate","CellComponent_ng_container_1_ng_template_2_div_1_Template","CellComponent_ng_container_1_ng_template_2_Template","CellComponent_ng_container_1_Template","showLoading","CellComponent_ng_container_2_1_ng_template_0_Template","CellComponent_ng_container_2_1_Template","editTemplateRef","editTemplateContext","CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template","formGroup","CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template","CellComponent_ng_container_2_ng_container_2_input_4_Template","CellComponent_ng_container_2_ng_container_2_input_5_Template","CellComponent_ng_container_2_ng_container_2_Template","CellComponent_ng_container_2_Template","GroupHeaderComponent_ng_container_0_td_1_Template","GroupHeaderComponent_ng_container_0_Template","prefixGroupCell","GroupHeaderComponent_td_1_ng_container_2_ng_container_3_Template","groupTitle","formatForGroup","GroupHeaderComponent_td_1_ng_container_2_ng_template_4_Template","_c30","GroupHeaderComponent_td_1_ng_container_2_Template","toggleGroup","groupButtonTitle","arrowSVGIcon","GroupHeaderComponent_td_1_Template","skipGroupDecoration","logicalColSpan","groupSpan","ariaRole","GroupHeaderComponent_ng_container_2_td_1_1_ng_template_0_Template","_c31","GroupHeaderComponent_ng_container_2_td_1_1_Template","column_r11","groupHeaderColumnTemplateRef","GroupHeaderComponent_ng_container_2_td_1_Template","index_r12","GroupHeaderComponent_ng_container_2_Template","groupHeaderColumns","_c32","TableBodyComponent_ng_container_0_ng_container_2_td_1_Template","TableBodyComponent_ng_container_0_ng_container_2_Template","TableBodyComponent_ng_container_0_td_3_Template","addRowLogicalIndex","TableBodyComponent_ng_container_0_td_4_Template","column_r9","columnIndex_r10","newDataItem","addStickyColumnStyles","logicalColIndex","tableCellsRole","TableBodyComponent_ng_container_0_Template","trackByColumns","TableBodyComponent_tr_1_2_ng_template_0_Template","TableBodyComponent_tr_1_2_Template","noRecordsTemplate","TableBodyComponent_tr_1_ng_container_3_Template","noRecordsText","TableBodyComponent_tr_1_Template","TableBodyComponent_ng_container_2_tr_1_Template","item_r14","rowIndex_r15","totalColumnsCount","groupHeaderSlaveCellsCount","TableBodyComponent_ng_container_2_tr_2_ng_container_1_td_1_Template","TableBodyComponent_ng_container_2_tr_2_ng_container_1_Template","TableBodyComponent_ng_container_2_tr_2_td_2_a_1_Template","toggleRow","detailButtonTitle","detailButtonIconName","detailButtonSvgIcon","TableBodyComponent_ng_container_2_tr_2_td_2_Template","showIf","TableBodyComponent_ng_container_2_tr_2_td_3_Template","column_r32","columnIndex_r33","isEditingCell","cellSelectionService","isCellSelected","isVirtual","cellLoadingTemplate","isAriaSelected","TableBodyComponent_ng_container_2_tr_2_Template","isOdd","rowSticky","isEditingRow","isRowSelected","rowClass","TableBodyComponent_ng_container_2_tr_3_td_1_Template","TableBodyComponent_ng_container_2_tr_3_ng_template_4_Template","TableBodyComponent_ng_container_2_tr_3_Template","ctx_r39","allColumnsSpan","columnsSpan","TableBodyComponent_ng_container_2_tr_4_ng_container_1_td_1_Template","TableBodyComponent_ng_container_2_tr_4_ng_container_1_Template","TableBodyComponent_ng_container_2_tr_4_td_2_Template","TableBodyComponent_ng_container_2_tr_4_td_3_ng_template_1_Template","TableBodyComponent_ng_container_2_tr_4_td_3_Template","column_r46","tmp_3_0","groupFooterTemplateRef","TableBodyComponent_ng_container_2_tr_4_Template","footerColumns","TableBodyComponent_ng_container_2_Template","isParentGroupExpanded","showGroupHeader","isDataItem","isDataItemInExpandedGroup","isFooter","isFooterItemInExpandedGroup","showGroupFooters","hideFooter","TableBodyComponent_kendo_resize_sensor_3_Template","ctx_r51","_c41","DOMMouseScroll","lockedWidth","lockedKeydown","lockedScroll","lockedMousewheel","lockedLeafColumns","ListComponent_kendo_resize_sensor_8_Template","ListComponent_kendo_resize_sensor_9_Template","ListComponent_div_12_Template","_c42","_c43","FooterComponent_td_2_Template","FooterComponent_td_3_Template","FooterComponent_td_4_ng_template_1_Template","FooterComponent_td_4_Template","footerClass","footerStyle","_c44","LoadingComponent_ng_container_0_Template","loadingText","LoadingComponent_1_ng_template_0_Template","LoadingComponent_1_Template","StatusBarComponent_0_ng_template_0_Template","_c45","StatusBarComponent_0_Template","statusBarTemplate","_c46","_c47","GridComponent_kendo_grid_toolbar_2_Template","toolbarEnabled","ariaRootId","GridComponent_kendo_pager_3_Template","notifyPageChange","pagerEnabled","pagerTemplate","pageable","GridComponent_kendo_grid_group_panel_4_Template","groupChange","groupableEmptyText","GridComponent_ng_container_7_div_1_div_1_Template","lockedColumns","showGroupPanel","reorderable","columnMenuOptions","columnsContainer","tableEnabled","GridComponent_ng_container_7_div_1_div_7_Template","unlockedWidth","GridComponent_ng_container_7_div_1_Template","headerPadding","nonLockedWidth","virtualColumns","headerLeafColumns","headerColumns","GridComponent_ng_container_7_div_3_div_1_Template","ariaRowCount","GridComponent_ng_container_7_div_3_Template","nonLockedLeafColumns","_c216","GridComponent_ng_container_7_Template","handleReorderEvents","notifyScrollBottom","contentScroll","hideHeader","rowReorderable","getDefaultSelectors","gridData","groupable","marqueeSelection","GridComponent_ng_container_8_thead_3_Template","visibleColumns","GridComponent_ng_container_8_tfoot_5_Template","GridComponent_ng_container_8_Template","GridComponent_div_9_Template","GridComponent_kendo_grid_status_bar_10_Template","GridComponent_kendo_pager_11_Template","GridComponent_kendo_grid_toolbar_12_Template","GridComponent_ng_template_13_Template","getHintSettings","hintText","GridComponent_div_15_Template","_c217","ColumnChooserComponent_ng_template_2_Template","autoSync","allowHideAll","_c218","EditCommandDirective_kendo_icon_wrapper_0_Template","EditCommandDirective_span_1_Template","EditCommandDirective_span_2_Template","_c219","CancelCommandDirective_kendo_icon_wrapper_0_Template","CancelCommandDirective_span_1_Template","CancelCommandDirective_span_2_Template","_c220","SaveCommandDirective_kendo_icon_wrapper_0_Template","SaveCommandDirective_span_1_Template","SaveCommandDirective_span_2_Template","_c221","RemoveCommandDirective_kendo_icon_wrapper_0_Template","RemoveCommandDirective_span_1_Template","RemoveCommandDirective_span_2_Template","_c222","AddCommandDirective_kendo_icon_wrapper_0_Template","AddCommandDirective_span_1_Template","AddCommandDirective_span_2_Template","EMPTY_REGEX","isUniversal","extractFormat","conditions","getIterator$1","msCancelRequestAnimationFrame","recursiveFlatMap","isGroupResult","flatMap","DomEventsService","cellMousedown","cellMouseup","focusIn","focusOut","windowBlur","LocalDataChangesService","FOCUS_ROOT_ACTIVE","FocusRoot","registerGroup","unregisterGroup","NODE_NAME_PREDICATES","matchesClasses","matchesNodeName","contains$2","isInputTag","navigableRegex","DefaultFocusableElement","findFocusable","isNavigableInput","CELL_CONTEXT","EMPTY_CELL_CONTEXT","GridToolbarNavigationService","navigableElements","defaultFocusableSelector","updateFocus","ContextService","topToolbarNavigation","bottomToolbarNavigation","focusGroup","registerElement","unregisterElement","GridFocusableElement","focusCell","NavigationCursor","activeRow","activeCol","virtualCol","virtualRow","_metadata","newActiveCol","hasDetailTemplate","findRow","dataRowIndex","isActiveRange","prevColIndex","prevRowIndex","cellRange","assume","announce","activateVirtualCell","rowRange","offsetRow","moveLeft","offsetCol","moveRight","lastCellIndex","leafColumnsToRender","groupItem","nextColIndex","nextRowIndex","maxLogicalRowIndex","ItemMap","setItem","getItem","firstRow","registerCell","modelCell","uid","detailExpandCell","unregisterCell","registerRow","modelRow","updateRow","unregisterRow","rowCell","CellCloseEvent","isNewRow","EditService","editedIndices","keepEditCell","closingCell","changedSource","editRow","onChanged","newItemGroup","editCell","editTemplate","preventCellClose","closeCell","isEditing","hasNewItem","isNotEqual","cancelCell","shouldCloseCell","keepCellTimeout","findByIndex","columnContext","isEdited","hasEdited","isEditedColumn","beginEdit","beginAdd","endEdit","getGroupRowArgs","parentGroup","GroupsService","rowState","groupArgs","userCallback","isInExpandedGroup","expandChildren","isChildIndex","sameIndex","lastSeparatorIndex","sameSubGroupIndex","PagerContextService","changePageSize","nextPage","DetailCollapseEvent","DetailExpandEvent","DetailsService","collapseRow","expandRow","eventArg","ScrollRequestService","requests","adjustIndex","isInSameGrid","gridElement","matchHeaderCell","matchDataCell","matchFooterCell","matchCell","targetCell","gridCell","isNavigationKey","isArrowKey","isInput","NavigationViewport","containsRow","pagerContextService","scrollRequestService","groupsService","detailsService","focusRoot","editService","focusableParent","cellKeydown","activeRowIndex","alive","pagerIsNavigable","tableIsNavigable","toolbarIsNavigable","activeCell","activeDataRow","navigableOptions","setActiveSections","onStableSubscriber","onCursorChanges","navigateTo","onFocusOut","onWindowBlur","leaveCell","onTabout","deactivateElements","pendingRowIndex","virtualCell","registerCellOnCurrentRow","needsViewport","isCellFocusable","isCellFocused","oldMode","focusInCell","focusInActiveRowContent","activateRow","alreadyActive","tryFocus","activateElements","enterCell","setViewport","behind","setColumnViewport","columnViewport","activeColumnIndex","focusCellByElement","focusNextCell","focusAdjacentCell","focusPrevCell","autoFocusCell","fwd","success","moveCursorFwd","moveCursorBwd","colIdx","onCursorKeydown","onCellKeydown","hasPager","firstColumnIndex","lastRowIndex","isPrintableCharacter","onContentKeydown","isTextInput","IdService","cellId","ColumnMenuTemplateDirective","ColumnMenuErrorMessages","ColumnConfigurationErrorMessages","columnType","nestedInside","nestedColumnNameType","parentColumnType","GridConfigurationErrorMessages","functionType","incompatibleFeatures","feat1Name","feat2Name","expandCollapseMethods","expandMethodName","collapseMethodName","directiveName","callbackName","requiredModule","exportedType","moduleName","componentSelector","idService","matchesMedia","orderIndex","isColumnGroup","minResizableWidth","_locked","lockable","stickable","columnMenu","includeInChooser","headerTemplates","columnMenuTemplates","isColumnContainer","_leafIndex","maxResizableWidth","autoSize","filterStyle","EditTemplateDirective","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","GroupFooterTemplateDirective","FilterCellTemplateDirective","FilterMenuTemplateDirective","isColumnComponent","ColumnComponent","groupHeaderTemplateRef","filterCellTemplate","filterMenuTemplate","isSpanColumnComponent","SpanColumnComponent","_editable","childrenArray","expandColumns","expandColumnsWithSpan","columnsToRender","sumProp","sumColumnWidths","validField","someLeafColumn","sortColumns","isInSpanColumn$1","ColumnGroupComponent","ColumnsContainer","nonLockedColumns","totalLevels","lockedColumnsToRender","nonLockedColumnsToRender","hasGroupFooter","currentLevels","containerLeafColumns","containerColumns","toRenderContainer","leaf","lists","NO_STICKY","ColumnInfoService","visibilityChange","lockedChange","stickyChange","columnRangeChange","hiddenColumns","leafNamedColumns","filterSort","unlockedRootCount","rootColumns","stickyColumnsStyles","stickyColumns","changeVisibility","changeLocked","changeStuck","CellSelectionAggregateService","dataChanges","columnInfoService","selectedItems","groupedAggregates","booleans","isTrue","isFalse","earliest","latest","isAggregateIncluded","cellAggregates","grid","selectionDirective","selectedKeys","selectionArgs","handleSelectedItems","nullifyAggregates","handleAggregateChanges","selectedItemsLength","cellValue","groupAggregates","itemKey","columnKey","calculateAggregates","isTrueCount","bool","isFalseCount","deselectedItems","aggregateService","localDataChangesService","ctxService","selectAllChecked","lastSelectionData","addSubscriptions","enableMarquee","checkboxOnly","selectableSettings","dragAndMultiple","lastSelectionStartIndex","rangeSelectionStartRow","getIterator","_selectAllState","rowArgs","rowSelected","addAllTo","selectedRows","deselectedRows","rangeStartRow","rangeEndRow","toggleByIndex","itemToToggle","removedItem","updateAll","selectRange","selectAllState","removeSubscriptions","targetArgs","mouseDownEventArgs","cellClickSubscription","mousedownSubscription","dataChangedSubscription","CellSelectionService","mouseUpEvent","dragSelectDeselect","lastSelectionItem","lastSelectionItemRowIndex","lastSelectionItemColIndex","selectedCellArgs","cellSelected","startRowIndex","startColIndex","endRowIndex","endColIndex","selectedCells","deselectedCells","rangeStartCell","rangeEndCell","selectedItem","cellsToRemove","contender","selectionStartRow","selectionStartCol","selectionEndRow","selectionEndCol","isInSelectionRect","GridMarqueeDirective","cellSelection","selectionStarted","moveMarquee","isInvalidTarget","pressArgs","pressTarget","dragEndSubscription","endSelection","initMarquee","marqueeElement","marqueeQuadrant","getMarqueeQuadrant","createElement$1","leftHalf","rightHalf","topHalf","bottomHalf","ZoneAwareEventEmitter","generatorOrNext","schedulerFn","DetailTemplateDirective","_condition","canCreateElement","cachedPixelRatio","cachedScrollbarWidth","cachedRtlScrollLeft","BrowserSupportService","rtlScrollLeft","isGroupItem","flattenGroups","footers","dataIndex","parentGroupIndex","skipHeader","isVirtualGroupItem","GroupIterator","ItemIterator","ArrayIterator","Iterator","resultMap","_innerIterator","outputFooters","currentGroupIndex","_iterator","nextGroupItem","footerItem","innerIterator","nextDataItem","DataResultIterator","groupFooters","isGridDataResult","DataCollection","PairSet","keyXField","keyYField","keysX","totalKeysCount","keyX","keyY","pairs","keysY","rangeSelectionStartColumnIndex","selectedKeysChange","rowSelectionState","cellSelectionState","isCellSelectionMode","lastSelectionState","getItemKey","getSelectionItem","selectionChangeSubscription","selectionKey","stateToArray","itemIdentifiers","notifyChange","forEachColumn","forEachLevel","filterHierarchy","ColumnList","GroupInfoService","_columnList","registerColumnsContainer","columnForGroup","isGroupable","ChangeNotificationService","NoRecordsTemplateDirective","syncRowsHeight","table1","table2","arr1","arr2","offsetHeight2","getHeights","setHeight$1","MenuTabbingService","isColumnMenu","isTabbedInterface","FilterService","PagerTemplateDirective","PDFService","savePDF","drawPDF","exportClick","dataChanged","PDFExportEvent","SuspendService","browserMatchMedia","ResponsiveService","xs","sm","md","lg","bootstrapToMedia","ExcelService","saveToExcel","ToolbarTemplateDirective","headerSubscription","bodySubscription","registerEmitter","sourceType","unregister","resizeSubscription","resizes","resizeArgs","ColumnResizingService","tables","trackColumns","resizeColumns","deltaPercent","resizeTable","resizedColumn","resizedColumns","registerTable","tableMetadata","unregisterTable","measureColumns","autoFitBatch","autoFitStart","zip$1","hasFilterRow","PopupCloseEvent","SinglePopupService","onClose","pointerEventsSub","attachClose","popupEl","attachMouseListeners","detachClose","removeClick","skipElement","contains$1","canClosePopup","getDocument$1","getWindow$1","isTargetBefore","DragAndDropService","notifyDrag","mouseEvent","targetFor","notifyDrop","updateClass","updateLock","DragHintService","santizer","iconsService","decorate","safeTitle","innerHtml","isSVG","svgIconsMarkup","fontIconsMarkup","removeLock","toggleLock","iconSettings","i1$3","DropCueService","ColumnReorderService","reorder","ColumnReorderEvent","NavigationMetadata","dataRows","SortService","ColumnVisibilityChangeEvent","ColumnLockedChangeEvent","defaultTrackBy","ColumnStickyChangeEvent","CellLoadingTemplateDirective","LoadingTemplateDirective","SizingOptionsService","hintIcons","forbidden","hintSVGIcons","hintStyles","hintClasses","dropIndicatorStyles","dropIndicatorClasses","defaultSelectors","RowReorderService","lastDropPosition","rowReorder","createDropIndicator","decorateHint","positionDropIndicator","dragEnter","dragLeave","destroyDropIndicator","rowReorderArgs","reorderRows","draggedRows","dropTargetRow","draggedDataItem","dropTargetDataItem","draggedItemIndex","idxToAdd","calculateIndexToAdd","hintIcon","hintSVGIcon","getDefaultHintText","columnFieldsArray","getDragRowPerElement","columnValue","dragRow","dropRow","dropPosition","dropIndicator","decorateDropIndicator","getDropPosition","updateDropIndicatorPosition","isDifferentParent","itemViewPortCoords","itemDivisionHeight","itemTop","currentDropPosition","isNextSibling","isPreviousSibling","previousElementSibling","shouldHideDropIndicator","destinationItemOffset","getOffset","indicatorOffsetTop","StatusBarTemplateDirective","ClipboardService","itemToString","createClipboardData","gridItems","fieldCols","dataStrings","colFields","wholeRow","targetColField","targetRowIndex","operationType","copyHeaders","addHeaders","tabular","groupSelection","colIdentifier","selectionKeys","selectedFieldCols","selectedColFields","itemString","existingItem","rowIdentifier","gr","colField","copiedData","getGridData","targetType","activeCellIndex","isCellSelection","visibleCols","rowString","targetColFieldIndex","affectedFields","areEqual","initialData","ToolbarComponent","sizeSmallClass","sizeMediumClass","closestFocusable","isFocusable$1","arrowLeftListener","arrowRightListener","homeKeyListener","endKeyListener","normalize$1","normalizeSettings","responsive","FocusGroup","focusableChildren","toggleState","PagerElementComponent","pagerContext","totalPages","onChanges","prevArrowIcons","prevArrowSVGIcons","nextArrowIcons","nextArrowSVGIcons","PagerInfoComponent","maxItems","currentPageText","PagerDropDownListDirective","i1$4","PagerPageSizesComponent","_pageSizes","normalizedItems","showInitialPageSize","pageSizeChange","PagerNumericButtonsComponent","reminder","pageText","onSelectChange","valueAsNumber","selectElement","numbersElement","PagerPrevButtonsComponent","PagerInputDirective","numericInput","PagerInputComponent","incomingValue","hasPages","NumericTextBoxComponent","PagerNextButtonsComponent","PagerComponent","gridPagerClass","_templateContext","numericButtons","pagerInfo","pagerPageSizes","pagerAriaLabel","pagerLabel","localizationMsg","onFocusIn","onEscape","focusFirstElement","navigateToPreviousPage","shouldTriggerPageChange","navigateToNextPage","navigateToFirstPage","navigateToLastPage","updateCellContext","changesInTemplate","clearResponsiveStyling","focusLastElement","findLastFocusableChild","findLastElement","DropTargetDirective","hasClass","isDeleteButton","isSortIcon","skipButtons","elementUnderCursor","DraggableColumnDirective","cue","updateTouchAction","preventOnDblClick$1","upEvent","cursorElement","hideThenShow","cont","withoutField","alreadyGrouped","indicatorRules","overSameTarget","overLastTarget","isLastGroup","GroupPanelComponent","groupInfoService","relatedItemType","activateMenuItem","destroyMenu","handleMenuClick","menuItemEl","activeMenuItem","groupHeaderClass","emptyText","attachTargets","currentTitles","targetSubscription","popupAnchor","defaultTemplate","menuItems","canDrop","groupService","isNotGroupable","columnRules","enterStream","leaveStream","dropStream","focusAnchor","relatedItem","groupChip","groupChipIndex","isPrev","ColGroupComponent","allowUnsort","showIndexes","initialDirection","multiSortKey","columnChooser","autoFitColumn","autoFitColumns","operatorTexts","filterEqOperator","filterNotEqOperator","filterGteOperator","filterGtOperator","filterLteOperator","filterLtOperator","filterIsNullOperator","filterIsNotNullOperator","filterIsEmptyOperator","filterIsNotEmptyOperator","filterContainsOperator","filterNotContainsOperator","filterStartsWithOperator","filterEndsWithOperator","filterAfterOrEqualOperator","filterAfterOperator","filterBeforeOrEqualOperator","filterBeforeOperator","FilterOperatorBase","refreshText","setFilter","defaultOperator","insertDefaultFilter","rootFilter","trimFilterByField","filtersByField","removeFilter","localizeOperators","BaseFilterCellComponent","operatorList","_operators","defaultOperators","operationListSubscription","filterByField","currentFilter","updateFilter","applyFilter","cloneFilters","copyObject","cloneFilter","FilterHostDirective","initComponent","stringOperators$1","StringFilterComponent","currentOperator","localizationChange","filterDelay","changeRequests","unsubscribeStart","unsubscribeEnd","addAriaAttributes","subscribeChanges","isChanged$1","unsubscribeChanges","changeRequestsSubscription","ariaValue","kendoInput","focusableElement","EMPTY_VALUE_OPERATORS","isEmptyValueOperator","FilterInputWrapperComponent","_operator","emptyValueOperator","filterInputDisabled","applyNoValueFilter","_defaultOperator","changeSubscription","onClear","FilterMenuDropDownListDirective","wrapperElement","FilterMenuInputWrapperComponent","shouldFocusFirstFocusable","isFirstDropDown","firstOperatorDropDown","operatorChange","_currentFilter","StringFilterMenuInputComponent","i4$2","StringFilterMenuComponent","firstFilter","numericOperators","NumericFilterComponent","columnFormat","NumericFilterMenuInputComponent","NumericFilterMenuComponent","dateOperators","DateFilterComponent","DateFilterMenuInputComponent","picker","i4$3","DateFilterMenuComponent","BooleanFilterComponent","BooleanFilterRadioButtonDirective","radioButtonEl","BooleanFilterMenuComponent","radioButtons","radioValue","FilterMenuHostDirective","boolean","filterMenuComponentFactory","validFilters","isNoValueOperator","parentLogicOfDefault","FilterMenuContainerComponent","parentService","_childFilter","resetButton","filterButton","trimFilters","id$3","FilterMenuComponent","ariaRoot","popupAriaElement","getId$1","ColumnMenuService","closeMenu","ColumnMenuItemBase","ColumnMenuItemContentTemplateDirective","ColumnMenuItemComponent","updateContentState","ColumnMenuLockComponent","toggleColumn","toggleHierarchy","allChanged","ColumnMenuStickComponent","ColumnMenuPositionComponent","_isLast","getLastFocusableItem","isLastItem","ColumnListKeyboardNavigation","toggleCheckedState","ColumnMenuChooserItemCheckedDirective","checkedChangeSub","kendoColumnMenuChooserItemChecked","ColumnListComponent","listNavigationService","columnChange","unlockedCount","checkbox","updateColumnState","closestItem","updateDisabled","hasFiltered","hasVisibleLocked","hasUnlockedFiltered","forEachCheckBox","getElementsByClassName","hasLocked","checkedItems","checkedUnlocked","filteredColumns","attributeCommand","ColumnMenuChooserComponent","ColumnMenuFilterComponent","ColumnMenuItemDirective","_isFirst","columnMenuItems","menuItemComponent","getLastColumnMenuItem","firstItemKeydownSub","lastFocusableElement","lastItemKeydownSub","isExpandableItem","columnMenuContainer","templateMenuItems","ColumnMenuContainerComponent","ColumnMenuSortComponent","sortService","sortedAsc","sortedDesc","toggleSort","ColumnMenuAutoSizeColumnComponent","ColumnMenuAutoSizeAllColumnsComponent","id$2","ColumnMenuComponent","closeSubscription","stick","setColumnPosition","getExpandedState","getId","columnMenuTitle","tabStrip","selectTab","menuItemSettings","TabStripComponent","tabbedInterfaceTemplate","_r63","i17","FilterCellOperatorsComponent","sizing","showOperators","dropdown","EMPTY_FILTER_OPERATORS","FilterCellWrapperComponent","overrideBaseClasses","StringFilterCellComponent","sizingService","NumericFilterCellComponent","BooleanFilterCellComponent","DateFilterCellComponent","FilterCellHostDirective","filterComponentFactory","FilterCellComponent","hostRole","id$1","LogicalCellDirective","logicalSlaveCell","nextId$1","ariaColIndex","navigationChange","onNavigationChange","registerNoChanges","rowIndexChange","registerChanges","updateElement","microtask","headerLabelText","FilterRowComponent","filterRowClass","LogicalRowDirective","logicalSlaveRow","logicalSlaveCellsCount","tableRowClass","ariaRowIndex","ariaOwns","logicalCellsCount","columnsArray","removeView","SelectAllCheckboxDirective","selectAllChange","stateSet","destroyClick","enabledAndMultiple","shouldEmitSelectAll","stateToBool","headerWidth","allLeafColumns","isInSpanColumn","ColumnHandleDirective","leftStyle","rightStyle","allLeafs","currentLeafs","columnInfo","isParentSpan","isLastInSpan","isParentSpanColumn","headerIndex","implicitWidth","initState","shouldUpdate","initColumnWidth","preventOnDblClick","toPercentage","whole","resizeStartWidth","sizeToFit","oldWidth","fromPercentage","tableDelta","getTableDelta","updateWidth","isAboveMin","isBelowMax","mergeObjects","inSameParent","ofColumnType","notInSpanColumn","notSameElement","lastNonLocked","isRootLevel","modifierKeys","reorderService","sortedFields","sortColumn","matchModifier","toggledColumn","filterMenu","filterMenus","fm","columnMenus","cm","isCtrlOrMeta","isReorderable","columnsCount","reorderDirectionOffset","normalizedNewIndex","gridInstance","reorderColumn","columnReorder","toggleDirection","sortChange","isTailing","hasFilterMenu","showFilterRow","canReorder","stickyStyles","columnLevels","targetLocked","draggableLocked","trackMove","calculateBefore","changeContainer","normalizeTarget","firstSpan","levelColumns","targetOffset","ScrollBottomAction","firstItemOffset","nextTake","NON_DATA_CELL_CLASSES","CommandColumnComponent","SelectionCheckboxDirective","destroyKeyDown","setCheckedState","FieldAccessorPipe","i1$5","CellComponent","_editTemplateContext","commandCellClass","isCommand","dragHandleCellClass","dragRowHandleLabel","_rowIndex","isColumnEditable","editContext","isFieldEditable","updateTemplateContext","GroupHeaderComponent","hasDetails","groupItemClass","tableGroupRowClass","groupCount","detailOffset","columnCount","TableBodyComponent","changeNotification","cellKeydownSubscription","cellKeydownHandler","trackByWrapper","allColumnsCount","contentColumnsCount","headerFooterColumnsCount","viewItem","messageKey","applyStickyRowsStyling","absoluteRowIndex","addRowOffset","filterRowOffset","mouseupSubscription","clickSubscription","contextmenuSubscription","touchstartSubscription","touchendSubscription","touchSubscription","originalNoRecordText","l10nSubscription","clickTimeout","cellClickArgs","emitCellClick","isEditedRow","columnCellIndex","stickyRows","nodesToArray","accumulatedHeight","stickyRowsOffsets","columnsToResize","resizableColumns","TableDirective","firstResize","bufferCount","bufferSize","startBufferEvery","toEmit","autoFitSubscription","autoFitObservable","originalWidth","deltas","measureColumn","headerRow","GridTableDirective","ResizableContainerDirective","_lockedWidth","kendoGridResizableContainer","elementAt","elementIdx","rowAt","maybeNativeElement","suspendService","supportService","columnResizingService","pdfService","scrollBottom","columnsStartIdx","resizeSensors","containerScrollTop","detailExpand","exporting","viewportColumns","groupCellsWidth","handleRowSync","handleRowNavigationLocked","updateViewportColumns","changesInSkip","handleInitialScrollToSkip","rebind","skipScroll","viewportWidthChange","resetNavigationViewport","attachContainerScroll","initResizeService","hasLockedContainer","lockedContainer","lockedTable","cleanupScroller","createScroller","lockedScrollTop","preventLockedScroll","scrollDelta","onContainerScroll","handleColumnScroll","rowViewport","startRow","endRow","endColumn","scrollerSubscription","syncContainerHeight","sensor","scrollToVirtualRow","adjustIndexForDetailTemplate","normalizeScrollLeft","cellAt","elementScrollLeft","dataItemIndex","idField","dataAttribute","lastItemOffset","viewportStart","viewportEnd","lastItemHeight","setHeight","calculateViewportColumns","currentColumns","viewportColumnsWidth","offsetColumn","columnsEndIdx","updateColumnViewport","columnUpdateFrame","lockedCount","normalizedScrollLeft","rtlScrollPosition","stickyRowHeight","LoadingComponent","StatusBarComponent","isStatusBarTemplate","GridMessages","ɵGridMessages_BaseFactory","groupPanelEmpty","noRecords","pagerFirstPage","pagerLastPage","pagerPreviousPage","pagerNextPage","pagerPage","pagerItemsPerPage","pagerOf","pagerItems","pagerPageNumberInputTitle","selectPage","filterMenuTitle","filterMenuOperatorsDropDownLabel","filterMenuLogicDropDownLabel","filterCellOperatorLabel","booleanFilterCellLabel","filterIsTrue","filterIsFalse","filterBooleanAll","filterFilterButton","filterClearButton","filterAndLogic","filterOrLogic","gridLabel","unlock","unstick","sortAscending","sortDescending","autosizeThisColumn","autosizeAllColumns","sortedAscending","sortedDescending","sortedDefault","columnsApply","columnsReset","detailCollapse","filterDateToday","filterDateToggle","filterNumericDecrement","filterNumericIncrement","groupCollapse","groupExpand","topToolbarLabel","bottomToolbarLabel","groupPanelLabel","columnMenuFilterTabTitle","columnMenuGeneralTabTitle","columnMenuColumnsTabTitle","groupChipMenuPrevious","groupChipMenuNext","isInEditedCell","GridComponent","responsiveService","excelService","columnReorderService","rowReorderService","flatData","dataStateChange","edit","cellClose","pdfExport","excelExport","columnResize","columnVisibilityChange","columnLockedChange","columnStickyChange","columnList","hasGroupFooters","shouldGenerateColumns","notifyTimeout","_sort","_group","_skip","cachedWindowWidth","_rowSelected","_cellSelected","_rowReorderable","_rowClass","localizationSubscription","columnVisibilityChangeSubscription","columnLockedChangeSubscription","columnStickyChangeSubscription","groupExpandCollapseSubscription","handleExpandCollapseGroupsService","expandEmitter","collapseEmitter","detailsServiceSubscription","handleExpandCollapseDetailsService","filterSubscription","sortSubscription","attachStateChangesEmitter","attachEditHandlers","attachDomEventHandlers","pdfSubscription","emitPDFExportEvent","excelSubscription","saveAsExcel","columnsContainerChange","handleColumnResize","columnReorderSubscription","columnRangeChangeSubscription","onColumnRangeChange","notifyReorderContainers","showStatusBar","showTopToolbar","showBottomToolbar","showTopPager","showBottomPager","rowReorderSubscription","navigatable","_rowSticky","defaultSelection","lockedClasses","virtualClasses","noScrollbarClass","_customDetailTemplate","detailTemplateChildren","_cellLoadingTemplate","cellLoadingTemplateChildren","_loadingTemplate","loadingTemplateChildren","_statusBarTemplate","statusBarTemplateChildren","_customNoRecordsTemplate","noRecordsTemplateChildren","customNoRecordsTemplate","_customPagerTemplate","pagerTemplateChildren","customPagerTemplate","_customToolbarTemplate","toolbarTemplateChildren","customToolbarTemplate","ariaColCount","leafViewportColumns","toggleDetailRowLegacy","expandGroup","toggleGroupRowLegacy","collapseGroup","resetGroupsState","onDataChange","autoGenerateColumns","initSelectionService","updateNavigationMetadata","syncHeaderHeight","attachScrollSync","shouldResetSelection","navigationMetadata","applyAutoSize","columnsChangeSubscription","selectionSubscription","stateChangeSubscription","editServiceSubscription","columnsContainerChangeSubscription","detachElementEventHandlers","footerChangeSubscription","columnResizingSubscription","focusElementSubscription","skipFocus","focusEditElement","closeRow","createControl","columnInstance","saveAsPDF","containerSelector","setEditFocus","assertNavigable","destIndex","allColumnsForLevel","isDetailExpanded","isGroupExpanded","evType","updateColumnIndices","sourceColumnIndex","nextSourceIndex","toSkip","updateIndicesForLevel","colsForParentLevel","colsForLevel","cellSelectionMode","activeService","inactiveService","isValidFieldName","validateColumnsField","emitCRUDEvent","resizeCheck","orientationSubscription","documentClickSubscription","keydownSubscription","focusInSubscription","focusOutSubscription","hasChanges","lockedHeader","notifyResize","lastFromGroup","hasCallback","groupBindingDirective","selectableChanges","dragTargetContainer","dropTargetContainer","i18n_124","i18n_126","i18n_128","i18n_130","i18n_132","i18n_134","i18n_136","i18n_138","i18n_140","i18n_142","i18n_144","i18n_146","i18n_148","i18n_150","i18n_152","i18n_154","i18n_156","i18n_158","i18n_160","i18n_162","i18n_164","i18n_166","i18n_168","i18n_170","i18n_172","i18n_174","i18n_176","i18n_178","i18n_180","i18n_182","i18n_184","i18n_186","i18n_188","i18n_190","i18n_192","i18n_194","i18n_196","i18n_198","i18n_200","i18n_202","i18n_204","i18n_206","i18n_208","i18n_210","i18n_212","i18n_214","i42","DataBindingDirective","applyState","onRowReorder","updateGridData","notifyDataChange","stringOperators","AutoCompleteFilterCellComponent","sizingOptionsService","_valueField","FILTER_OPERATORS","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent","importedModules$4","SharedFilterModule","RowFilterModule","importedModules$3","PagerModule","GroupModule","FilterMenuModule","ColumnChooserComponent","escapeListener","closeClick","ColumnMenuModule","TabStripModule","importedModules$2","CheckboxColumnComponent","EditCommandDirective","commandClass","CancelCommandDirective","SaveCommandDirective","RemoveCommandDirective","AddCommandDirective","RowReorderColumnComponent","dragHandleIcon","dragHandleSVGIcon","importedModules$1","BodyModule","importedModules","FooterModule","GridToolbarFocusableDirective","toolbarPosition","DragAndDropModule$1","SVGIconComponent__svg_svg_0_Template","IconWrapperComponent_kendo_svgicon_0_Template","innerCssClass","IconWrapperComponent_ng_template_1_kendo_icon_0_Template","IconWrapperComponent_ng_template_1_ng_template_1_Template","customClasses","IconWrapperComponent_ng_template_1_Template","customFontIconClass","sizeClasses","xsmall","xlarge","xxlarge","xxxlarge","IconBaseDirective","horizontalFlip","verticalFlip","newClass","IconComponent","hostAriaHidden","_name","SVGIconComponent","domSanitizer","newName","areSame","verifyIconProperty","IconSettingsService","getCustomFontIconClass","_key","ICON_SETTINGS","IconsService","_iconSettings","iconSettingsService","IconWrapperComponent","customFontClass","cl","hasSvgIcon","groupCollapsed","groupEnd","IconModule","SVGIconModule","SliderTicksComponent_li_0_span_3_Template","tick_r3","SliderTicksComponent_li_0_ng_container_4_Template","SliderTicksComponent_li_0_Template","tickTitle","SliderTicksComponent_ng_template_1_Template","value_r8","SliderComponent_button_1_Template","decreaseButtonArrowIcon","decreaseButtonArrowSVGIcon","decrementMessage","SliderComponent_ul_4_Template","smallStep","largeStep","SliderComponent_button_11_Template","increaseButtonArrowIcon","increaseButtonArrowSVGIcon","incrementMessage","NumericTextBoxComponent_span_2_ng_template_1_Template","NumericTextBoxComponent_span_2_Template","NumericTextBoxComponent_kendo_input_separator_3_Template","NumericTextBoxComponent_kendo_input_separator_6_Template","NumericTextBoxComponent_span_7_ng_template_1_Template","NumericTextBoxComponent_span_7_Template","NumericTextBoxComponent_span_8_Template","releaseArrow","ArrowDirection","increasePress","incrementTitle","arrowUpIcon","decreasePress","decrementTitle","arrowDownIcon","TextBoxComponent_span_2_ng_template_1_Template","TextBoxComponent_span_2_Template","TextBoxComponent_kendo_input_separator_3_Template","TextBoxComponent_span_6_Template","clearButtonClass","customClearButtonClasses","clearButtonSvgIcon","TextBoxComponent_kendo_icon_wrapper_7_Template","errorIconClasses","customIconClasses","errorSvgIcon","TextBoxComponent_kendo_icon_wrapper_8_Template","successIconClasses","customSuccessIconClasses","successSvgIcon","TextBoxComponent_kendo_input_separator_9_Template","TextBoxComponent_span_10_ng_template_1_Template","TextBoxComponent_span_10_Template","TextAreaComponent_kendo_input_separator_2_Template","separatorOrientation","TextAreaComponent_kendo_input_separator_6_Template","ColorInputComponent_div_3_Template","handleHexInputBlur","handleHexValueChange","focusDragHandle","ColorInputComponent_ng_container_4_div_16_Template","rgba","handleRgbaInputBlur","handleRgbaValueChange","ColorInputComponent_ng_container_4_Template","ColorContrastSvgComponent__svg_path_0_Template","ContrastValidationComponent_ng_container_2_span_1_Template","passMessage","ContrastValidationComponent_ng_container_2_span_2_Template","failMessage","ContrastValidationComponent_ng_container_2_Template","ContrastComponent_ng_container_3_span_1_kendo_icon_wrapper_2_Template","ContrastComponent_ng_container_3_span_1_Template","satisfiesAAACondition","ContrastComponent_ng_container_3_span_2_Template","ContrastComponent_ng_container_3_Template","satisfiesAACondition","_c50","_c51","_c52","_c53","_c54","ColorGradientComponent__svg_svg_8_Template","hsva","contrastTool","ColorGradientComponent_button_10_Template","innerTabIndex","clearButtonTitle","_c89","ColorGradientComponent_kendo_slider_12_Template","handleAlphaSliderChange","opacitySliderTitle","alphaSliderValue","ColorGradientComponent_div_15_Template","_c92","ColorPaletteComponent_tr_3_td_1_Template","color_r4","colIndex_r5","rowIndex_r2","handleCellSelection","selectedCell","focusInComponent","focusedCell","tileLayout","ColorPaletteComponent_tr_3_Template","row_r1","_c93","_c94","_c95","FlatColorPickerHeaderComponent_div_1_button_1_Template","view_r4","onViewButtonClick","i_r5","onHeaderTabOut","getViewButtonIcon","getViewButtonsSVGIcon","FlatColorPickerHeaderComponent_div_1_Template","FlatColorPickerHeaderComponent_button_4_Template","clearButtonClick","FlatColorPickerHeaderComponent_div_5_Template","valuePaneClick","_c96","_c97","_c98","_c99","_c100","_c101","_c102","FlatColorPickerComponent_div_1_Template","onClearButtonClick","onViewChange","FlatColorPickerComponent_kendo_colorgradient_3_Template","focusFirstHeaderButton","handleValueChange","gradientSettings","gradientSliderSmallStep","gradientSliderStep","FlatColorPickerComponent_kendo_colorpalette_4_Template","paletteSettings","palette","FlatColorPickerComponent_div_5_Template","onAction","_c149","_c150","_c151","_c152","ColorPickerComponent_kendo_icon_wrapper_4_Template","iconStyles","customIconStyles","ColorPickerComponent_ng_template_7_Template","handleCancelEvent","handlePopupBlur","handlePopupKeyDown","_c201","FormFieldComponent_ng_content_3_Template","FormFieldComponent_ng_content_4_Template","_c202","_c203","fitIntoBounds","SIZE_MAP","ROUNDED_MAP","limitPrecision","fractionLength","maxFractionLength","toFixedPrecision","maxPrecision","divide","dividend","correctionValue","calculateFixedTrackSize","fixedTickWidth","calculateTicksCount","adjustedRange","adjustedRatio","calculateValueFromTick","decreaseValueToStep","stepRemainder","increaseValueToStep","trimValue","eventValue","scaleElement","trackOffset","offsetValue","stepFractionLength","snapValue","limited","incrementLarge","decrementLarge","SliderModelBase","tickSizes","getTickSizes","resizeTrack","altOrientation","trackWidth","resizeTicks","ticksContainer","adjustPadding","resizeWrapper","getTrackOffset","distStep","totalTickSize","wrapperGap","SliderModel","positionHandle","handlePosition","calculateHandlePosition","positionSelection","invokeElementMethod","LabelTemplateDirective","SliderBase","tickPlacement","sliderClass","ifEnabled","verticalClass","sizeComponent","keyBinding","resetStyles","sliderSelection","SliderTick","SliderTicksComponent","tickValueProps","endTickClasses","tickElements","SliderMessages","ɵSliderMessages_BaseFactory","LocalizedSliderMessagesDirective","PRESSED$1","SliderComponent","showButtons","onWrapClick","getProps","draghandle","ngChange","ngTouched","decreaseValue","increaseValue","setValueChangeInterval","increaseButton","decreaseButton","isSliderInvalid","dragHandleMessage","dragHandleTitle","handleDragPress","onHandleDrag","onHandleRelease","selectionEl","dragHandleEl","isDragged","i18n_11","LocalizedSwitchMessagesDirective","FOCUSED$4","SwitchComponent","_checked","_trackRounded","_thumbRounded","setHostClasses","thumbRounded","newThumbRounded","handleThumbClasses","trackRounded","newTrackRounded","handleTrackClasses","ieClass","ariaInvalid","isControlInvalid","ariaReadonly","onLabelMessage","onLabel","offLabelMessage","offLabel","attachHostHandlers","thumb","TextBoxDirective","autoFillStart","autoFillEnd","animationName","EXPONENT_REGEX","decimalPart","InputSeparatorComponent","NumericTextBoxMessages","ɵNumericTextBoxMessages_BaseFactory","LocalizedNumericTextBoxMessagesDirective","SharedInputEventsDirective","PARSABLE_OPTIONS","PARSABLE_DEFAULTS","FOCUSED$3","autoCorrect","changeValueOnScroll","selectOnFocus","isPasted","ngValidatorChange","arrowPress","spinTimeout","pressedKey","replaceNumpadDotValue","formatInputValue","restrictDecimals","limitInputValue","hasTrailingZeros","setInputValue","updateValue","previousSelection","shouldSelectAll","selectCaret","handleWheel","getDeltaFromMouseWheel","disableClass","createMinValidator","createMaxValidator","numericRegex","restrictModelValue","unbindHandler","restrictedValue","notifyValueChange","decimalSeparator","hasDecimals","isRightClick","spin","numberPattern","enteredValue","limitedValue","selectToEnd","lengthChange","hasMax","hasMin","padLimit","replaceNext","correctedValue","paddedValue","tryPadValue","limitLength","zeroPadded","zeroPaddedNext","stringValue","exponentMatch","caretPosition","getCaretPosition","partialValue","significantCharsInFormattedValue","extractSignificantNumericChars","formattedString","significantCharacters","adjustedSignificantChars","adjustSignificantChars","numberOfLeadingZeroes","separatorIndex","matchedLeadingZeroes","lengthOfLeadingZeroesMatch","significantChars","leadingZeroes","NumericTextBoxCustomMessagesComponent","SlidersCommonModule","SliderModule","RangeSliderModule","SwitchModule","MaskedTextBoxModule","TextBoxSuffixTemplateDirective","TextBoxPrefixTemplateDirective","TextBoxMessages","ɵTextBoxMessages_BaseFactory","LocalizedTextBoxMessagesDirective","FOCUSED$1","iconsMap$1","_progress_kendo_svg_icons__WEBPACK_IMPORTED_MODULE_8__","eQZ","tjX","TextBoxComponent","showSuccessIcon","showErrorIcon","caretEnd","checkClearButton","configureAdornments","textBoxPrefixTemplate","textBoxSuffixTemplate","isFocusedElement","showClearButton","showErrorsInitial","showSuccessInitial","successIcon","errorIcon","clearButtonIcon","hasErrors","isSuccessful","i18n_37","TextFieldsBase","TextAreaPrefixComponent","flow","verticalOrientation","horizontalOrientation","TextAreaSuffixComponent","resizeClasses","both","FOCUSED","TextAreaComponent","_flow","showPrefixSeparator","showSuffixSeparator","_adornmentsOrientation","flowCol","flowRow","adornmentsOrientation","handleFlow","initialHeight","ColorPickerLocalizationService","FlatColorPickerLocalizationService","colorPickerLocalization","DEFAULT_ACCESSIBLE_PRESET$1","PALETTEPRESETS","basic","office","apex","austin","clarity","slipstream","metro","hardcover","trek","verve","monochrome","accessible","FlatColorPickerService","getPaletteSettings","settingsPalette","paletteTileLayout","ColorPickerCancelEvent","ColorPickerCloseEvent","ColorPickerOpenEvent","ActiveColorClickEvent","openPrevented","preventOpen","isOpenPrevented","opacityEnabled","nameFormat","parseColor$1","parsedColor","getHexValue","getRGBA","getColorFromHSV","hue","saturation","getColorFromHue","getRGBFromRGBA","foregroundColor","g2","getLuminance","getContrastFromTwoRGBAs","getContrast","luminance1","luminance2","pointA","pointB","lengthX","lengthY","svgPath","ColorGradientLocalizationService","flatColorPickerLocalization","NumericLabelDirective","kendoAdditionalNumericLabel","ColorInputComponent","colorInputClass","rgbaInputValid","formatButtonTitle","getColorFromRGBA","focusLast","lastInput","toggleFormatView","formatView","toggleFormatButton","hexInput","opacityInput","blueInput","ColorContrastSvgComponent","metrics","oldA","oldH","setPaths","bezierCommandCalc","controlPointCalc","cpsX","cpsY","cpeX","cpeY","bezierCommand","lineCalc","getPaths","findValue","contrast","currentContrast","stepCount","reversed","ContrastValidationComponent","contrastText","ContrastComponent","formatedRatio","contrastRatio","contrastRatioText","ColorPickerMessages","ɵColorPickerMessages_BaseFactory","colorPaletteNoColor","colorGradientNoColor","flatColorPickerNoColor","colorPickerNoColor","colorGradientHandle","hueSliderHandle","opacitySliderHandle","hexInputPlaceholder","redInputPlaceholder","greenInputPlaceholder","blueInputPlaceholder","alphaInputPlaceholder","redChannelLabel","greenChannelLabel","blueChannelLabel","alphaChannelLabel","passContrast","failContrast","previewColor","revertSelection","gradientView","paletteView","LocalizedColorPickerMessagesDirective","serial$3","ColorGradientComponent","internalNavigation","hueSliderTouched","alphaSliderTouched","updateValues","hsvHandleCoordinates","notifyNgChanged","notifyNgTouched","readonlyAttribute","gradientId","hostTabindex","enterHandler","gradientDragHandle","escapeHandler","_contrastTool","gradientRect","gradientWrapper","hsvSliderValueText","contrastToolVisible","updateUI","changePosition","onKeyboardAction","dragHandleElement","keyboardMoveX","keyboardMoveY","newY","newX","moveDragHandle","handleHueSliderChange","setBackgroundColor","setAlphaSliderBackground","handleInputsValueChange","colorGradientHandleTitle","colorGradientHandleAriaLabel","hueSliderTitle","positionX","positionY","gradientRectWidth","gradientRectHeight","setDragHandleElementPosition","setHostElementAriaLabel","alphaSlider","hsvRectangle","getHSV","focusOutListener","containsFocus","keydownListener","keyupListener","dragHandleFocusInListener","dragHandleFocusOutListener","i18n_55","i18n_57","i18n_59","i18n_61","i18n_63","i18n_65","i18n_67","i18n_69","i18n_71","i18n_73","i18n_75","i18n_77","i18n_79","i18n_81","i18n_83","i18n_85","i18n_87","ColorPaletteLocalizationService","ColorPaletteService","colorRows","setColorMatrix","getCellCoordsFor","getColorAt","cellCoords","horizontalStep","verticalStep","minArrayIndex","serial$2","ColorPaletteComponent","activeCellId","paletteId","minColumnsCount","_palette","setRows","handleHostBlur","selectCell","handleCellNavigation","handleCellFocusOnBlur","selectedColor","FlatColorPickerHeaderComponent","viewChange","viewButtonsCollection","buttonElem","viewButtons","clearButtonElement","FlatColorPickerActionButtonsComponent","actionButtonClick","onActionButtonClick","firstButton","lastButton","FlatColorPickerComponent","_gradientSettings","_paletteSettings","headerHasContent","setActiveView","setSizingVariables","removeGradientAttributes","gradientElement","nextTabStop","previousTabStop","resetInnerComponentValue","changeCurrentValue","setFlatColorPickerValue","ariaLabelValue","paletteTileSize","i18n_103","i18n_105","i18n_107","i18n_109","i18n_111","i18n_113","i18n_115","i18n_117","i18n_119","i18n_121","i18n_123","i18n_125","i18n_127","i18n_129","i18n_131","i18n_133","i18n_135","i18n_137","i18n_139","i18n_141","i18n_143","i18n_145","i18n_147","DOM_FOCUS_EVENTS","nextColorPickerId","ColorPickerComponent","activeColorClick","domFocusListener","colorPickerId","parsedIconClass","handleHostId","handleDomEvents","toggleWithEvents","handleWrapperClick","activeColor","handleWrapperFocus","handleWrapperBlur","popupBlurInvalid","handleWrapperKeyDown","nextElement","firstFocusableElement","focusInFlatColorPickerElement","flatColorPicker","closestPopup","closestWrapper","i18n_153","i18n_155","i18n_157","i18n_159","i18n_161","i18n_163","i18n_165","i18n_167","i18n_169","i18n_171","i18n_173","i18n_175","i18n_177","i18n_179","i18n_181","i18n_183","i18n_185","i18n_187","i18n_189","i18n_191","i18n_193","i18n_195","i18n_197","i18n_199","CheckBoxDirective","kendoClass","RadioButtonDirective","RadioButtonModule","serial$1","ErrorComponent","roleAttribute","startClass","endClass","idAttribute","FormFieldComponent","showHints","showErrors","errorClass","isRadioControl","disabledControl","disabledElement","disabledKendoInput","formControls","validateFormControl","hasHints","showHintsInitial","setDescription","updateDescription","controlElementRefs","isControlGroup","findControlElements","errorChildren","hintChildren","ariaIds","generateDescriptionIds","errorAttribute","SignatureModule","RatingModule","DOCS_URL","errorSolutions","errorSolution","intlMethod","LOCALE_REGEX","cldrServiceFactory","CldrIntlService","format$1","MessageService","LabelComponent_span_3_Template","LabelDirective","labelClass","getFocusableComponent","labelFor","inputElementHasAttr","setAriaLabelledby","clickListener","labelTarget","FloatingLabelModule","LabelComponent","wrappedNativeInput","getWrappedNativeInput","labelDirective","labelCssStyle","labelCssClass","i18n_3","MODULES","ProgressBarModule","TabComponent_ng_container_0_span_1_Template","TabComponent_ng_container_0_span_2_ng_template_1_Template","TabComponent_ng_container_0_span_2_Template","tabTitle","TabComponent_ng_container_0_Template","TabComponent_ng_template_1_Template","TabComponent_button_3_Template","closeTab","closeButtonClasses","customCloseButtonClasses","closeSVGIconClass","TabStripComponent_ng_container_1_ng_container_1_Template","TabStripComponent_ng_container_1_ng_container_2_ng_container_1_Template","TabStripComponent_ng_container_1_ng_container_2_Template","TabStripComponent_ng_container_1_Template","showContentArea","TabStripComponent_ng_container_2_ng_container_1_ng_container_1_Template","TabStripComponent_ng_container_2_ng_container_1_Template","TabStripComponent_ng_container_2_ng_container_2_Template","TabStripComponent_ng_container_2_Template","TabStripComponent_ng_template_3_span_1_Template","tabScroll","onScrollButtonClick","tabPosition","TabStripComponent_ng_template_3_ng_container_4_Template","tabClose","i_r23","onTabClick","tab_r22","cssStyle","closable","closeIcon","closeIconClass","closeSVGIcon","getTabId","getTabPanelId","TabStripComponent_ng_template_3_span_5_Template","TabStripComponent_ng_template_3_Template","itemsWrapperClass","hasScrollButtons","tabsAlignmentStyles","tabListWidth","tabListHeight","tabs","TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template","TabStripComponent_ng_template_5_ng_template_0_div_0_Template","tab_r33","i_r34","keepTabContent","tabContent","TabStripComponent_ng_template_5_ng_template_0_Template","TabStripComponent_ng_template_5_Template","TabStripComponent_kendo_resize_sensor_7_Template","TabStripComponent_div_8_Template","DrawerItemComponent_0_ng_template_0_Template","isItemExpanded","DrawerItemComponent_0_Template","DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_1_Template","iconClasses","innerCssClasses","DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_4_Template","DrawerItemComponent_ng_template_1_ng_container_0_Template","DrawerItemComponent_ng_template_1_ng_container_1_kendo_icon_wrapper_1_Template","DrawerItemComponent_ng_template_1_ng_container_1_Template","DrawerItemComponent_ng_template_1_Template","mini","DrawerListComponent_ng_container_0_li_1_Template","v_r1","idx_r2","DrawerListComponent_ng_container_0_li_2_Template","DrawerListComponent_ng_container_0_Template","DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template","DrawerComponent_div_0_ng_container_1_1_Template","DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template","DrawerComponent_div_0_ng_container_1_3_Template","DrawerComponent_div_0_ng_container_1_Template","viewItems","DrawerComponent_div_0_2_ng_template_0_Template","DrawerComponent_div_0_2_Template","drawerTemplate","DrawerComponent_div_0_Template","drawerWidth","DrawerComponent_div_1_Template","DrawerContainerComponent_div_0_Template","closeDrawer","isHorizontalArrowKey","isVerticalArrowKey","indexAttr","hasItemIndex","targetAttr","TabContentDirective","TabTitleDirective","TabTemplateDirective","TabStripTabComponent","_tabDirective","_tabContent","_tabTitleDirective","tabTemplate","TabCloseEvent","PreventableEvent$1","mouseScrollEnabled","scrollableSettings","mouseScroll","getActiveTab","focusedTab","selectedTab","getTabByIndex","_tab","isTablistHorizontal","tabStripId","TabStripService","isTabElement","shouldHandleKey","onDelete","onTabSelect","selectArgs","tabSelect","focusTabHeader","resetTabSelection","scrollToSelectedTab","activeTab","firstNavigatableIndex","computeNextIndex","activateTab","activeTabIndex","isTabClosable","tabStripClosable","getTabHeaderByIndex","tabHeaderContainers","_tabHeader","invertKeys","prevNavigatableIndex","nextNavigatableIndex","lastNavigatableIndex","ScrollService","scrollButtonActiveStateChange","tablistElement","tablist","tabstripSize","wrapperHeight","tablistOverflowSize","overflowSize","tabsOverflow","scrollButtonsSize","prevScrollButton","hostBoundingClientRect","prevSize","nextRect","nextScrollButton","toggleScrollButtonsState","currentPrevButtonActive","currentNextButtonActive","calculatedPrevButtonActive","calculatedNextButtonActive","getScrollOffset","isLastTabActive","activeTabRect","tablistRect","activeTabStart","activeTabEnd","tablistStart","tablistEnd","tabEndIsInVisibleRange","tabStartIsInVisibleRange","onMouseScroll","calculateListPosition","mouseScrollSpeed","scrollTabs","buttonScrollSpeed","behavior","scrollSpeed","adjustedMaxScroll","restoreScrollPosition","normalizeScrollableSettings","scrollButtons","prevButtonIcon","nextButtonIcon","prevSVGButtonIcon","nextSVGButtonIcon","TabScrollEvent","TabStripScrollableButtonComponent","emitScrollEvent","prevClass","nextClass","scrollButtonIconClass","customScrollButtonIconClass","scrollButtonSVGIcon","defaultPrevIcon","defaultNextIcon","prevIcon","nextIcon","defaultPrevSVGIcon","defaultNextSVGIcon","TabComponent","activeClass","tabClosable","customTabstripCloseIcon","tabStripCloseIcon","closeArgs","TabStripMessages","ɵTabStripMessages_BaseFactory","previousTabButton","nextTabButton","LocalizedTabStripMessagesDirective","tabstripService","scrollService","_scrollableSettings","subscriptionsArePresent","activeButtonSettings","toggleScrollButtons","attachWheelHandler","_closeSVGIcon","tabsAtTop","tabsAtRight","tabsAtBottom","tabsAtLeft","tabStripScrollable","tabsChangesSub","positionChange","tabsAtBottomChanged","activeStateChangeSub","justify","tabAlignment","tabStripHasScrollButtons","resetTabFocus","scrollButtonsSetting","scrollButtonsArePresent","shouldShowButtons","wheelEvent","DrawerTemplateDirective","DrawerItemTemplateDirective","DrawerHeaderTemplateDirective","DrawerFooterTemplateDirective","defaultIsItemExpanded","DrawerService","originalItems","idxCounter","resetViewData","rootItems","populateViewData","changeFocusedItem","selectedIdx","drawer","autoCollapse","minimized","DRAWER_ITEM_INDEX","nestedLink","DrawerListSelectEvent","DrawerItemComponent","drawerService","DrawerListComponent","identifyItem","isArrowUpOrDown","onEnterOrSpaceKeyDown","viewItemIdx","getDrawerItemIndex","selectedItemIndex","DEFAULT_ANIMATION","DrawerComponent","miniWidth","expandedChange","animationEnd","startPositionClass","endPositionClass","overlayTransofrmStyles","flexStyles","setExpanded","onAnimationEnd","currentExpanded","expandAnimation","miniExpandPush","flexBasis","miniExpandOverlay","expandRTLOverlay","expandOverlay","expandPush","collapseAnimation","miniCollapsePush","miniCollapseOverlay","collapseRTLOverlay","collapseOverlay","translateDir","collapsePush","DrawerContainerComponent","overlayClass","miniClass","pushClass","isExpandedClass","DrawerContentComponent","handlersRTL","AvatarModule","CardModule","DrawerModule","ExpansionPanelModule","PanelBarModule","SplitterModule","StepperModule","TileLayoutModule","StackLayoutModule","GridLayoutModule","LayoutModule","BreadCrumbItemComponent_ng_template_0_Template","BreadCrumbItemComponent_ng_container_2_ng_container_1_Template","BreadCrumbItemComponent_ng_container_2_Template","BreadCrumbItemComponent_ng_container_3_span_1_img_1_Template","onImageLoad","BreadCrumbItemComponent_ng_container_3_span_1_kendo_icon_wrapper_2_Template","BreadCrumbItemComponent_ng_container_3_span_1_Template","BreadCrumbItemComponent_ng_container_3_2_ng_template_0_Template","BreadCrumbItemComponent_ng_container_3_2_Template","BreadCrumbItemComponent_ng_container_3_Template","BreadCrumbItemComponent_ng_container_4_ng_container_1_Template","BreadCrumbItemComponent_ng_container_4_Template","BreadCrumbListComponent_ng_container_0_li_1_span_2_Template","separatorIcon","separatorSVGIcon","BreadCrumbListComponent_ng_container_0_li_1_span_3_Template","BreadCrumbListComponent_ng_container_0_li_1_Template","i_r2","isFirst_r3","isLast_r4","collapseMode","collapsed","BreadCrumbListComponent_ng_container_0_Template","isRootItemContainer","BreadCrumbComponent_ol_0_Template","firstItem$","ActionSheetItemComponent_0_ng_template_0_Template","ActionSheetItemComponent_0_Template","ActionSheetItemComponent_ng_template_1_span_1_Template","manageIconStyles","manageIconClasses","ActionSheetItemComponent_ng_template_1_span_2_span_1_Template","ActionSheetItemComponent_ng_template_1_span_2_span_2_Template","ActionSheetItemComponent_ng_template_1_span_2_Template","ActionSheetItemComponent_ng_template_1_Template","ActionSheetListComponent_span_0_Template","setAttrIndex","ActionSheetComponent_ng_container_0_6_ng_template_0_Template","ActionSheetComponent_ng_container_0_6_Template","actionSheetTemplate","ActionSheetComponent_ng_container_0_ng_template_7_div_0_1_ng_template_0_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_0_1_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_0_ng_template_2_div_2_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_0_ng_template_2_div_3_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_0_ng_template_2_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_0_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_1_1_ng_template_0_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_1_1_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_1_ng_template_2_div_0_Template","topGroupItems","ActionSheetComponent_ng_container_0_ng_template_7_div_1_ng_template_2_hr_1_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_1_ng_template_2_div_2_Template","bottomGroupItems","ActionSheetComponent_ng_container_0_ng_template_7_div_1_ng_template_2_Template","shouldRenderSeparator","ActionSheetComponent_ng_container_0_ng_template_7_div_1_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_2_ng_template_1_Template","ActionSheetComponent_ng_container_0_ng_template_7_div_2_Template","ActionSheetComponent_ng_container_0_ng_template_7_Template","ActionSheetComponent_ng_container_0_Template","_r28","onOverlayClick","hexColorRegex","ACTIONSHEET_ITEM_INDEX_ATTRIBUTE","getActionSheetItemIndex","closestItem$1","itemIndex$1","closestInScope$1","hasItemIndex$1","AppBarModule","BreadCrumbItemTemplateDirective","BREADCRUMB_ITEM_INDEX","BreadCrumbItemComponent","isRootItem","DEFAULT_SVG_ICON","DEFAULT_RTL_SVG_ICON","BreadCrumbSeparatorDirective","defaultClasses","hasDefaultIcon","hasDefaultSvgIcon","localizationChangesSubscription","BreadCrumbListComponent","click$","enterKey$","domEventsSubscription","renderedItems","getCollapsed","itemComponent","toggleFirst","itemComponents","ic","collapseFirst","expandFirst","BreadCrumbComponent","hostAriaLabel","_collapseMode","updateItems","updateItems$","itemsData$","wrapMode","getDir","attachResizeHandler","autoCollapseCandidates","listComponent","componentWidth","itemsContainerWidth","itemsContainers","nextExpandWidth","shouldResize","resizeSensor","BottomNavigationModule","ActionSheetHeaderTemplateDirective","ActionSheetItemTemplateDirective","ActionSheetContentTemplateDirective","ActionSheetFooterTemplateDirective","ActionSheetTemplateDirective","ActionSheetItemComponent","pointerClass","isHexColor","iconColor","isSizeSet","iconSize","ActionSheetListComponent","groupItems","allItems","overlayClick","setCssVariables","playAnimation","triggerItemClick","contentHeight","childContainer","slideUp","slideDown","PopupComponent_ng_template_4_Template","eitherRect","OVERFLOW_REGEXP","overflowStyle","overflowElementStyle","overflowComputedStyle","FRAME_DURATION","hasRelativeStackingContext","childElement","scaleRect","DOMService","addOffset","addition","boundingOffset","getFontStyles","hasOffsetParent","offsetAtPoint","currentLocation","currentOffset","_dummy","restrictToView","scrollableParents","stackingElementOffset","relativeContextElement","getRelativeContextElement","stackingElementScroll","useRelativePosition","siblingContainer","zIndexStyle","isZoomed","SCALE","AlignService","_dom","alignElement","relativeRect","absoluteRect","scrollPos","stackScale","stackScroll","stackOffset","removeStackingOffset","stackingOffset","PositionService","positionElement","isUnsubscribed","ScrollableService","forElement","elemRect","DOWN","animationTypes","AnimationService","animationBuilder","statesFn","playStates","stopPlayer","DEFAULT_OFFSET","PopupComponent","_alignService","domService","_positionService","_resizeService","_scrollableService","animationService","copyAnchorStyles","anchorViewportLeave","initialCheck","updateFixedClass","animationSubscriptions","onAnimationStart","setZIndex","copyFontStyles","unsubscribeReposition","repositionSubscription","_currentOffset","setContainerStyle","isDifferentOffset","newOffset","oldLeft","oldTop","contentContainer","alignedOffset","isInViewPort","hasLeaveObservers","rootViewContainer","rootComponents","rootViewContainerNode","getComponentRootNode","popupComponentRef","appendPopup","popupInstance","projectComponentInputs","popupPositionChange","getComponentFactory","componentClass","ScrollViewPagerComponent_span_1_Template","itemClass","pagerButtonLabel","ScrollViewComponent_div_5_ng_template_1_Template","ScrollViewComponent_div_5_Template","item_r3","i_r4","inlineListItemStyles","itemTemplateRef","ScrollViewComponent_div_6_span_1_Template","leftArrowClick","scrollviewId","prevButtonArrowIcon","prevButtonArrowSVGIcon","ScrollViewComponent_div_6_span_2_Template","rightArrowClick","nextButtonArrowIcon","nextButtonArrowSVGIcon","ScrollViewComponent_div_6_kendo_scrollview_pager_3_Template","ScrollViewComponent_div_6_Template","arrows","displayLeftArrow","displayRightArrow","Dir","Next","Prev","endless","pageIndex","itemCount","canMoveNext","canMovePrev","ScrollViewPagerComponent","pagerIndexChange","ScrollViewMessages","ɵScrollViewMessages_BaseFactory","ScrollViewComponent","pagerOverlay","itemChanged","scrollViewClass","scrollViewRole","scrollViewRoleDescription","animationState","isDataSourceEmpty","_activeIndex","scrollViewLightOverlayClass","scrollViewDarkOverlayClass","hostWidth","hostHeight","keyDown","transitionEndHandler","initialTouchCoordinate","isDragForbidden","draggedInsideBounds","itemWrapper","draggedEnoughToNavigate","changeIndex","isNotBorderItem","pastEnd","prevButton","nextButton","isNextButtonFocused","ToolBarRendererComponent_ng_container_0_ng_template_1_Template","ToolBarRendererComponent_ng_container_0_Template","ToolBarRendererComponent_ng_container_1_ng_template_1_Template","ToolBarRendererComponent_ng_container_1_Template","ToolBarComponent_ng_container_1_Template","onRendererClick","tool_r6","ToolBarComponent_button_2_Template","showPopup","moreToolsTitle","overflowBtnId","overflowClass","ToolBarComponent_ng_template_3_ng_container_1_Template","tool_r15","ToolBarComponent_ng_template_3_Template","allTools","ToolBarComponent_kendo_resize_sensor_7_Template","ToolBarButtonComponent_ng_template_0_Template","selectedChangeHandler","toolbarButtonClass","ToolBarButtonComponent_ng_template_2_kendo_icon_wrapper_3_Template","overflowOptions","ToolBarButtonComponent_ng_template_2_span_4_Template","ToolBarButtonComponent_ng_template_2_Template","ToolBarButtonGroupComponent_ng_template_0_span_2_Template","button_r6","ToolBarButtonGroupComponent_ng_template_0_Template","buttonComponents","ToolBarButtonGroupComponent_ng_template_2_ng_container_0_kendo_icon_wrapper_4_Template","button_r15","ToolBarButtonGroupComponent_ng_template_2_ng_container_0_span_5_Template","ToolBarButtonGroupComponent_ng_template_2_ng_container_0_Template","ToolBarButtonGroupComponent_ng_template_2_Template","RefreshService","onRefresh","tool","findFocusableSibling","prevSibling","getValueForLocation","displayMode","renderedTool","renderedTools","isPopupFocused","isOverflowButtonFocused","setRenderedTools","rts","moveFocusToToolBar","focusOverflowButton","moveFocusToPopup","blurOverflowButton","focusNext","firstFocusableRT","getFocusableTools","nextRT","isOverflowButtonVisible","firstRT","focusPrev","lastFocusableRT","prevRT","lastRT","resetNavigation","focusFirst","firstTool","overFlowButton","overflowButton","rt","lastTool","focusableRTs","lastFocusedRT","toolbarDisplay","overflowDisplay","RendererService","findNextFocusableSibling","findPrevFocusableSibling","ToolBarRendererComponent","rendererService","refreshService","rendererClick","refreshSubscription","spacerClass","isSpacer","__isSpacer","isDisplayed","ToolbarMessages","ɵToolbarMessages_BaseFactory","LocalizedToolbarMessagesDirective","getInitialPopupSettings","_cdr","cancelRenderedToolsSubscription$","overflowButtonClickedTime","toolbarKeydownListener","normalizePopupClasses","setPopupContentDimensions","onPopupOpen","onPopupClose","overflowAnchorWidth","childrenWidth","stretch","displayAnchor","isImmediateResize","overflowKeydownListener","currentTool","overflowRenderedTools","cachedOverflowAnchorWidth","cachedGap","computedGap","visibleTools","overflowTools","hideLastVisibleTool","showFirstHiddenTool","renderedElement","popupContentContainer","i18n_6","ToolBarButtonComponent","_showText","setTextDisplayMode","isIconSet","isIconClassSet","getButton","overflowButtonElement","toolbarButtonElement","ToolBarButtonGroupComponent","getNextKey","getPrevKey","buttonElements","overflowListItems","toolbarButtonGroup","overflowSelectedChangeHandler","be","prevKey","getIndexOfFocused","prevKeyCode","nextKeyCode","peekAtIndex","makePeeker","isUnmodified","seekFocusedIndex","seeker","TooltipContentComponent_div_2_ng_template_1_Template","TooltipContentComponent_div_2_Template","TooltipContentComponent_ng_template_3_Template","TooltipContentComponent_ng_template_4_Template","templateString","TooltipContentComponent_div_5_Template","TooltipContentComponent_div_6_Template","calloutPositionClass","PopoverComponent_div_0_div_2_Template","getCalloutPosition","PopoverComponent_div_0_div_3_ng_container_1_Template","PopoverComponent_div_0_div_3_Template","PopoverComponent_div_0_ng_template_4_div_0_2_ng_template_0_Template","PopoverComponent_div_0_ng_template_4_div_0_2_Template","PopoverComponent_div_0_ng_template_4_div_0_ng_container_3_Template","PopoverComponent_div_0_ng_template_4_div_0_Template","PopoverComponent_div_0_ng_template_4_div_1_2_ng_template_0_Template","PopoverComponent_div_0_ng_template_4_div_1_2_Template","bodyTemplate","PopoverComponent_div_0_ng_template_4_div_1_ng_container_3_Template","PopoverComponent_div_0_ng_template_4_div_1_Template","PopoverComponent_div_0_ng_template_4_div_2_1_ng_template_0_Template","PopoverComponent_div_0_ng_template_4_div_2_1_Template","PopoverComponent_div_0_ng_template_4_div_2_Template","PopoverComponent_div_0_ng_template_4_Template","PopoverComponent_div_0_Template","callout","TOOLTIP_SETTINGS","TooltipSettings","popoverTitleIdx","popoverBodyIdx","idSource","popupMargin","inputcollision","getCenterOffset","containsItem","TooltipContentComponent","tooltipWidth","tooltipHeight","calloutStyles","calloutSize","isFlip","tooltipId","cssPosition","updateCalloutPosition","offsetProperty","anchorCenter","contentCenter","i18n_0","TooltipDirective","tooltipWrapper","legacySettings","showAfter","keyboardNavigationSubscription","validPositions","validShowOptions","anchorTitleSubscription","filterElement","hideElementTitle","mouseOverSubscription","onMouseOver","mouseOutSubscription","onMouseOut","tooltipTemplate","showOn","showTimeout","showContent","popupMouseOutSubscription","closeClickSubscription","previousAnchor","verifyProperties","subscribeClick","mouseClickSubscription","popupPositionChangeSubscription","anchorRef","bindContent","contentComponent","alignSettings","tooltipClass","tooltipContentClass","onMouseClick","anchorLabelledBy","canCloseTooltip","isIdEqualsLabel","isTargetFocused","PopoverTitleTemplateDirective","PopoverBodyTemplateDirective","PopoverActionsTemplateDirective","PopoverComponent","shown","closeOnKeyDown","popoverId","_templateData","calloutBuffer","isHidden","hasAttributeHidden","popoverWrapper","focusablePopoverChildren","titleRef","titleTemplateWrapper","bodyRef","bodyTemplateWrapper","bodyId","PopoverShowEvent","PopoverHideEvent","popover","PopoverShownEvent","PopoverHiddenEvent","PopoverDirectivesBase","_showOn","_popover","subscribeToShowEvents","mouseenterHandler","mouseleaveHandler","disposeHoverOverListener","disposeHoverOutListener","disposeClickListener","_focusInsideSub","_hideSub","_popupOpenSub","_popupCloseSub","disposePopupHoverOutListener","disposePopupHoverInListener","disposePopupFocusOutListener","popoverComp","applySettings","monitorPopup","initializeCompletionEvents","isPrevented","anchorElement","initializeEvents","_popoverService","emitPopoverState","emitFocusInsidePopover","shouldEmitEvent","shouldEmitCompletionEvents","PopoverService","_pointerOverPopup","_pointerOverAnchor","_focusInsidePopover","_hidePopover","isPopoverHovered","isAnchorHovered","emitAnchorState","_isOrigin","originAnchor","isFocusInsidePopover","hidePopover","PopoverContainerDirective","wrapperEl","popoverService","controlVisibility","isOriginAnchor","isFocusInside","isInsidePopup","popupRefAnchor","TooltipModule","PopoverModule","_0x50aaef","_0x10f4b0","_0x10f4","_0x421c90","_0x145713","_0x1457","aWziBr","XjGMHe","_0x2c6af5","_0x1b5a14","_0x1aecb4","_0x5ea27f","_0x25dc8b","_0x27d11b","_0x46c2e8","_0x29c8dd","_0xcce210","_0x2181c6","_0x4e0ecf","_0x1a2fc4","XQgCdR","_0x1b62be","_0x401145","_0x379487","_0x13003c","_0x487465","_0x5ac69b","_0x12f1b9","_0x404bc6","KendoLicensing","_0x21bd47","matchProduct","_0x408a16","_0x9b416b","_0x45ca78","_0x1880f2","_0x226118","_0x16f928","_0x4632fe","packageName","docsUrl","isExpired","getCurrentDate","expiryDate","_0x3e0d1b","_0x225671","_0x594e89","_0x2d7e52","_0x415e0e","_0xe99283","_0x4b71d2","_0x1df709","_0x4f97fc","CorePopupComponent_h1_0_Template","CorePopupComponent_p_2_Template","content_r4","CorePopupComponent_span_4_Template","CorePopupComponent_button_6_Template","btn_r5","actionButtonClicked","CorePopupComponent","btn","actionButtons","matDialog","openDialogInstance","dataModel","shouldCloseOnInterrupt","dialogInstance","EnvironmentEnum","LocalhostEnum","localhost","EnvironmentWebEnum","TokenEnum","SessionLifetimeService","warningTimer","countdownInterval","isInit","showWarning","loggingOut","timeRemainingUntilTimeout","formattedTimeRemainingUntilTimeout","deferTimeout","_secureHttpService","closeTimeoutWarningPopup","sessionIsInvalid","logout","timeOfTimeout","expireMilliseconds","showTimeoutWarning","warningMilliseconds","executeTimeout","setRemainingTimeUntilTimeout","formatTimeSpan","timeoutPopup","openTimeoutWarningPopup","totalMilliseconds","NotifierMessageTypeEnum","warning","NotifierService","toastr","notificationMessages","onGoingRequestList","requestLoadingText","unnamedCpiTriggerText","showSuccessNotifier","closeButton","showErrorNotifier","showWarningNotifier","showValidationMessages","validationResultList","validationResult","validationMessage","cpiTrigger","addRequestInfo","updateRequestLoadingText","removeRequestInfo","Request","_notifier","_sessionLifetimeService","Origin","fetch","requestParams","validationResults","isSuccess","validationSeverity","ServicePathInitializer","_request","servicePathContainer","servicePath","TokenService","currentServicePathEnvironment","tokenManagerContainer","tokenManager","getTokenManager","skipSessionCheck","returnUrlKey","access_token","profile","newTokenManager","createTokenManager","expired","clientId","environmentQualifier","sessionStorage","redirectForToken","_settings","client_id","hasSession","securityTokenConfiguration","redirect_uri","redirectUri","response_type","authority","acr_values","acrValues","post_logout_redirect_uri","baseUri","request_state_key","persistKey","request_state_store","OidcTokenManager","tokenManagerInstance","getPostLogoutUrl","clearTokens","redirectForLogout","reload","itemsToRemove","SecureHttpService","_servicePathInitializer","_tokenService","getDisplayName","_this","_asyncToGenerator","given_name","family_name","generateGuid","accessToken","Authorization","executeHttp","retryCount","skipDeferTimeout","_this2","shouldRetry","_this3","_this4","cpiUsePrimitiveMember","ServiceFactory","serviceKey","populate","operation","createOperation","secureHttpServiceInstance","Ng2DropdownButton_span_3_Template","Ng2DropdownMenu_div_3_Template","Ng2DropdownButton","onMenuToggled","showCaret","onBackspace","onSwitchPrev","onSwitchNext","onItemClicked","arrowKeysHandler","Ng2DropdownState","onItemSelected","onItemDestroyed","_selectedItem","unselect","DropdownStateService","menuState","dropdownState","Ng2MenuItem","Ng2DropdownMenu","appendToBody","arrowHandler","handleKeypress","dc","wd","updateOnChange","getMenuElement","calcPositionOffset","supportPageOffset","isCSS1Compat","compatMode","applyOffset","marginFromBottom","marginFromRight","windowScrollWidth","Ng2Dropdown","dynamicUpdate","onShow","onHide","newSelectedItem","menu","scrollListener","Ng2DropdownModule","TagComponent_div_1_ng_template_1_Template","TagComponent_div_1_Template","editing","TagComponent_div_2_delete_icon_3_Template","TagComponent_div_2_Template","disableEditMode","onBlurred","getDisplayValue","isDeleteIconVisible","TagComponent_tag_ripple_3_Template","rippleState","TagInputDropdown_ng2_menu_item_2_span_1_Template","displayBy","tagInput","inputForm","TagInputDropdown_ng2_menu_item_2_2_ng_template_0_Template","TagInputDropdown_ng2_menu_item_2_2_Template","last_r3","TagInputDropdown_ng2_menu_item_2_Template","TagInputComponent_tag_2_Template","selectItem","onRemoveRequested","updateEditedTag","onTagBlurred","dragZone","onDragStarted","onTagDropped","dragProvider","isTagValid","animationMetadata","identifyBy","hasCustomTemplate","TagInputComponent_div_4_Template","TagInputComponent_div_6_p_1_Template","error_r17","TagInputComponent_div_6_Template","HighlightPipe","escape","KEY_PRESS_ACTIONS","PREV","DragProvider","dropping","setDraggedItem","getDraggedItem","setSender","setReceiver","indexDragged","indexDropped","onAddingRequested","separatorKeys","secondaryPlaceholder","onlyFromAutocomplete","errorMessages","onTextChangeDebounce","inputId","clearOnBlur","hideForm","addOnBlur","addOnPaste","pasteSplitPattern","blinkIfDupe","allowDupes","modelAsStrings","trimTags","onRemoving","onAdding","showDropdownIfEmpty","minimumTextLength","limitItemsTo","keepOpen","matchingFn","targetValue","OptionsProvider","TagInputAccessor","_onChangeCallback","_onTouchedCallback","getItemValue","fromDropdown","getItemDisplay","getItemsWithout","listenerType","TagInputForm","onKeyup","inputTextChange","inputText","isInputFocused","getErrorMessages","getElementPosition","onKeyUp","TagRipple","DeleteIconComponent","isChrome","TagComponent","cdRef","onTagEdited","moving","blink","toggleEditMode","activateEditMode","isRippleVisible","hasRipple","getContentEditableText","storeNewValue","setContentEditableText","getContentEditable","exists","hasId","canAddTag","TagInputDropdown","TagInputComponent","_autocompleteItems","maxItemsReached","getFormValue","hasMinimumText","getMatchingItems","shouldShow","shouldHide","autocompleteObservable","getItemsFromObservable","setItems","requestAdding","createTagModel","_x","resetItems","setLoadingState","populateItems","autocompleteItems","KEEP_OPEN","onTextChange","formValue","dupesAllowed","CUSTOM_ACCESSOR","onAdd","onValidationError","Wt","inputTextValue","appendTag","createTag","fromAutocomplete","dupe","findDupe","assertions","onPasteCallback","_ref2","resetInput","_x2","tabindexAttr","setUpKeypressListeners","setupSeparatorKeysListener","setUpInputKeydownListeners","setUpTextChangeSubscriber","setUpOnBlurSubscriber","setUpOnPasteListener","statusChanges$","isProgressBarVisible$","setAnimationMetadata","subscribeFn","first$1","giveupFocus","selectedTag","fireEvents","moveToTag","isFirstTag","isLastTag","onFormSubmit","applyFocus","displayAutocomplete","isDropping","isReceiver","changedElement","getTagIndex","getTagAtIndex","appendItem","statusUpdate","hasKeyCode","hasKey","debounceTime$1","filterFn","isFromAutocomplete","optionsProvider","withDefaults","Toast_button_0_Template","Toast_div_1_ng_container_2_Template","duplicatesCount","Toast_div_1_Template","titleClass","Toast_div_2_Template","messageClass","Toast_div_3_Template","Toast_div_4_Template","newestOnTop","BasePortalHost","ToastRef","_afterClosed","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","isInactive","afterActivate","onDuplicate","resetTimeout","ToastPackage","toastId","toastType","toastRef","_onTap","_onAction","triggerTap","tapToDismiss","onTap","triggerAction","TOAST_CONFIG","DomPortalHost","_hostDomElement","_portalHost","_paneElements","_createOverlayRef","getPaneElement","_createPortalHost","ToastrService","currentlyActive","toasts","toastrConfig","_preBuildNotification","applyConfig","toast","_findToast","activeToast","maxOpened","findDuplicate","resetOnDuplicate","countDuplicates","includeTitleDuplicates","onActivateTick","_buildNotification","toastComponent","duplicate","resetTimeoutOnDuplicate","preventDuplicates","previousToastMessage","keepInactive","autoDismiss","sanitizedMessage","enableHtml","toastPackage","toastInjector","ins","onShown","onHidden","Toast","displayStyle","toastrService","toastClasses","easeTime","originalTimeout","toastClass","activateToast","sub1","sub2","sub3","intervalId","disableTimeOut","outsideTimeout","hideTime","progressBar","outsideInterval","updateProgress","progressAnimation","tapToast","stickAround","delayedHideToast","extendedTimeOut","runInsideAngular","DefaultGlobalConfig","provideToastr","asyncGeneratorStep","gen","_throw","propertyIsEnumerable","_arguments","fulfilled","rejected","throw","adopt","verb","fulfill","settle","__values","SuppressedError"],"sourceRoot":"webpack:///","sources":["./node_modules/@progress/kendo-charts/dist/es2015/common/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/add-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/remove-class.js","./node_modules/@progress/kendo-charts/dist/es2015/common/align-path-to-pixel.js","./node_modules/@progress/kendo-charts/dist/es2015/common/clockwise.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-charts/dist/es2015/common/convertable-to-number.js","./node_modules/@progress/kendo-charts/dist/es2015/common/cycleUp.js","./node_modules/@progress/kendo-charts/dist/es2015/common/cycleDown.js","./node_modules/@progress/kendo-charts/dist/es2015/common/cycleIndex.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-function.js","./node_modules/@progress/kendo-charts/dist/es2015/common/deep-extend.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-object.js","./node_modules/@progress/kendo-charts/dist/es2015/common/style-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-styles.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-spacing.js","./node_modules/@progress/kendo-charts/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-template.js","./node_modules/@progress/kendo-charts/dist/es2015/common/get-aria-template.js","./node_modules/@progress/kendo-charts/dist/es2015/common/getter.js","./node_modules/@progress/kendo-charts/dist/es2015/common/grep.js","./node_modules/@progress/kendo-charts/dist/es2015/common/has-classes.js","./node_modules/@progress/kendo-charts/dist/es2015/common/hash-map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/in-array.js","./node_modules/@progress/kendo-charts/dist/es2015/common/interpolate-value.js","./node_modules/@progress/kendo-charts/dist/es2015/common/instance-observer.js","./node_modules/@progress/kendo-charts/dist/es2015/common/map.js","./node_modules/@progress/kendo-charts/dist/es2015/common/mousewheel-delta.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/log-to-console.js","./node_modules/@progress/kendo-charts/dist/es2015/drawing-utils.js","./node_modules/@progress/kendo-charts/dist/es2015/common/font-loader.js","./node_modules/@progress/kendo-charts/dist/es2015/common/set-default-options.js","./node_modules/@progress/kendo-charts/dist/es2015/common/render-icon.js","./node_modules/@progress/kendo-charts/dist/es2015/common/is-plain-object.js","./node_modules/@progress/kendo-charts/dist/es2015/common/sparse-array-limits.js","./node_modules/@progress/kendo-charts/dist/es2015/common/find.js","./node_modules/@progress/kendo-charts/dist/es2015/common/element-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/common/auto-text-color.js","./node_modules/@progress/kendo-charts/dist/es2015/common/create-hash-set.js","./node_modules/@progress/kendo-charts/dist/es2015/common/default-error-handler.js","./node_modules/@progress/kendo-charts/dist/es2015/common/has-own-property.js","./node_modules/@progress/kendo-charts/dist/es2015/common/matrix.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-major-unit.js","./node_modules/@progress/kendo-charts/dist/es2015/core/point.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/ring.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-builder.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/easing-functions.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/animations/animation.js","./node_modules/@progress/kendo-charts/dist/es2015/core/chart-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/box-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/add-accessibility-attributes-to-visual.js","./node_modules/@progress/kendo-charts/dist/es2015/core/shape-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/gradients.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/box-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/core/root-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/float-element.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/rect-to-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/text-box.js","./node_modules/@progress/kendo-charts/dist/es2015/core/title.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis-label.js","./node_modules/@progress/kendo-charts/dist/es2015/core/note.js","./node_modules/@progress/kendo-charts/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/format-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/chart-service.js","./node_modules/@progress/kendo-charts/dist/es2015/services/dom-events-builder.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-tick.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/create-axis-grid-line.js","./node_modules/@progress/kendo-charts/dist/es2015/core/axis.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/absolute-date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-ticks.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/add-duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/start-of-week.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/floor-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/ceil-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-comparer.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-diff.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/to-time.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-equals.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/date-index.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/duration.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-date.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/parse-dates.js","./node_modules/@progress/kendo-charts/dist/es2015/date-utils/first-day.js","./node_modules/@progress/kendo-charts/dist/es2015/core/category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/floor.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/ceil.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/limit-coordinate.js","./node_modules/@progress/kendo-charts/dist/es2015/core/numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-min.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/auto-axis-max.js","./node_modules/@progress/kendo-charts/dist/es2015/core/date-value-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/grid-lines-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-category-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/polar-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/mixins/radar-numeric-axis-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-numeric-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/radar-logarithmic-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/core/curve-processor.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/find-axis-by-name.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/api-elements/chart-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/count-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/get-field.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/series-binder.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-range-calculator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/error-bar-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/categorical-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/any-has-z-index.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/append-if-not-null.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/are-numbers.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/segment-visible.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/bind-segments.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/categories-count.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/equals-ignore-case.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/eval-options.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/filter-series-by-type.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/parse-date-category.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-gradient-overlay.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/has-value.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/is-date-axis.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/single-item-or-array.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/utils/create-out-of-range-points.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/categorical-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/point-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/note-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/core/utils/guid.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/step-line-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/spline-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/line-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/clip-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/clip-animation-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/line-chart/line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/step-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/spline-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/area-chart/area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/axis-group-range-tracker.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-label.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/accessibility-attributes-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/stack-wrap.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bar-chart/bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/candlestick-chart/candlestick-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/vertical-box-plot.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/box-plot-chart/box-plot-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/error-bars/scatter-error-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bubble-chart/bubble-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/target.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/bullet-chart/bullet-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/base-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/crosshair/crosshair.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart-container.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pane.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/plotarea-events-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/series-aggregator.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/aggregates/default-aggregates.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-bar-chart/range-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-line-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/spline-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/step-range-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/range-area-chart/range-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/ohlc-chart/ohlc-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/waterfall-chart/waterfall-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/trendline-factory.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/calculate-slope.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/check-all-positive.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/get-trendline-data.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/calculate-moving-average.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/calculate-polynomial.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/trendline-registry.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/exponential-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/linear-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/logarithmic-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/moving-average.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/polynomial-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/power-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/categorical-plotarea.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/html-encode.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface-factory.js","./node_modules/@progress/kendo-drawing/dist/es2015/surface.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/highlight.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/accept-key.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/to-chart-axis-ranges.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/pannable.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/zoom-selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pan-and-zoom/mousewheel-zoom.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/align-start-reverse.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/layout.js","./node_modules/@progress/kendo-drawing/dist/es2015/alignment/translate-to-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item-marker.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item-line-area.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item-line.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item-square.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend-item.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/legend/legend.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/plotarea-factory.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/selection.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/tooltip/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bar-chart-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/bubble-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/fade-in-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/animations/pie-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/scatter-charts/scatter-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/get-scatter-trendline-data.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-value-getter.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/x-value-limits.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-trendline-registry.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-exponential-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-linear-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-logarithmic-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-moving-average.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-polynomial-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/trendlines/scatter-power-trendline.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/xy-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/mixins/pie-chart-mixin.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/pie-chart/pie-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/pie-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/donut-chart/donut-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea-base.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-scatter-chart/polar-scatter-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-line-chart/polar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/spline-polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/polar-area-chart/polar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/polar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-line-chart/radar-line-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/spline-radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-area-chart/radar-area-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-cluster-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/layout/radar-stack-layout.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/radar-bar-chart/radar-bar-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/radar-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-segment.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/funnel-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/funnel-chart/pyramid-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-point.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/heatmap-chart.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/heatmap-chart/color-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/heatmap-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/register-charts.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/donut-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/plotarea/funnel-plotarea.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/chart.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/shared-tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/sparkline/sparkline.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/fade-out-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator-hint.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/stock/stock-chart.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/arc.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/pad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/build-label-element.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/get-range.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/utils/unpad.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/arrow-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/bar-linear-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/linear/linear-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/radial/radial-gauge.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/arc-scale.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer-animation.js","./node_modules/@progress/kendo-charts/dist/es2015/gauges/arc/range-pointer.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code11.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code39-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/postnet.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code128.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/msi.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean13.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/ean8.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/main.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/encodings/code93-extended.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/surface-size.js","./node_modules/@progress/kendo-charts/dist/es2015/barcode/barcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/free-cell-visitor.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding-result.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/iso-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoding.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/qr-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/data-mode-instances.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/data-modes/byte-data-mode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/encoders/utf8-encoder.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/encodings/version-codewords.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode.js","./node_modules/@progress/kendo-charts/dist/es2015/qrcode/qrcode-validator.js","./node_modules/@progress/kendo-charts/dist/es2015/map/datums.js","./node_modules/@progress/kendo-charts/dist/es2015/map/location.js","./node_modules/@progress/kendo-charts/dist/es2015/map/crs.js","./node_modules/@progress/kendo-charts/dist/es2015/map/utils.js","./node_modules/@progress/kendo-charts/dist/es2015/common/observable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/attribution.js","./node_modules/@progress/kendo-charts/dist/es2015/map/navigator.js","./node_modules/@progress/kendo-charts/dist/es2015/common/keys.js","./node_modules/@progress/kendo-charts/dist/es2015/map/zoom.js","./node_modules/@progress/kendo-charts/dist/es2015/map/extent.js","./node_modules/@progress/kendo-charts/dist/es2015/map/constants.js","./node_modules/@progress/kendo-charts/dist/es2015/map/tooltip/tooltip.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/layer.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/tile.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/draggable.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/shape.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/bubble.js","./node_modules/@progress/kendo-charts/dist/es2015/map/layers/marker.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/fx.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/user-events.js","./node_modules/@progress/kendo-charts/dist/es2015/map/scroller/scroller.js","./node_modules/@progress/kendo-charts/dist/es2015/map/map.js","./node_modules/@progress/kendo-charts/dist/es2015/services/map-service.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/calculation.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/element.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/node.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/link.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/label.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/title.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/legend.js","./node_modules/@progress/kendo-charts/dist/es2015/sankey/sankey.js","./node_modules/@progress/kendo-charts/dist/es2015/chart/base-theme.js","./node_modules/@progress/kendo-common/dist/es2015/util.js","./node_modules/@progress/kendo-common/dist/es2015/support.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/field-list.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/getter.js","./node_modules/@progress/kendo-common/dist/es2015/accessors/setter.js","./node_modules/@progress/kendo-data-query/dist/es2015/utils.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","./node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","./node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","./node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","./node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","./node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","./node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","./node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","./node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","./node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","./node_modules/@progress/kendo-draggable/dist/es2015/main.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/group-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-root.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/quad-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/search/shapes-quad-tree.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/utils/render-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/arc-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/circle-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/image-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/multi-path-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/rect-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/text-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/promise-all.js","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/surface-cursor.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/animation-frame.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/class.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/named-colors.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/color/parse-color.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/support.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/throttle.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/base-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/has-observers.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/options-store.js","./node_modules/@progress/kendo-drawing/dist/es2015/common/observable.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-scale.js","./node_modules/@progress/kendo-drawing/dist/es2015/core/surface.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-padding.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close-or-less.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/arc.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersection.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/close.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/ellipse-extreme-angles.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/line-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/is-out-of-end-point.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/calculate-curve-at.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/to-cubic-polynomial.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/complex-number.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/solve-cubic-equation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/has-roots-in-range.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/segment.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/math/curve-intersections-count.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/size.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/to-matrix.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transformation.js","./node_modules/@progress/kendo-drawing/dist/es2015/geometry/transform.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/stops-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-options.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient-stop.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/linear-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/gradients/radial-gradient.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/measurable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/paintable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/traversable.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-accessors.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-geometry.js","./node_modules/@progress/kendo-drawing/dist/es2015/mixins/with-points.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/circle.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/element.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/group.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/image.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/geometry-elements-array.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/points-to-curve.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/shape-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/parsing/parse-path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/path.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/text.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/utils/elements-clippend-bounding-box.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node-map.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-stop-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/linear-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/radial-gradient-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/clip-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/definition-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/root-node.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-all-attributes.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-attribute.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-style.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/utils/render-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/lru-cache.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/text-metrics.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/measure-text.js","./node_modules/@progress/kendo-drawing/dist/es2015/text-metrics/util.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/append.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/bind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/constants.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/create-promise.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/defined.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/definition-id.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/deg.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-offset.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-size.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/element-styles.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-base64.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/encode-utf.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-coordinates.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/event-element.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/is-transparent.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/last.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/limit-value.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/now.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/rad.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/round.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/unbind-events.js","./node_modules/@progress/kendo-drawing/dist/es2015/util/value-or-default.js","./node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-string.js","./node_modules/@progress/kendo-intl/dist/es2015/error-details.js","./node_modules/@progress/kendo-intl/dist/es2015/errors.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/info.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/default-data.js","./node_modules/@progress/kendo-intl/dist/es2015/common/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load-numbers.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load-dates.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/territory.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load-units.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/load.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/date-field-name.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/date-format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/parse-range-date.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/currency.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/first-day.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/weekend-range.js","./node_modules/@progress/kendo-intl/dist/es2015/cldr/number-symbols.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-negative-zero.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/group-integer.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/is-currency-style.js","./node_modules/@progress/kendo-intl/dist/es2015/common/pad.js","./node_modules/@progress/kendo-intl/dist/es2015/common/round.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/standard-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/utils.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/custom-number-format.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-options.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/format-number.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-number.js","./node_modules/@progress/kendo-intl/dist/es2015/numbers/parse-number.js","./node_modules/@progress/kendo-intl/dist/es2015/common/format-string.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-pattern.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/date-name-type.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-names.js","./node_modules/@progress/kendo-intl/dist/es2015/common/is-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/constants.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/format-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/time-utils.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/parse-date.js","./node_modules/@progress/kendo-intl/dist/es2015/dates/split-date-format.js","./node_modules/@progress/kendo-intl/dist/es2015/format.js","./node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","./node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/intl-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align-point.js","./node_modules/@progress/kendo-popup-common/dist/es2015/align.js","./node_modules/@progress/kendo-popup-common/dist/es2015/add-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/owner-document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window.js","./node_modules/@progress/kendo-popup-common/dist/es2015/document.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scrollbar-width.js","./node_modules/@progress/kendo-popup-common/dist/es2015/window-viewport.js","./node_modules/@progress/kendo-popup-common/dist/es2015/bounding-offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parents.js","./node_modules/@progress/kendo-popup-common/dist/es2015/scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/element-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position-with-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/offset-parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/parent-scroll-position.js","./node_modules/@progress/kendo-popup-common/dist/es2015/remove-scroll.js","./node_modules/@progress/kendo-popup-common/dist/es2015/collision.js","./node_modules/@progress/kendo-popup-common/dist/es2015/restrict-to-view.js","./node_modules/@progress/kendo-popup-common/dist/es2015/siblings.js","./node_modules/@progress/kendo-popup-common/dist/es2015/sibling-container.js","./node_modules/@progress/kendo-popup-common/dist/es2015/utils.js","./node_modules/@progress/kendo-svg-icons/dist/index.es.js","./node_modules/@progress/pako-esm/dist/pako-esm2015.js","./node_modules/hammerjs/hammer.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/skipWhile.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/not.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./src/app/Services/common.service.ts","./src/app/Manager/documentPublishManager.ts","./src/app/Services/document-publish-manager.service.ts","./node_modules/@angular/cdk/fesm2022/accordion.mjs","./node_modules/@angular/cdk/fesm2022/clipboard.mjs","./node_modules/@angular/cdk/fesm2022/drag-drop.mjs","./node_modules/@angular/cdk/fesm2022/listbox.mjs","./node_modules/@angular/cdk/fesm2022/stepper.mjs","./node_modules/@angular/cdk/fesm2022/table.mjs","./node_modules/@angular/cdk/fesm2022/tree.mjs","./node_modules/@angular/material/fesm2022/form-field.mjs","./node_modules/@angular/material/fesm2022/autocomplete.mjs","./node_modules/@angular/material/fesm2022/badge.mjs","./node_modules/@angular/material/fesm2022/bottom-sheet.mjs","./node_modules/@angular/material/fesm2022/button-toggle.mjs","./node_modules/@angular/material/fesm2022/card.mjs","./node_modules/@angular/material/fesm2022/checkbox.mjs","./node_modules/@angular/material/fesm2022/chips.mjs","./node_modules/@angular/material/fesm2022/stepper.mjs","./node_modules/@angular/cdk/fesm2022/text-field.mjs","./node_modules/@angular/material/fesm2022/input.mjs","./node_modules/@angular/material/fesm2022/datepicker.mjs","./node_modules/@angular/material/fesm2022/divider.mjs","./node_modules/@angular/material/fesm2022/expansion.mjs","./node_modules/@angular/material/fesm2022/grid-list.mjs","./node_modules/@angular/material/fesm2022/list.mjs","./node_modules/@angular/material/fesm2022/menu.mjs","./node_modules/@angular/material/fesm2022/select.mjs","./node_modules/@angular/material/fesm2022/tooltip.mjs","./node_modules/@angular/material/fesm2022/paginator.mjs","./node_modules/@angular/material/fesm2022/progress-bar.mjs","./node_modules/@angular/material/fesm2022/progress-spinner.mjs","./node_modules/@angular/material/fesm2022/radio.mjs","./node_modules/@angular/material/fesm2022/sidenav.mjs","./node_modules/@angular/material/fesm2022/slider.mjs","./node_modules/@angular/material/fesm2022/slide-toggle.mjs","./node_modules/@angular/material/fesm2022/snack-bar.mjs","./node_modules/@angular/material/fesm2022/sort.mjs","./node_modules/@angular/material/fesm2022/table.mjs","./node_modules/@angular/material/fesm2022/tabs.mjs","./node_modules/@angular/material/fesm2022/toolbar.mjs","./node_modules/@angular/material/fesm2022/tree.mjs","./node_modules/@angular/cdk/fesm2022/menu.mjs","./src/app/material.module.ts","./src/app/app-routing.module.ts","./src/app/app.component.html","./src/app/app.component.ts","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./src/app/Modules/header/header.module.ts","./src/app/Modules/sidebar/sidebar.module.ts","./src/app/Modules/mainbody/mainbody.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/@angular/cdk/fesm2022/dialog.mjs","./node_modules/@angular/cdk/fesm2022/keycodes.mjs","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/cdk/fesm2022/overlay.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/@angular/cdk/fesm2022/portal.mjs","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/@angular/localize/fesm2022/localize.mjs","./node_modules/@angular/localize/fesm2022/init.mjs","./node_modules/@angular/material/fesm2022/button.mjs","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/material/fesm2022/dialog.mjs","./node_modules/@angular/material/fesm2022/icon.mjs","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2022/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@progress/kendo-angular-buttons/fesm2020/progress-kendo-angular-buttons.mjs","./node_modules/@progress/kendo-angular-charts/fesm2020/progress-kendo-angular-charts.mjs","./node_modules/@progress/kendo-drawing/dist/es2015/canvas/export-image.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-svg.js","./node_modules/@progress/kendo-drawing/dist/es2015/svg/export-group.js","./node_modules/@progress/kendo-angular-common/fesm2020/progress-kendo-angular-common.mjs","./node_modules/@progress/kendo-date-math/dist/es2015/clone-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/adjust-dst.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-days.js","./node_modules/@progress/kendo-date-math/dist/es2015/create-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/get-date.js","./node_modules/@progress/kendo-date-math/dist/es2015/is-equal.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/normalize-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-decade-of-century.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-year-of-decade.js","./node_modules/@progress/kendo-date-math/dist/es2015/set-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/last-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-centuries.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-decades.js","./node_modules/@progress/kendo-date-math/dist/es2015/add-weeks.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-day-of-month.js","./node_modules/@progress/kendo-date-math/dist/es2015/direction.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-months.js","./node_modules/@progress/kendo-date-math/dist/es2015/first-month-of-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/duration-in-years.js","./node_modules/@progress/kendo-date-math/dist/es2015/day.enum.js","./node_modules/@progress/kendo-date-math/dist/es2015/prev-day-of-week.js","./node_modules/@progress/kendo-date-math/dist/es2015/week-in-year.js","./node_modules/@progress/kendo-date-math/dist/es2015/constants.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/mask.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/constants.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/dateinput/utils.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/utils.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/dateobject.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/keycode.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/observable.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/dateinput/interaction-mode.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/dateinput/dateinput.js","./node_modules/@progress/kendo-dateinputs-common/dist/es2015/common/key.js","./node_modules/@progress/kendo-angular-dateinputs/fesm2020/progress-kendo-angular-dateinputs.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@progress/kendo-angular-dialog/fesm2020/progress-kendo-angular-dialog.mjs","./node_modules/@progress/kendo-angular-treeview/fesm2020/progress-kendo-angular-treeview.mjs","./node_modules/@progress/kendo-angular-dropdowns/fesm2020/progress-kendo-angular-dropdowns.mjs","./node_modules/rxjs/dist/esm/internal/operators/partition.js","./node_modules/orderedmap/dist/index.js","./node_modules/prosemirror-model/dist/index.js","./node_modules/prosemirror-transform/dist/index.js","./node_modules/prosemirror-state/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/constants.js","./node_modules/@progress/kendo-editor-common/dist/es2015/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/DOMSerializer.js","./node_modules/@progress/kendo-editor-common/dist/es2015/source.js","./node_modules/@progress/kendo-editor-common/dist/es2015/mark.js","./node_modules/@progress/kendo-editor-common/dist/es2015/inline-style.js","./node_modules/@progress/kendo-editor-common/dist/es2015/link.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockNode.js","./node_modules/@progress/kendo-editor-common/dist/es2015/align.js","./node_modules/@progress/kendo-editor-common/dist/es2015/cleanFormatting.js","./node_modules/prosemirror-schema-list/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/list-settings.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/indent-rules.js","./node_modules/prosemirror-commands/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/blockquote.js","./node_modules/@progress/kendo-editor-common/dist/es2015/indent.js","./node_modules/@progress/kendo-editor-common/dist/es2015/lists.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/align-rules.js","./node_modules/prosemirror-view/dist/index.js","./node_modules/w3c-keyname/index.js","./node_modules/prosemirror-keymap/dist/index.js","./node_modules/prosemirror-tables/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/schema.js","./node_modules/rope-sequence/dist/index.js","./node_modules/prosemirror-history/dist/index.js","./node_modules/prosemirror-inputrules/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/commands.js","./node_modules/@progress/kendo-editor-common/dist/es2015/config/keymap.js","./node_modules/@progress/kendo-editor-common/dist/es2015/listConvert.js","./node_modules/@progress/kendo-editor-common/dist/es2015/paste.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/csp-fix.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/highlight.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/resize-utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/image-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/caret-color.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-view.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/utils.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/column-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/table-resize.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/row-resize.js","./node_modules/prosemirror-gapcursor/dist/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/table.js","./node_modules/@progress/kendo-angular-editor/fesm2020/progress-kendo-angular-editor.mjs","./node_modules/@progress/kendo-editor-common/dist/es2015/text.js","./node_modules/@progress/kendo-editor-common/dist/es2015/image.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/table-resize/index.js","./node_modules/@progress/kendo-editor-common/dist/es2015/plugins/placeholder.js","./node_modules/@progress/kendo-ooxml/dist/es2015/services/template-service.js","./node_modules/@progress/kendo-ooxml/dist/es2015/utils/getter.js","./node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","./node_modules/@progress/kendo-angular-excel-export/fesm2020/progress-kendo-angular-excel-export.mjs","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/@progress/kendo-draggable-common/dist/es2015/algorithms/intersect.js","./node_modules/@progress/kendo-draggable-common/dist/es2015/utils/index.js","./node_modules/@progress/kendo-draggable-common/dist/es2015/drag-n-drop.js","./node_modules/@progress/kendo-angular-utils/fesm2020/progress-kendo-angular-utils.mjs","./node_modules/@progress/kendo-draggable-common/dist/es2015/auto-scroll.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/utils.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/ttf.js","./node_modules/@progress/kendo-drawing/dist/es2015/pdf/core.js","./node_modules/@progress/kendo-drawing/dist/es2015/shapes/rect.js","./node_modules/@progress/kendo-drawing/dist/es2015/html/core.js","./node_modules/@progress/kendo-angular-grid/fesm2020/progress-kendo-angular-grid.mjs","./node_modules/rxjs/dist/esm/internal/operators/bufferCount.js","./node_modules/@progress/kendo-angular-icons/fesm2020/progress-kendo-angular-icons.mjs","./node_modules/@progress/kendo-angular-inputs/fesm2020/progress-kendo-angular-inputs.mjs","./node_modules/@progress/kendo-angular-intl/fesm2020/progress-kendo-angular-intl.mjs","./node_modules/@progress/kendo-angular-l10n/fesm2020/progress-kendo-angular-l10n.mjs","./node_modules/@progress/kendo-angular-label/fesm2020/progress-kendo-angular-label.mjs","./node_modules/@progress/kendo-angular-progressbar/fesm2020/progress-kendo-angular-progressbar.mjs","./node_modules/@progress/kendo-angular-layout/fesm2020/progress-kendo-angular-layout.mjs","./node_modules/@progress/kendo-angular-navigation/fesm2020/progress-kendo-angular-navigation.mjs","./node_modules/@progress/kendo-angular-popup/fesm2020/progress-kendo-angular-popup.mjs","./node_modules/@progress/kendo-angular-scrollview/fesm2020/progress-kendo-angular-scrollview.mjs","./node_modules/@progress/kendo-angular-toolbar/fesm2020/progress-kendo-angular-toolbar.mjs","./node_modules/@progress/kendo-angular-tooltip/fesm2020/progress-kendo-angular-tooltip.mjs","./node_modules/@progress/kendo-licensing/dist/index.mjs","./node_modules/hsp-portal-web-core-15/fesm2020/hsp-portal-web-core-15.mjs","./node_modules/ng2-material-dropdown/fesm2020/ng2-material-dropdown.mjs","./node_modules/ngx-chips/fesm2020/ngx-chips.mjs","./node_modules/ngx-toastr/fesm2020/ngx-toastr.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["export const ARC = \"arc\";\nexport const ARROW_UP = \"ArrowUp\";\nexport const ARROW_DOWN = \"ArrowDown\";\nexport const ARROW_LEFT = \"ArrowLeft\";\nexport const ARROW_RIGHT = \"ArrowRight\";\nexport const TAB = \"Tab\";\nexport const ARIA_ACTIVE_DESCENDANT = \"aria-activedescendant\";\nexport const AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport const BLACK = \"#000\";\nexport const BOTTOM = \"bottom\";\nexport const CENTER = \"center\";\nexport const CIRCLE = \"circle\";\nexport const COORD_PRECISION = 3;\nexport const CROSS = \"cross\";\nexport const DATE = \"date\";\nexport const DEFAULT_FONT = \"12px sans-serif\";\nexport const DEFAULT_HEIGHT = 400;\nexport const DEFAULT_PRECISION = 10;\nexport const DEFAULT_WIDTH = 600;\nexport const END = \"end\";\nexport const FORMAT_REGEX = /\\{\\d+:?/;\nexport const HEIGHT = \"height\";\nexport const HIGHLIGHT_ZINDEX = 100;\nexport const INSIDE = \"inside\";\nexport const INHERIT = \"inherit\";\nexport const LEFT = \"left\";\nexport const MAX_VALUE = Number.MAX_VALUE;\nexport const MIN_VALUE = -Number.MAX_VALUE;\nexport const NONE = \"none\";\nexport const NOTE_CLICK = \"noteClick\";\nexport const NOTE_HOVER = \"noteHover\";\nexport const NOTE_LEAVE = \"noteLeave\";\nexport const OBJECT = \"object\";\nexport const OUTSIDE = \"outside\";\nexport const RIGHT = \"right\";\nexport const ROUNDED_RECT = \"roundedRect\";\nexport const START = \"start\";\nexport const STRING = \"string\";\nexport const TOP = \"top\";\nexport const TRIANGLE = \"triangle\";\nexport const SQUARE = \"square\";\nexport const RECT = \"rect\";\nexport const VALUE = \"value\";\nexport const WHITE = \"#fff\";\nexport const WIDTH = \"width\";\nexport const X = \"x\";\nexport const Y = \"y\";\nexport const DEFAULT_SERIES_OPACITY = 1;\nexport const POINTER = \"pointer\";\nexport const HORIZONTAL = \"horizontal\";\nexport const VERTICAL = \"vertical\";\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n const classArray = isArray(classes) ? classes : [ classes ];\n\n for (let idx = 0; idx < classArray.length; idx++) {\n const className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","const SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n let offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (let i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function cycleUp(index, count) {\n return (index + 1) % count;\n}\n","export default function cycleDown(index, count) {\n let result = index - 1;\n\n return result < 0 ? count - 1 : result;\n}\n","export default function cycleIndex(index, length) {\n if (length === 1 || (index % length) === 0) {\n return 0;\n }\n\n if (index < 0) {\n return length + (index % length);\n } else if (index >= length) {\n return index % length;\n }\n\n return index;\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nconst OBJECT = \"object\";\nconst UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (let property in source) {\n let propValue = source[property];\n let propType = typeof propValue;\n\n let propInit;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n let destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n}\n\nexport default function deepExtend(destination) {\n const length = arguments.length;\n\n for (let i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n\n return destination;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nconst SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n const stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n const result = {};\n const style = window.getComputedStyle(element);\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (let field in styles) {\n element.style[field] = styleValue(styles[field]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing = 0) {\n const spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","let current = {\n compile: function(template) {\n return template;\n }\n};\n\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static compile(template, options) {\n return current.compile(template, options);\n }\n}\n\nexport default TemplateService;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options = {}) {\n let template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options = {}) {\n let ariaTemplate;\n if (options.ariaTemplate) {\n options.ariaTemplate = ariaTemplate = TemplateService.compile(options.ariaTemplate);\n } else if (isFunction(options.ariaContent)) {\n ariaTemplate = options.ariaContent;\n }\n\n return ariaTemplate;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n const fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function grep(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n const names = classNames.split(\" \");\n for (let idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}\n","// TODO: Remove and replace with Map/WeakMap.\nexport default class HashMap {\n constructor() {\n this._map = new Map();\n }\n\n get(key) {\n return this._map.get(key);\n }\n\n set(key, value) {\n this._map.set(key, value);\n }\n}\n","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nconst TRIGGER = 'trigger';\n\nclass InstanceObserver {\n constructor(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n }\n\n trigger(name, args) {\n const { observer, handlerMap } = this;\n let isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n }\n\n callObserver(fnName, ...args) {\n return this.observer[fnName].apply(this.observer, args);\n }\n\n requiresHandlers(names) {\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (let idx = 0; idx < names.length; idx++) {\n if (this.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n}\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n const length = array.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n let value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n let delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n const console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nconst {\n append,\n bindEvents,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n} = drawing.util;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","import { logToConsole } from '../drawing-utils';\n\nclass FontLoader {\n static fetchFonts(options, fonts, state = { depth: 0 }) {\n const MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n const value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n }\n\n static loadFonts(fonts, callback) {\n let promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n\n static preloadFonts(options, callback) {\n const fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n }\n}\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n const proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import isObject from './is-object';\nimport isPlainObject from './is-plain-object';\nimport isString from './is-string';\nimport deepExtend from './deep-extend';\nimport setDefaultOptions from './set-default-options';\nimport addClass from './add-class';\nimport removeClass from './remove-class';\n\nconst KICON = 'k-icon';\nconst KI_PREFFIX = 'k-i-';\nconst KSVGICON = 'k-svg-icon';\nconst KSVG_PREFFIX = 'k-svg-i-';\n\nclass HTMLBaseIcon {\n constructor(element, options) {\n this.element = element;\n this.options = deepExtend({}, this.options, options);\n\n this.wrapper();\n }\n\n wrapper() {\n this.addClasses();\n }\n\n addClasses() {\n }\n\n html() {\n return this.element.outerHTML;\n }\n}\n\nsetDefaultOptions(HTMLBaseIcon, {\n name: '',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n});\n\nclass HTMLFontIcon extends HTMLBaseIcon {\n constructor(element, options) {\n super(element, options);\n }\n\n wrapper() {\n // Find if there is an existing k-i- class appended to the element.\n let currentIconClass = this.element.className.split(\" \").find(x => x.startsWith(KI_PREFFIX));\n let className = this.options.icon ? `${this.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX}${this.options.icon}` : \"\";\n\n this._className = className;\n\n addClass(this.element, KICON);\n removeClass(this.element, currentIconClass); // Remove any existing icons.\n addClass(this.element, className);\n addClass(this.element, this.options.iconClass || '');\n\n super.wrapper();\n }\n}\n\nsetDefaultOptions(HTMLFontIcon, {\n name: 'HTMLFontIcon',\n icon: null\n});\n\nclass HTMLSvgIcon extends HTMLBaseIcon {\n constructor(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.innerHTML = \"\";\n\n super(element, options);\n }\n\n wrapper() {\n let icon = this.options.icon;\n let iconClass = this.options.iconClass;\n let currentIconClass = this.element.className.split(\" \").find(x => x.startsWith(KSVG_PREFFIX));\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n const regex = /k-i-(\\w+(?:-\\w+)*)/;\n let iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (isString(icon)) {\n icon = icon.replace(\"k-i-\", \"\").replace(/-./g, x => x[1].toUpperCase());\n icon = this.options.svgIcons[icon] || this.options.svgIcons[`${icon}Icon`];\n }\n\n let className = icon && icon.name ? `${KSVG_PREFFIX}${icon.name}` : \"\";\n this._className = className;\n\n addClass(this.element, KSVGICON);\n removeClass(this.element, currentIconClass);\n addClass(this.element, className);\n addClass(this.element, iconClass || \"\");\n this.element.setAttribute(\"aria-hidden\", \"true\");\n\n if (icon && isPlainObject(icon)) {\n let svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgElement.setAttribute(\"viewBox\", icon.viewBox || \"\");\n svgElement.setAttribute(\"focusable\", \"false\");\n svgElement.innerHTML = icon.content || \"\";\n\n this.element.appendChild(svgElement);\n }\n\n super.wrapper();\n }\n}\n\nsetDefaultOptions(HTMLSvgIcon, {\n name: 'HTMLSvgIcon',\n icon: null,\n svgIcons: {}\n});\n\nconst ICON_TYPES = {\n 'svg': HTMLSvgIcon,\n 'font': HTMLFontIcon\n};\n\nexport default function renderIcon(iconElement, iconOptions) {\n let element = iconElement;\n let options = iconOptions;\n\n if (!element\n || (isObject(element) && !(element instanceof HTMLElement))\n || isString(element)) {\n options = element;\n element = document.createElement(\"span\");\n }\n\n if (isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!options.type) {\n options.type = 'svg';\n }\n\n if (!ICON_TYPES[options.type]) {\n return null;\n }\n\n return (new ICON_TYPES[options.type](element, options).html());\n}\n","export default function isPlainObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let idx = 0, length = arr.length; idx < length; idx++) {\n const value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n const item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nconst Matrix = geometry.Matrix;\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n const isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","const DELETED = {};\n\nclass LegacySet {\n constructor(values) {\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (let i = 0; i < this._values.length; i++) {\n this._index[this._values[i]] = i;\n }\n }\n\n values() {\n return this._values.filter(item => item !== DELETED);\n }\n\n has(value) {\n return this._index[value] !== undefined;\n }\n\n add(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n }\n\n delete(value) {\n const index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n }\n\n clear() {\n this._index = {};\n this._values = [];\n }\n\n get size() {\n return this._values.length;\n }\n}\n\nclass SetWrapper {\n constructor(values) {\n this._set = new Set(values);\n }\n\n values() {\n return Array.from(this._set);\n }\n\n has(value) {\n return this._set.has(value);\n }\n\n add(value) {\n this._set.add(value);\n }\n\n delete(value) {\n this._set.delete(value);\n }\n\n clear() {\n this._set.clear();\n }\n\n get size() {\n return this._set.size;\n }\n}\n\n// TODO: Drop LegacySet when removing support for IE10\nlet supportsSet = () => {\n let supported = false;\n\n if (typeof Set === 'function') {\n const set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","export default function hasOwnProperty(obj, property) {\n return Object.prototype.hasOwnProperty.call(obj, property);\n}\n","// Based on the implementation from kendo-spreadsheet-common/src/calc.js\nclass Matrix {\n constructor() {\n this.height = 0;\n this.width = 0;\n this.data = [];\n }\n\n clone() {\n const m = new Matrix();\n m.height = this.height;\n m.width = this.width;\n m.data = this.data.map(row => row.slice());\n return m;\n }\n\n get(row, col) {\n const line = this.data[row];\n const val = line ? line[col] : null;\n return val;\n }\n\n set(row, col, data) {\n let line = this.data[row];\n if (line == null) {\n line = this.data[row] = [];\n }\n line[col] = data;\n if (row >= this.height) {\n this.height = row + 1;\n }\n if (col >= this.width) {\n this.width = col + 1;\n }\n }\n\n each(f, includeEmpty) {\n for (let row = 0; row < this.height; ++row) {\n for (let col = 0; col < this.width; ++col) {\n let val = this.get(row, col);\n if (includeEmpty || val != null) {\n val = f(val, row, col);\n if (val !== undefined) {\n return val;\n }\n }\n }\n }\n }\n\n map(f, includeEmpty) {\n const m = new Matrix();\n this.each(function(el, row, col) {\n m.set(row, col, f(el, row, col));\n }, includeEmpty);\n return m;\n }\n\n transpose() {\n const m = new Matrix();\n this.each(function(el, row, col) {\n m.set(col, row, el);\n });\n return m;\n }\n\n unit(n) {\n this.width = this.height = n;\n const a = this.data = new Array(n);\n for (let i = n; --i >= 0;) {\n const row = a[i] = new Array(n);\n for (let j = n; --j >= 0;) {\n row[j] = i === j ? 1 : 0;\n }\n }\n return this;\n }\n\n multiply(b) {\n const a = this;\n const m = new Matrix();\n for (let row = 0; row < a.height; ++row) {\n for (let col = 0; col < b.width; ++col) {\n let s = 0;\n for (let i = 0; i < a.width; ++i) {\n const va = a.get(row, i);\n const vb = b.get(i, col);\n if (typeof va === \"number\" && typeof vb === \"number\") {\n s += va * vb;\n }\n }\n m.set(row, col, s);\n }\n }\n return m;\n }\n\n inverse() {\n const n = this.width;\n const m = this.augment(new Matrix().unit(n));\n const a = m.data;\n\n // Gaussian elimination\n // https://en.wikipedia.org/wiki/Gaussian_elimination#Finding_the_inverse_of_a_matrix\n\n // 1. Get zeros below main diagonal\n for (let k = 0; k < n; ++k) {\n const imax = argmax(k, n, function(i) { return a[i][k]; });\n if (!a[imax][k]) {\n return null; // singular matrix\n }\n if (k !== imax) {\n let tmp = a[k];\n a[k] = a[imax];\n a[imax] = tmp;\n }\n for (let i = k + 1; i < n; ++i) {\n for (let j = k + 1; j < 2 * n; ++j) {\n a[i][j] -= a[k][j] * a[i][k] / a[k][k];\n }\n a[i][k] = 0;\n }\n }\n\n // 2. Get 1-s on main diagonal, dividing by pivot\n for (let i = 0; i < n; ++i) {\n for (let f = a[i][i], j = 0; j < 2 * n; ++j) {\n a[i][j] /= f;\n }\n }\n\n // 3. Get zeros above main diagonal. Actually, we only care to compute the right side\n // here (that will be the inverse), so in the inner loop below we go while j >= n,\n // instead of j >= k.\n for (let k = n; --k >= 0;) {\n for (let i = k; --i >= 0;) {\n if (a[i][k]) {\n for (let j = 2 * n; --j >= n;) {\n a[i][j] -= a[k][j] * a[i][k];\n }\n }\n }\n }\n\n return m.slice(0, n, n, n);\n }\n\n augment(m) {\n const ret = this.clone();\n const n = ret.width;\n m.each(function(val, row, col) {\n ret.set(row, col + n, val);\n });\n return ret;\n }\n\n slice(row, col, height, width) {\n const m = new Matrix();\n for (let i = 0; i < height; ++i) {\n for (let j = 0; j < width; ++j) {\n m.set(i, j, this.get(row + i, col + j));\n }\n }\n return m;\n }\n}\n\nfunction argmax(start, end, f) {\n let max = f(start), pos = start;\n for (let i = start + 1; i < end; i++) {\n const v = f(start);\n if (v > max) {\n max = v;\n pos = start;\n }\n }\n return pos;\n}\n\nexport default Matrix;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n let diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n const scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n const relativeValue = round((diff / scale), DEFAULT_PRECISION);\n let scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nclass Point extends Class {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n equals(point) {\n return point && this.x === point.x && this.y === point.y;\n }\n\n rotate(center, degrees) {\n const theta = rad(degrees);\n const cosT = Math.cos(theta);\n const sinT = Math.sin(theta);\n const { x: cx, y: cy } = center;\n const { x, y } = this;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n }\n\n multiply(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n static onCircle(center, angle, radius) {\n const radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n }\n}\n\n\nexport default Point;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nclass Box extends Class {\n constructor(x1, y1, x2, y2) {\n super();\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n equals(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n }\n\n width() {\n return this.x2 - this.x1;\n }\n\n height() {\n return this.y2 - this.y1;\n }\n\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n }\n\n move(x, y) {\n const height = this.height();\n const width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n }\n\n wrap(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n }\n\n wrapPoint(point) {\n const arrayPoint = isArray(point);\n const x = arrayPoint ? point[0] : point.x;\n const y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n }\n\n snapTo(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n }\n\n alignTo(targetBox, anchor) {\n const height = this.height();\n const width = this.width();\n const axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n const offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n const targetCenter = targetBox.center();\n const center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n shrink(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n }\n\n expand(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n }\n\n pad(padding) {\n const spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n }\n\n unpad(padding) {\n const spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n }\n\n clone() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n }\n\n center() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n }\n\n containsPoint(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n }\n\n points() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n }\n\n getHash() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n }\n\n overlaps(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n }\n\n rotate(rotation) {\n let width = this.width();\n let height = this.height();\n const { x: cx, y: cy } = this.center();\n\n const r1 = rotatePoint(0, 0, cx, cy, rotation);\n const r2 = rotatePoint(width, 0, cx, cy, rotation);\n const r3 = rotatePoint(width, height, cx, cy, rotation);\n const r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n }\n\n toRect() {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n }\n\n hasSize() {\n return this.width() !== 0 && this.height() !== 0;\n }\n\n align(targetBox, axis, alignment) {\n const c1 = axis + 1;\n const c2 = axis + 2;\n const sizeFunc = axis === X ? WIDTH : HEIGHT;\n const size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n}\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n const theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nclass Ring extends Class {\n\n constructor(center, innerRadius, radius, startAngle, angle) {\n super();\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n clone() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n }\n\n middle() {\n return this.startAngle + this.angle / 2;\n }\n\n setRadius(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n }\n\n // TODO: Remove and replace with Point.onCircle\n point(angle, innerRadius) {\n const radianAngle = rad(angle);\n const ax = Math.cos(radianAngle);\n const ay = Math.sin(radianAngle);\n const radius = innerRadius ? this.innerRadius : this.radius;\n const x = round(this.center.x - (ax * radius), COORD_PRECISION);\n const y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n }\n\n adjacentBox(distance, width, height) {\n const sector = this.clone().expand(distance);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n const hw = width / 2;\n const hh = height / 2;\n const sa = Math.sin(rad(midAndle));\n const ca = Math.cos(rad(midAndle));\n let x = midPoint.x - hw;\n let y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n }\n\n containsPoint(p) {\n const center = this.center;\n const innerRadius = this.innerRadius;\n const radius = this.radius;\n const startAngle = this.startAngle;\n const endAngle = this.startAngle + this.angle;\n const dx = p.x - center.x;\n const dy = p.y - center.y;\n const vector = new Point(dx, dy);\n const startPoint = this.point(startAngle);\n const startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n const endPoint = this.point(endAngle);\n const endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n const dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n }\n\n getBBox() {\n const box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n const startAngle = round(this.startAngle % 360);\n const endAngle = round((startAngle + this.angle) % 360);\n const innerRadius = this.innerRadius;\n const allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n const startAngleIndex = allAngles.indexOf(startAngle);\n const endAngleIndex = allAngles.indexOf(endAngle);\n let angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (let i = 0; i < angles.length; i++) {\n let point = this.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n }\n\n expand(value) {\n this.radius += value;\n return this;\n }\n}\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nconst DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nclass ShapeBuilder extends Class {\n createRing(sector, options) {\n const startAngle = sector.startAngle + 180;\n let endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle === 0 || sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n const center = new geom.Point(sector.center.x, sector.center.y);\n const radius = Math.max(sector.radius, 0);\n const innerRadius = Math.max(sector.innerRadius, 0);\n const arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n const path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n const innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n}\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n let s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","import { Class } from '../common';\n\nlet instance;\n\nclass AnimationFactory extends Class {\n static get current() {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [];\n }\n\n register(name, type) {\n this._items.push({\n name: name,\n type: type\n });\n }\n\n create(element, options) {\n const items = this._items;\n let match;\n\n if (options && options.type) {\n const type = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n }\n}\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nclass Animation extends Class {\n static create(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n }\n\n get options() {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n }\n\n set options(value) {\n this._options = value;\n }\n\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n setup() {}\n step() {}\n\n play() {\n const options = this.options;\n const { duration, delay = 0 } = options;\n const easing = easingFunctions[options.easing];\n const start = now() + delay;\n const finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(() => {\n const loop = () => {\n if (this._stopped) {\n return;\n }\n\n const wallTime = now();\n\n const time = limitValue(wallTime - start, 0, duration);\n const position = time / duration;\n const easingPosition = easing(position, time, 0, 1, duration);\n\n this.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this.abort();\n }\n };\n\n loop();\n }, delay);\n }\n }\n\n abort() {\n this._stopped = true;\n }\n\n destroy() {\n this.abort();\n }\n}\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault, autoTextColor } from '../common';\n\nclass ChartElement extends Class {\n constructor(options) {\n super();\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n initUserOptions(options) {\n return options;\n }\n\n reflow(targetBox) {\n const children = this.children;\n let box;\n\n for (let i = 0; i < children.length; i++) {\n let currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n }\n\n destroy() {\n const children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n }\n\n getRoot() {\n const parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n }\n\n getSender() {\n const service = this.getService();\n if (service) {\n return service.sender;\n }\n }\n\n getService() {\n let element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n }\n\n translateChildren(dx, dy) {\n const children = this.children;\n const childrenCount = children.length;\n\n for (let i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n }\n\n append() {\n for (let i = 0; i < arguments.length; i++) {\n let item = arguments[i];\n this.children.push(item);\n item.parent = this;\n }\n }\n\n renderVisual() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n }\n\n addVisual() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n }\n\n renderChildren() {\n const children = this.children;\n const length = children.length;\n for (let i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n }\n\n createAnimation() {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n }\n\n appendVisual(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n }\n\n clipRoot() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n }\n\n stackRoot() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n }\n\n stackVisual(childVisual) {\n const zIndex = childVisual.options.zIndex || 0;\n const visuals = this.visual.children;\n const length = visuals.length;\n let pos;\n\n for (pos = 0; pos < length; pos++) {\n let sibling = visuals[pos];\n let here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n }\n\n traverse(callback) {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n let child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n }\n\n closest(match) {\n let element = this;\n let matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n }\n\n renderComplete() {}\n\n hasHighlight() {\n const options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false) || this.visible === false);\n }\n\n toggleHighlight(show, opacity) {\n const options = (this.options || {}).highlight || {};\n const customVisual = options.visual;\n let highlight = this._highlight;\n\n if (!highlight) {\n const highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: () => this.createHighlight(highlightOptions),\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n })\n );\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n }\n\n toggleFocusHighlight(show) {\n const options = ((this.options || {}).accessibility || {}).highlight || {};\n let focusHighlight = this._focusHighlight;\n\n if (!show && !focusHighlight) {\n return;\n }\n\n if (!focusHighlight) {\n const rootBackground = this.getRoot().options.background;\n const highlightColor = autoTextColor(rootBackground);\n const focusHighlightOptions = {\n fill: {\n opacity: options.opacity,\n color: options.color\n },\n stroke: Object.assign({}, {color: highlightColor}, options.border),\n zIndex: options.zIndex\n };\n\n focusHighlight = this._focusHighlight = this.createFocusHighlight(focusHighlightOptions);\n\n this.appendVisual(focusHighlight);\n }\n\n focusHighlight.visible(show);\n }\n\n createGradientOverlay(element, options, gradientOptions) {\n const overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n }\n\n createGradient(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n }\n\n supportsPointInactiveOpacity() {\n return true;\n }\n}\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nclass BoxElement extends ChartElement {\n constructor(options) {\n super(options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { width, height, shrinkToFit } = options;\n const hasSetSize = width && height;\n const margin = options.margin;\n const padding = options.padding;\n const borderWidth = options.border.width;\n let box;\n\n const reflowPaddingBox = () => {\n this.align(targetBox, X, options.align);\n this.align(targetBox, Y, options.vAlign);\n this.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n let contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n super.reflow(contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n const children = this.children;\n for (let i = 0; i < children.length; i++) {\n let item = children[i];\n item.reflow(item.box);\n }\n }\n\n align(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n }\n\n hasBox() {\n const options = this.options;\n return options.border.width || options.background;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n }\n\n visualStyle() {\n const options = this.options;\n const border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n}\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","export default function addAccessibilityAttributesToVisual(visual, accessibilityOptions) {\n if (accessibilityOptions) {\n visual.options.className = accessibilityOptions.className;\n visual.options.role = accessibilityOptions.role;\n visual.options.ariaLabel = accessibilityOptions.ariaLabel;\n visual.options.ariaRoleDescription = accessibilityOptions.ariaRoleDescription;\n visual.options.ariaChecked = accessibilityOptions.ariaChecked;\n }\n}\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\nimport addAccessibilityAttributesToVisual from './utils/add-accessibility-attributes-to-visual';\n\nclass ShapeElement extends BoxElement {\n\n constructor(options, pointData) {\n super(options);\n\n this.pointData = pointData;\n }\n\n getElement() {\n const { options, paddingBox: box } = this;\n const { type, rotation } = options;\n const center = box.center();\n const halfWidth = box.width() / 2;\n const halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n const style = this.visualStyle();\n let element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n const rect = box.toRect();\n if (type === ROUNDED_RECT) {\n const borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n }\n\n createElement() {\n const customVisual = this.options.visual;\n const pointData = this.pointData || {};\n let visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: () => this.getElement()\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n }\n\n visualOptions() {\n const options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n }\n\n createVisual() {\n this.visual = this.createElement();\n\n addAccessibilityAttributesToVisual(this.visual, this.options.accessibilityOptions);\n }\n}\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import { WHITE } from '../common/constants';\n\nconst LINEAR = \"linear\";\nconst RADIAL = \"radial\";\n\nconst GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n const a = Math.min(r.x1, s.x1);\n const b = Math.max(r.x1, s.x1);\n const c = Math.min(r.x2, s.x2);\n const d = Math.max(r.x2, s.x2);\n const e = Math.min(r.y1, s.y1);\n const f = Math.max(r.y1, s.y1);\n const g = Math.min(r.y2, s.y2);\n const h = Math.max(r.y2, s.y2);\n const boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nclass RootElement extends ChartElement {\n constructor(options) {\n super(options);\n\n const rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n reflow() {\n const { options, children } = this;\n let currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (let i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n }\n\n createVisual() {\n this.visual = new draw.Group();\n this.createBackground();\n }\n\n createBackground() {\n const options = this.options;\n const border = options.border || {};\n const box = this.box.clone().pad(options.margin).unpad(border.width);\n\n const background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n }\n\n getRoot() {\n return this;\n }\n\n createGradient(options) {\n const gradients = this.gradients;\n const hashCode = objectKey(options);\n const gradient = GRADIENTS[options.gradient];\n let drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n const gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n }\n\n cleanGradients() {\n const gradients = this.gradients;\n for (let hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n }\n\n size() {\n const options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n}\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n const stops = options.stops;\n const usedSpace = ((options.innerRadius / options.radius) * 100);\n const length = stops.length;\n const currentStops = [];\n\n for (let i = 0; i < length; i++) {\n let currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nclass FloatElement extends ChartElement {\n constructor(options) {\n super(options);\n this._initDirection();\n }\n\n _initDirection() {\n const options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n }\n\n reflow(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n }\n\n reflowChildren() {\n const { box, elementAxis, groupAxis, elementSizeField, groupSizeField } = this;\n const { groups, groupsSize, maxGroupElementsSize } = this.groupOptions();\n const groupsCount = groups.length;\n const groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n let groupStart = groupsStart;\n\n for (let groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n let group = groups[groupIdx];\n let groupElements = group.groupElements;\n let elementStart = box[elementAxis + 1];\n let groupElementsCount = groupElements.length;\n\n for (let idx = 0; idx < groupElementsCount; idx++) {\n let element = groupElements[idx];\n let elementSize = this.elementSize(element);\n let groupElementStart = groupStart + this.alignStart(elementSize[groupSizeField], group.groupSize);\n\n let elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this.elementSpacing;\n }\n groupStart += group.groupSize + this.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n }\n\n alignStart(size, maxSize) {\n let start = 0;\n const align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n }\n\n groupOptions() {\n const { box, children, elementSizeField, groupSizeField, elementSpacing, groupSpacing } = this;\n const maxSize = round(box[elementSizeField]());\n const childrenCount = children.length;\n const groups = [];\n\n let groupSize = 0;\n let groupElementsSize = 0;\n let groupsSize = 0;\n let maxGroupElementsSize = 0;\n let groupElements = [];\n\n for (let idx = 0; idx < childrenCount; idx++) {\n let element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n let elementSize = this.elementSize(element);\n if (this.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n }\n\n elementSize(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n }\n\n createVisual() {}\n}\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nconst DrawingText = draw.Text;\n\nclass Text extends ChartElement {\n\n constructor(content, options) {\n super(options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n reflow(targetBox) {\n const options = this.options;\n const size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n }\n\n createVisual() {\n const { font, color, opacity, cursor } = this.options;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n}\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n const origin = rect.origin;\n const bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nconst ROWS_SPLIT_REGEX = /\\n/m;\n\nclass TextBox extends BoxElement {\n\n constructor(content, options, data) {\n super(options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n _initContainer() {\n const options = this.options;\n const rows = String(this.content).split(ROWS_SPLIT_REGEX);\n const floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n const textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n let text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n }\n\n reflow(targetBox) {\n const options = this.options;\n const visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n let visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n const visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n super.reflow(targetBox);\n\n if (options.rotation) {\n const margin = getSpacing(options.margin);\n let box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n }\n\n createVisual() {\n const options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n const box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n }\n\n renderVisual() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n const visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n super.renderVisual();\n }\n }\n\n visualContext(targetBox) {\n const context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: () => {\n this._boxReflow = true;\n this.reflow(targetBox);\n this._boxReflow = false;\n return this.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n }\n\n getDefaultVisual() {\n this.createVisual();\n this.renderChildren();\n const visual = this.visual;\n delete this.visual;\n return visual;\n }\n\n rotate() {\n const options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n }\n\n rotationTransform() {\n const rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n const { x: cx, y: cy } = this.normalBox.center();\n const boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n}\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER, BOTTOM } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nclass Title extends ChartElement {\n constructor(options) {\n super(options);\n\n this._textBox = new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n this.box.snapTo(targetBox, X);\n }\n\n static buildTitle(options, defaultOptions) {\n let titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n let title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n }\n\n static orderTitles(titles) {\n const items = [].concat(titles);\n const top = items.filter(item => item && item.options.position !== BOTTOM);\n const bottom = items.filter(item => item && item.options.position === BOTTOM);\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n }\n}\n\nfunction collapseVerticalMargins(items) {\n for (let i = 1; i < items.length; i++) {\n const box = items[i]._textBox;\n const prevBox = items[i - 1]._textBox;\n prevBox.options.margin = Object.assign(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = Object.assign(getSpacing(box.options.margin), { top: 0 });\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nclass AxisLabel extends TextBox {\n constructor(value, text, index, dataItem, options) {\n super(text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n visualContext(targetBox) {\n const context = super.visualContext(targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n }\n\n click(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n }\n\n rotate() {\n if (this.options.alignRotation !== CENTER) {\n const box = this.normalBox.toRect();\n const transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n super.rotate();\n }\n\n return this.box;\n }\n\n rotationTransform() {\n const options = this.options;\n const rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return super.rotationTransform();\n }\n\n const rotationMatrix = geom.transform().rotate(rotation).matrix();\n const box = this.normalBox.toRect();\n const rect = this.targetBox.toRect();\n\n const rotationOrigin = options.rotationOrigin || TOP;\n const alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n const distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n const axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n const topLeft = box.topLeft().transformCopy(rotationMatrix);\n const topRight = box.topRight().transformCopy(rotationMatrix);\n const bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n const bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n const rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n const translate = {\n [distanceAxis]: rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis]\n };\n\n const distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n const distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n let alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n const alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n}\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nconst DEFAULT_ICON_SIZE = 7;\nconst DEFAULT_LABEL_COLOR = \"#fff\";\n\nclass Note extends BoxElement {\n constructor(fields, options, chartService) {\n super(options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n hide() {\n this.options.visible = false;\n }\n\n show() {\n this.options.visible = true;\n }\n\n render() {\n const options = this.options;\n\n if (options.visible) {\n const { label, icon } = options;\n const box = new Box();\n const childAlias = () => this;\n let size = icon.size;\n let text = this.fields.text;\n let width, height;\n\n if (defined(label) && label.visible) {\n const noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n const marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n }\n\n reflow(targetBox) {\n const { options, label, marker, wrapperBox } = this;\n const center = targetBox.center();\n const length = options.line.length;\n const position = options.position;\n\n // TODO: Review\n if (options.visible) {\n let lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n }\n\n createVisual() {\n super.createVisual();\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n\n createLine() {\n const options = this.options.line;\n\n if (this.linePoints) {\n const path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n }\n\n out(widget, e) {\n const args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n}\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","const defaultImplementation = {\n format: (format, value) => value,\n\n toString: (value) => value,\n\n parseDate: (value) => new Date(value),\n\n firstDay: () => 0\n};\n\nlet current = defaultImplementation;\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static get implementation() {\n return current;\n }\n}\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\n// eslint-disable-next-line no-useless-escape\nconst FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nclass FormatService {\n constructor(intlService) {\n this._intlService = intlService;\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n }\n\n auto(formatString, ...values) {\n const intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format(formatString, ...values);\n }\n\n return intl.toString(values[0], formatString);\n }\n\n localeAuto(formatString, values, locale) {\n const intl = this.intl;\n let result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n}\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nclass ChartService {\n constructor(chart, context = {}) {\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n }\n\n get intl() {\n return this._intlService || IntlService.implementation;\n }\n\n set intl(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n\n notify(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n }\n\n isPannable(axis) {\n const pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n}\n\nexport default ChartService;\n","let current;\n\nclass DomEventsBuilder {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static create(element, events) {\n if (current) {\n return current.create(element, events);\n }\n }\n}\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n const { tickX, tickY, position } = options;\n\n const tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n const { lineStart, lineEnd, position } = options;\n\n const line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nclass Axis extends ChartElement {\n constructor(options, chartService = new ChartService()) {\n super(options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n initFields() {\n }\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n }\n\n normalizeLabelRotation(labelOptions) {\n const rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n }\n\n createLabels() {\n const options = this.options;\n const align = options.vertical ? RIGHT : CENTER;\n const labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n const step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n const range = this.labelsRange();\n for (let idx = range.min; idx < range.max; idx += step) {\n const labelContext = { index: idx, count: range.max };\n let label = this.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this.append(label);\n this.labels.push(label);\n }\n }\n }\n }\n\n clearLabels() {\n this.children = grep(this.children, child => !(child instanceof AxisLabel));\n this.labels = [];\n }\n\n clearTitle() {\n if (this.title) {\n this.children = grep(this.children, child => child !== this.title);\n this.title = undefined;\n }\n }\n\n clear() {\n this.clearLabels();\n this.clearTitle();\n }\n\n lineBox() {\n const { options, box } = this;\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const axisX = mirror ? box.x1 : box.x2;\n const axisY = mirror ? box.y2 : box.y1;\n const lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n }\n\n createTitle() {\n const options = this.options;\n const titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n const title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n }\n\n createNotes() {\n const options = this.options;\n const notes = options.notes;\n const items = notes.data || [];\n\n this.notes = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = deepExtend({}, notes, items[i]);\n item.value = this.parseNoteValue(item.value);\n\n const note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this.append(note);\n this.notes.push(note);\n }\n }\n }\n\n parseNoteValue(value) {\n return value;\n }\n\n renderVisual() {\n super.renderVisual();\n\n this.createPlotBands();\n }\n\n createVisual() {\n super.createVisual();\n\n this.createBackground();\n this.createLine();\n }\n\n gridLinesVisual() {\n let gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const lineBox = this.lineBox();\n const mirror = options.labels.mirror;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (let i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n }\n\n createLine() {\n const options = this.options;\n const line = options.line;\n const lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n const path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n const group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n }\n\n getActualTickSize() {\n const options = this.options;\n let tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n }\n\n createBackground() {\n const { options, box } = this;\n const background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n }\n\n createPlotBands() {\n const options = this.options;\n const plotBands = options.plotBands || [];\n const vertical = options.vertical;\n const plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n const altAxis = grep(this.pane.axes, axis => axis.options.vertical !== this.options.vertical)[0];\n\n for (let idx = 0; idx < plotBands.length; idx++) {\n let item = plotBands[idx];\n let slotX, slotY;\n let labelOptions = item.label;\n let label;\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this.getSlot(item.from, item.to, true);\n } else {\n slotX = this.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n const bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n const path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n }\n\n createPlotBandLabel(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n let text = label.text;\n let textbox;\n\n if (defined(label) && label.visible) {\n const labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, minorUnit, vertical } = options;\n const axisLineVisible = altAxis.options.line.visible;\n const majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n const lineBox = altAxis.lineBox();\n const linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n const count = tickPositions.length;\n const step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (let i = gridLine.skip; i < count; i += step) {\n let pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n }\n\n reflow(box) {\n const { options, labels, title } = this;\n const vertical = options.vertical;\n const count = labels.length;\n const sizeFn = vertical ? WIDTH : HEIGHT;\n const titleSize = title ? title.box[sizeFn]() : 0;\n const space = this.getActualTickSize() + options.margin + titleSize;\n const rootBox = (this.getRoot() || {}).box || box;\n const boxSize = rootBox[sizeFn]();\n let maxLabelSize = 0;\n\n for (let i = 0; i < count; i++) {\n let labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n }\n\n getLabelsTickPositions() {\n return this.getMajorTickPositions();\n }\n\n labelTickIndex(label) {\n return label.index;\n }\n\n arrangeLabels() {\n const { options, labels } = this;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const vertical = options.vertical;\n const mirror = options.labels.mirror;\n const tickPositions = this.getLabelsTickPositions();\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n const labelSize = vertical ? label.box.height() : label.box.width();\n const firstTickPosition = tickPositions[tickIx];\n const nextTickPosition = tickPositions[tickIx + 1];\n let positionStart, positionEnd;\n\n if (vertical) {\n if (labelsBetweenTicks) {\n const middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this.positionLabel(label, mirror, positionStart, positionEnd);\n }\n }\n\n positionLabel(label, mirror, positionStart, positionEnd = positionStart) {\n const options = this.options;\n const vertical = options.vertical;\n const lineBox = this.lineBox();\n const labelOffset = this.getActualTickSize() + options.margin;\n let labelBox;\n\n if (vertical) {\n let labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n let labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n }\n\n autoRotateLabelAngle(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n }\n\n autoRotateLabels() {\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n const tickPositions = this.getMajorTickPositions();\n const labels = this.labels;\n const limit = Math.min(labels.length, tickPositions.length - 1);\n let angle = 0;\n\n for (let idx = 0; idx < limit; idx++) {\n const width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n const labelBox = labels[idx].box;\n const labelAngle = this.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (let idx = 0; idx < labels.length; idx++) {\n labels[idx].options.rotation = angle;\n labels[idx].reflow(new Box());\n }\n\n return true;\n }\n }\n\n arrangeTitle() {\n const { options, title } = this;\n const mirror = options.labels.mirror;\n const vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n }\n\n arrangeNotes() {\n for (let idx = 0; idx < this.notes.length; idx++) {\n const item = this.notes[idx];\n const value = item.options.value;\n let slot;\n\n if (defined(value)) {\n if (this.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this.lineBox());\n }\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n alignTo(secondAxis) {\n const lineBox = secondAxis.lineBox();\n const vertical = this.options.vertical;\n const pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n }\n\n axisLabelText(value, options, context) {\n let text;\n const tmpl = getTemplate(options);\n const defaultText = () => {\n if (!options.format) {\n return value;\n }\n\n return this.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n const templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n }\n\n slot(from , to, limit) {\n const slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n contentBox() {\n const box = this.box.clone();\n const labels = this.labels;\n if (labels.length) {\n const axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n const offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n const lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n }\n\n maxLabelOffset() {\n const { vertical, reverse } = this.options;\n const labelsBetweenTicks = this.labelsBetweenTicks();\n const tickPositions = this.getLabelsTickPositions();\n const offsetField = vertical ? Y : X;\n const labels = this.labels;\n const startPosition = reverse ? 1 : 0;\n const endPosition = reverse ? 0 : 1;\n let maxStartOffset = 0;\n let maxEndOffset = 0;\n\n for (let idx = 0; idx < labels.length; idx++) {\n const label = labels[idx];\n const tickIx = this.labelTickIndex(label);\n let startTick, endTick;\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n }\n\n limitRange(from, to, min, max, offset) {\n const options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n const rangeSize = to - from;\n let minValue = from;\n let maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n }\n\n valueRange() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n }\n\n lineDir() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n const { vertical, reverse } = this.options;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n }\n\n lineInfo() {\n const { vertical } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = this.lineDir();\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n pointOffset(point) {\n const { axis, axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n const offset = relative / lineSize;\n\n return offset;\n }\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n scaleToDelta(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n const MAX_SCALE = 0.999;\n const scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n let delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n }\n\n labelsBetweenTicks() {\n return !this.options.justified;\n }\n\n //add legacy fields to the options that are no longer generated by default\n prepareUserOptions() {\n }\n}\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","export const MILLISECONDS = \"milliseconds\";\nexport const SECONDS = \"seconds\";\nexport const MINUTES = \"minutes\";\nexport const HOURS = \"hours\";\nexport const DAYS = \"days\";\nexport const WEEKS = \"weeks\";\nexport const MONTHS = \"months\";\nexport const YEARS = \"years\";\n\nexport const TIME_PER_MILLISECOND = 1;\nexport const TIME_PER_SECOND = 1000;\nexport const TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport const TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport const TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport const TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport const TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport const TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport const TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n const diff = a.getTime() - b;\n const offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n let result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n}\n\nfunction addHours(date, hours) {\n const roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n const tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n let result = dateValue;\n\n if (dateValue) {\n let date = toDate(dateValue);\n const hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay = 0) {\n let daysToSubtract = 0;\n let day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n const date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n let result = [];\n for (let idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n const date = toDate(value);\n const startDate = toDate(start);\n let index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n let diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n let result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n const result = [];\n for (let idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nconst MIN_CATEGORY_POINTS_RANGE = 0.01;\nconst MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n const length = arr.length;\n for (let idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nclass CategoryAxis extends Axis {\n initFields() {\n this._ticks = {};\n }\n\n categoriesHash() {\n return \"\";\n }\n\n clone() {\n const copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n initUserOptions(options) {\n const categories = options.categories || [];\n const definedMin = defined(options.min);\n const definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n const min = definedMin ? Math.floor(options.min) : 0;\n let max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n }\n\n rangeIndices() {\n const options = this.options;\n const length = options.categories.length || 1;\n const min = isNumber(options.min) ? options.min % 1 : 0;\n let max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n range() {\n const options = this.options;\n const min = isNumber(options.min) ? options.min : 0;\n const max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n }\n\n roundedRange() {\n return this.range();\n }\n\n totalRange() {\n const options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n }\n\n scaleOptions() {\n const { min, max } = this.rangeIndices();\n const lineBox = this.lineBox();\n const size = this.options.vertical ? lineBox.height() : lineBox.width();\n const scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n }\n\n arrangeLabels() {\n super.arrangeLabels();\n this.hideOutOfRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n const { box, labels } = this;\n\n if (labels.length > 0) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n const firstLabel = labels[0];\n const lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n }\n\n getMajorTickPositions() {\n return this.getTicks().majorTicks;\n }\n\n getMinorTickPositions() {\n return this.getTicks().minorTicks;\n }\n\n getLabelsTickPositions() {\n return this.getTicks().labelTicks;\n }\n\n tickIndices(stepSize) {\n const { min, max } = this.rangeIndices();\n const limit = Math.ceil(max);\n let current = Math.floor(min);\n const indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n }\n\n getTickPositions(stepSize) {\n const { vertical, reverse } = this.options;\n const { scale, box, min } = this.scaleOptions();\n const pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n const indices = this.tickIndices(stepSize);\n const positions = [];\n\n for (let idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n }\n\n getTicks() {\n const options = this.options;\n const cache = this._ticks;\n const range = this.rangeIndices();\n const lineBox = this.lineBox();\n const hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n const hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n }\n\n filterOutOfRangePositions(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n const axis = this.options.vertical ? Y : X;\n const inRange = (position) => lineBox[axis + 1] <= position && position <= lineBox[axis + 2];\n\n const end = positions.length - 1;\n let startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n let endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n }\n\n lineInfo() {\n const { vertical, reverse } = this.options;\n const lineBox = this.lineBox();\n const lineSize = vertical ? lineBox.height() : lineBox.width();\n const axis = vertical ? Y : X;\n const axisDir = reverse ? -1 : 1;\n const startEdge = axisDir === 1 ? 1 : 2;\n const axisOrigin = axis + startEdge.toString();\n const lineStart = lineBox[axisOrigin];\n\n return {\n axis,\n axisOrigin,\n axisDir,\n lineBox,\n lineSize,\n lineStart\n };\n }\n\n lineDir() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n const { reverse } = this.options;\n return reverse ? -1 : 1;\n }\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n getSlot(from, to, limit) {\n const options = this.options;\n const { reverse, justified } = options;\n const { scale, box, min } = this.scaleOptions();\n const { axis: valueAxis, lineStart } = this.lineInfo();\n\n const slotBox = box.clone();\n const singleSlot = !defined(to);\n\n const start = valueOrDefault(from, 0);\n let end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n let p1 = lineStart + (start - min) * scale;\n let p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n }\n\n limitSlot(slot) {\n const vertical = this.options.vertical;\n const valueAxis = vertical ? Y : X;\n const lineBox = this.lineBox();\n const limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n }\n\n slot(from, to, limit) {\n const min = Math.floor(this.options.min || 0);\n let start = from;\n let end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return super.slot(start, end, limit);\n }\n\n pointCategoryIndex(point) {\n const { reverse, justified, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const { scale, box, min, max } = this.scaleOptions();\n const startValue = reverse ? max : min;\n const lineStart = box[valueAxis + 1];\n const lineEnd = box[valueAxis + 2];\n const pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n let value = startValue + (pos - lineStart) / scale;\n const diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n }\n\n categoryIndex(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n }\n\n categoryAt(index, total) {\n const options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n }\n\n categoriesCount() {\n return (this.options.categories || []).length;\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const range = options.categories.length;\n const scale = size / range;\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const rangeIndices = this.limitedRangeIndices();\n const range = rangeIndices.max - rangeIndices.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = rangeIndices.min + minDelta;\n let max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { min: totalMin, max: totalMax } = this.totalRange();\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n labelsCount() {\n const labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n }\n\n labelsRange() {\n const options = this.options;\n const { justified, labels: labelOptions } = options;\n let { min, max } = this.limitedRangeIndices(true);\n const start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n let skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const dataItem = options.dataItems ? options.dataItems[index] : null;\n const category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n const text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.limitedRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n }\n\n noteSlot(value) {\n const options = this.options;\n const index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n }\n\n arrangeNotes() {\n super.arrangeNotes();\n this.hideOutOfRangeNotes();\n }\n\n hideOutOfRangeNotes() {\n const { notes, box } = this;\n if (notes && notes.length) {\n const valueAxis = this.options.vertical ? Y : X;\n const start = box[valueAxis + 1];\n const end = box[valueAxis + 2];\n\n for (let idx = 0; idx < notes.length; idx++) {\n const note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n }\n\n pan(delta) {\n const range = this.limitedRangeIndices(true);\n const { scale } = this.scaleOptions();\n const offset = round(delta / scale, DEFAULT_PRECISION);\n const totalRange = this.totalRange();\n const min = range.min + offset;\n const max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n }\n\n pointsRange(start, end) {\n const { reverse, vertical } = this.options;\n const valueAxis = vertical ? Y : X;\n const range = this.limitedRangeIndices(true);\n const { scale, box } = this.scaleOptions();\n const lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n const diffStart = start[valueAxis] - lineStart;\n const diffEnd = end[valueAxis] - lineStart;\n\n const min = range.min + diffStart / scale;\n const max = range.min + diffEnd / scale;\n const rangeMin = Math.min(min, max);\n const rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n }\n\n valueRange() {\n return this.range();\n }\n\n totalIndex(value) {\n const options = this.options;\n const index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n }\n\n currentRangeIndices() {\n const options = this.options;\n let min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n let max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n limitedRangeIndices(totalLimit) {\n const options = this.options;\n let min = isNumber(options.min) ? options.min : 0;\n let max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (totalLimit) {\n const totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n totalRangeIndices() {\n return {\n min: 0,\n max: this.totalRange().max || 1\n };\n }\n\n indexCategories() {\n if (!this._categoriesMap) {\n const map = this._categoriesMap = new HashMap();\n const srcCategories = this.options.srcCategories;\n for (let idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n }\n\n totalCount() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n}\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","const COORDINATE_LIMIT = 300000;\n\nconst DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nconst ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nconst AUTO = \"auto\";\nconst BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nconst FIT = \"fit\";\n\n\nfunction categoryRange(categories, clearCache) {\n if (clearCache) {\n categories._range = undefined;\n }\n\n let range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nclass EmptyDateRange {\n constructor(options) {\n this.options = options;\n }\n\n displayIndices() {\n return {\n min: 0,\n max: 1\n };\n }\n\n displayRange() {\n return {};\n }\n\n total() {\n return {};\n }\n\n valueRange() {\n return {};\n }\n\n valueIndex() {\n return -1;\n }\n\n values() {\n return [];\n }\n\n totalIndex() {\n return -1;\n }\n\n valuesCount() {\n return 0;\n }\n\n totalCount() {\n return 0;\n }\n\n dateAt() {\n return null;\n }\n}\n\nclass DateRange {\n constructor(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n const { roundToBaseUnit, justified } = options;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n const lowerEnd = this.roundToTotalStep(end);\n const expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n const min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n const max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n const next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n }\n\n displayRange() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n }\n\n displayIndices() {\n if (!this._indices) {\n const options = this.options;\n\n const { baseUnit, baseUnitStep } = options;\n\n const minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n const maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n }\n\n total() {\n return {\n min: this.start,\n max: this.end\n };\n }\n\n totalCount() {\n const last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n }\n\n valueRange() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n }\n\n valueIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n }\n\n totalIndex(value) {\n const options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n }\n\n dateIndex(value) {\n const options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n }\n\n valuesCount() {\n const maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n }\n\n values() {\n let values = this._values;\n if (!values) {\n const options = this.options;\n const range = this.valueRange();\n this._values = values = [];\n\n for (let date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n }\n\n dateAt(index, total) {\n const options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n }\n\n roundToTotalStep(value, upper, next) {\n const { baseUnit, baseUnitStep, weekStartDay } = this.options;\n const start = this.start;\n\n const step = dateIndex(value, start, baseUnit, baseUnitStep);\n let roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n\n}\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n const categoryLimits = categoryRange(options.categories);\n const span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n const { autoBaseUnitSteps, maxDateGroups } = options;\n const autoUnit = options.baseUnit === FIT;\n let autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n let baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n let units = span / TIME_PER_UNIT[baseUnit];\n let totalUnits = units;\n let unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n const categories = options.categories;\n const count = defined(categories) ? categories.length : 0;\n let minDiff = MAX_VALUE;\n let lastCategory, unit;\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n const category = categories[categoryIx];\n\n if (category && lastCategory) {\n let diff = Math.abs(absoluteDateDiff(category, lastCategory));\n\n if (diff !== 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n const baseUnit = (options.baseUnit || \"\").toLowerCase();\n const useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nclass DateCategoryAxis extends CategoryAxis {\n\n clone() {\n const copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n }\n\n categoriesHash() {\n const start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n }\n\n initUserOptions(options) {\n return options;\n }\n\n initFields() {\n super.initFields();\n\n const chartService = this.chartService;\n const intlService = chartService.intl;\n let options = this.options;\n\n let categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n const range = categoryRange(categories, true);\n const maxDivisions = options.maxDivisions;\n const safeOptions = initUnit(options);\n\n const forecast = options._forecast;\n if (forecast) {\n if (forecast.before > 0) {\n range.min = addDuration(range.min, -forecast.before, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n\n if (forecast.after > 0) {\n range.max = addDuration(range.max, forecast.after, safeOptions.baseUnit, safeOptions.weekStartDay);\n }\n }\n\n this.dataRange = new DateRange(range.min, range.max, safeOptions);\n\n if (maxDivisions) {\n const dataRange = this.dataRange.displayRange();\n\n const divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n const dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n }\n\n tickIndices(stepSize) {\n const { dataRange, divisionRange } = this;\n const valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return super.tickIndices(stepSize);\n }\n\n const indices = [];\n let values = divisionRange.values();\n let offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (let idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n const last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n const categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n }\n\n parseNoteValue(value) {\n return parseDate(this.chartService.intl, value);\n }\n\n noteSlot(value) {\n return this.getSlot(value);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { baseUnit, weekStartDay, vertical } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n let range = this.range();\n const scale = size / (range.max - range.min);\n const offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n const from = addTicks(options.min || range.min, offset);\n const to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n }\n\n labelsRange() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n }\n\n pan(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n const options = this.options;\n const lineBox = this.lineBox();\n const size = options.vertical ? lineBox.height() : lineBox.width();\n const { min, max } = this.dataRange.displayRange();\n const totalLimits = this.dataRange.total();\n const scale = size / (max - min);\n const offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n const from = addTicks(min, offset);\n const to = addTicks(max, offset);\n\n const panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n }\n\n pointsRange(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n const pointsRange = super.pointsRange(start, end);\n const datesRange = this.dataRange.displayRange();\n const indicesRange = this.dataRange.displayIndices();\n const scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n const options = this.options;\n\n const min = addTicks(datesRange.min, pointsRange.min * scale);\n const max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n\n scaleRange(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n const options = this.options;\n const fit = options.userSetBaseUnit === FIT;\n const totalLimits = this.dataRange.total();\n const { min: rangeMin, max: rangeMax } = this.dataRange.displayRange();\n\n const position = Math.abs(this.pointOffset(cursor));\n const range = rangeMax - rangeMin;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = Math.round(position * delta);\n const maxDelta = Math.round((1 - position) * delta);\n\n let { baseUnit } = this.dataRange.options;\n let min = new Date(rangeMin.getTime() + minDelta);\n let max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n const { autoBaseUnitSteps, maxDateGroups } = options;\n\n const maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n const rangeDiff = dateDiff(rangeMax, rangeMin);\n const diff = dateDiff(max, min);\n let baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n let autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n let stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n }\n\n zoomRange(scale, cursor) {\n const totalLimits = this.dataRange.total();\n const range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n }\n\n range() {\n return this.dataRange.displayRange();\n }\n\n createLabels() {\n super.createLabels();\n this.createRangeLabels();\n }\n\n clearLabels() {\n super.clearLabels();\n this.rangeLabels = [];\n }\n\n arrangeLabels() {\n this.arrangeRangeLabels();\n super.arrangeLabels();\n }\n\n arrangeRangeLabels() {\n const { options, rangeLabels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n const lineBox = this.lineBox();\n const vertical = options.vertical;\n const mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n const firstLabel = rangeLabels[0];\n if (firstLabel) {\n const position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n const lastLabel = rangeLabels[1];\n if (lastLabel) {\n const position = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position);\n }\n }\n\n autoRotateLabels() {\n super.autoRotateLabels();\n this.autoRotateRangeLabels();\n }\n\n hideOutOfRangeLabels() {\n super.hideOutOfRangeLabels();\n this.hideOverlappingLabels();\n }\n\n hideOverlappingLabels() {\n const { rangeLabels, labels } = this;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n const firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (let i = 0; i < labels.length; i++) {\n const overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n const lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (let i = labels.length - 1; i > 0; --i) {\n const overlaps = clip(lastRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n }\n\n contentBox() {\n const box = super.contentBox();\n const rangeLabels = this.rangeLabels;\n\n for (let i = 0; i < rangeLabels.length; i++) {\n const label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n }\n\n createAxisLabel(index, labelOptions, labelContext = {}) {\n const options = this.options;\n const dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n const date = this.divisionRange.dateAt(index);\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n }\n\n createRangeLabels() {\n const { displayStart, displayEnd } = this.divisionRange;\n const options = this.options;\n const labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n const unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const createLabel = (index, date, text) => {\n if (text) {\n const label = new AxisLabel(date, text, index, null, labelOptions);\n this.append(label);\n this.rangeLabels.push(label);\n }\n };\n\n const startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n const endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n }\n\n autoRotateRangeLabels() {\n const labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n const rotateLabel = (label, tickPositions, index) => {\n const width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n const angle = this.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n const tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n }\n\n categoryIndex(value) {\n return this.dataRange.valueIndex(value);\n }\n\n slot(from, to, limit) {\n const dateRange = this.dataRange;\n let start = from;\n let end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n const slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n }\n\n getSlot(a, b, limit) {\n let start = a;\n let end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return super.getSlot(start, end, limit);\n }\n\n valueRange() {\n const options = this.options;\n const range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n }\n\n categoryAt(index, total) {\n return this.dataRange.dateAt(index, total);\n }\n\n categoriesCount() {\n return this.dataRange.valuesCount();\n }\n\n rangeIndices() {\n return this.dataRange.displayIndices();\n }\n\n labelsBetweenTicks() {\n return !this.divisionRange.options.justified;\n }\n\n prepareUserOptions() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n }\n\n getCategory(point) {\n const index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n }\n\n totalIndex(value) {\n return this.dataRange.totalIndex(value);\n }\n\n currentRangeIndices() {\n const range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n }\n\n totalRange() {\n return this.dataRange.total();\n }\n\n totalRangeIndices() {\n const range = this.dataRange.total();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n }\n\n totalCount() {\n return this.dataRange.totalCount();\n }\n\n isEmpty() {\n return !this.options.srcCategories.length;\n }\n\n roundedRange() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n const options = this.options;\n const datesRange = categoryRange(options.srcCategories);\n\n const dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n }\n}\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nconst MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nclass NumericAxis extends Axis {\n\n constructor(seriesMin, seriesMax, options, chartService) {\n super(Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n initUserOptions(options) {\n const autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n }\n\n initFields() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n }\n\n clone() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return 0;\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n const options = this.options;\n const range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n }\n\n getTickPositions(unit, skipUnit) {\n const options = this.options;\n const { axisDir, axisOrigin, lineBox, lineSize } = this.lineInfo();\n const range = options.max - options.min;\n const scale = lineSize / range;\n const step = unit * scale;\n const divisions = this.getDivisions(unit);\n const positions = [];\n let pos = lineBox[axisOrigin];\n let skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (let idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit = false) {\n const options = this.options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (options.max - options.min));\n\n let start = valueOrDefault(a, b || 0);\n let end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n const p1 = Math.min(start, end) - options.min;\n const p2 = Math.max(start, end) - options.min;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const options = this.options;\n const max = Number(options.max);\n const min = Number(options.min);\n const offset = this.pointOffset(point);\n const valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n const value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n }\n\n translateRange(delta) {\n const options = this.options;\n const { vertical, reverse, max, min } = options;\n const { lineSize } = this.lineInfo();\n const range = max - min;\n const scale = lineSize / range;\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n let max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const { totalMin, totalMax } = this;\n const range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n }\n\n isValidRange(min, max) {\n return max - min > MIN_VALUE_RANGE;\n }\n}\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n const narrowRange = options.narrowRange;\n\n let autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n let autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n const majorUnit = autoMajorUnit(autoMin, autoMax);\n const autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (let idx = 0; idx < fields.length; idx++) {\n const field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n let options = userOptions;\n let userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n const userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n const result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n const remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n const threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n let axisMin;\n\n if (min >= 0 && max >= 0) {\n const minValue = min === max ? 0 : min;\n\n let diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n let axisMax;\n\n if (min <= 0 && max <= 0) {\n const maxValue = min === max ? 0 : max;\n\n let diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nconst MIN_VALUE_RANGE = 1000;\n\nclass DateValueAxis extends Axis {\n constructor(seriesMin, seriesMax, axisOptions, chartService) {\n const min = toDate(seriesMin);\n const max = toDate(seriesMax);\n\n const intlService = chartService.intl;\n let options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n super(options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n const weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n clone() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n getDivisions(stepValue) {\n const options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n }\n\n getTickPositions(step) {\n const options = this.options;\n const { axisDir: dir, lineSize, lineStart: start } = this.lineInfo();\n const divisions = this.getDivisions(step);\n const timeRange = dateDiff(options.max, options.min);\n const scale = lineSize / timeRange;\n const weekStartDay = options.weekStartDay || 0;\n\n const positions = [ start ];\n for (let i = 1; i < divisions; i++) {\n const date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n const pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n }\n\n getMajorTickPositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n getMinorTickPositions() {\n return this.getTickPositions(this.options.minorUnit);\n }\n\n getSlot(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n }\n\n getValue(point) {\n const value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n }\n\n labelsCount() {\n return this.getDivisions(this.options.majorUnit);\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const options = this.options;\n const offset = index * options.majorUnit;\n const weekStartDay = options.weekStartDay || 0;\n let date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n const unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n const text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n }\n\n translateRange(delta) {\n const options = this.options;\n const lineBox = this.lineBox();\n const { vertical, reverse } = options;\n const size = vertical ? lineBox.height() : lineBox.width();\n const range = this.range();\n const scale = size / dateDiff(range.max, range.min);\n\n let offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n let from = addTicks(options.min, offset);\n let to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n }\n\n pan(delta) {\n const range = this.translateRange(delta, true);\n const limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n }\n\n scaleRange(scale, cursor) {\n const position = Math.abs(this.pointOffset(cursor));\n const range = this.options.max - this.options.min;\n const delta = this.scaleToDelta(scale, range);\n const minDelta = position * delta;\n const maxDelta = (1 - position) * delta;\n const min = toDate(toTime(this.options.min) + minDelta);\n let max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n const max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min,\n max\n };\n }\n}\n\nfunction timeUnits(delta) {\n let unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n const min = options.min || seriesMin;\n const max = options.max || seriesMax;\n const baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n const baseUnitTime = TIME_PER_UNIT[baseUnit];\n const weekStartDay = options.weekStartDay || 0;\n const autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n const autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n const userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n const majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n const actualUnits = duration(autoMin, autoMax, baseUnit);\n const totalUnits = ceil(actualUnits, majorUnit);\n const unitsToAdd = totalUnits - actualUnits;\n const head = Math.floor(unitsToAdd / 2);\n const tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nconst DEFAULT_MAJOR_UNIT = 10;\nconst MIN_VALUE_RANGE = 1e-6;\n\nclass LogarithmicAxis extends Axis {\n constructor(seriesMin, seriesMax, options, chartService) {\n\n const axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n const base = axisOptions.majorUnit;\n const autoMax = autoAxisMax(seriesMax, base);\n const autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n const range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n super(axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n clone() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n }\n\n startValue() {\n return this.options.min;\n }\n\n getSlot(a, b, limit) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base, min, max } = options;\n const { axis, axisDir, lineBox, lineSize, lineStart } = this.lineInfo();\n const step = axisDir * (lineSize / (logMax - logMin));\n let start = valueOrDefault(a, b || 1);\n let end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n const p1 = Math.min(start, end) - logMin;\n const p2 = Math.max(start, end) - logMin;\n\n const slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n }\n\n getValue(point) {\n const { options, logMin, logMax } = this;\n const { majorUnit: base } = options;\n const { axis, axisDir, lineStart, lineSize } = this.lineInfo();\n const step = ((logMax - logMin) / lineSize);\n const offset = axisDir * (point[axis] - lineStart);\n const valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n const value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n }\n\n range() {\n const options = this.options;\n return { min: options.min, max: options.max };\n }\n\n translateRange(delta) {\n const { options, logMin, logMax } = this;\n const { reverse, vertical, majorUnit: base } = options;\n const lineBox = this.lineBox();\n const size = vertical ? lineBox.height() : lineBox.width();\n const scale = size / (logMax - logMin);\n let offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n }\n\n labelsCount() {\n const floorMax = Math.floor(this.logMax);\n const count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n }\n\n getMajorTickPositions() {\n const ticks = [];\n\n this.traverseMajorTicksPositions((position) => {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n }\n\n createTicks(lineGroup) {\n const options = this.options;\n const { majorTicks, minorTicks, vertical } = options;\n const mirror = options.labels.mirror;\n const lineBox = this.lineBox();\n const ticks = [];\n const tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n }\n\n createGridLines(altAxis) {\n const options = this.options;\n const { minorGridLines, majorGridLines, vertical } = options;\n const lineBox = altAxis.lineBox();\n const lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n const majorTicks = [];\n\n const container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n }\n\n traverseMajorTicksPositions(callback, tickOptions) {\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n\n for (let power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n let position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n\n traverseMinorTicksPositions(callback, tickOptions) {\n const { min, max, minorUnit, majorUnit: base } = this.options;\n const { lineStart, step } = this.lineInfo();\n const { logMin, logMax } = this;\n const start = Math.floor(logMin);\n\n for (let power = start; power < logMax; power++) {\n const minorOptions = this._minorIntervalOptions(power);\n for (let idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n const value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n const position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n }\n\n createAxisLabel(index, labelOptions, labelContext) {\n const power = Math.ceil(this.logMin + index);\n const value = Math.pow(this.options.majorUnit, power);\n const text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n }\n\n shouldRenderNote(value) {\n const range = this.range();\n return range.min <= value && value <= range.max;\n }\n\n pan(delta) {\n const range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n }\n\n pointsRange(start, end) {\n const startValue = this.getValue(start);\n const endValue = this.getValue(end);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n }\n\n scaleRange(scale, cursor) {\n const { majorUnit: base } = this.options;\n const logMin = log(this.options.min, base);\n const logMax = log(this.options.max, base);\n const position = Math.abs(this.pointOffset(cursor));\n const range = logMax - logMin;\n const delta = this.scaleToDelta(scale, range);\n const min = Math.pow(base, logMin + position * delta);\n let max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n zoomRange(scale, cursor) {\n const range = this.scaleRange(scale, cursor);\n const { totalMin, totalMax } = this;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n }\n\n _minorIntervalOptions(power) {\n const { minorUnit, majorUnit: base } = this.options;\n const value = Math.pow(base, power);\n const nextValue = Math.pow(base, power + 1);\n const difference = nextValue - value;\n const minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n }\n\n lineInfo() {\n const info = super.lineInfo();\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n}\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n let { min, max } = axisOptions;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n const base = options.majorUnit;\n let autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n const logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n let autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nconst GridLinesMixin = {\n createGridLines: function(altAxis) {\n const options = this.options;\n const radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n let gridLines = [];\n let skipMajor = false;\n let majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n const radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n const center = this.box.center();\n const circle = new geom.Circle([ center.x, center.y ], radius);\n const container = this.gridLinesVisual();\n\n for (let i = 0; i < angles.length; i++) {\n const line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n const divs = this.intervals(size, skip, step, skipAngles);\n const options = altAxis.options;\n const altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, (d) => {\n const alpha = this.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nclass RadarCategoryAxis extends CategoryAxis {\n range() {\n return { min: 0, max: this.options.categories.length };\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n lineBox() {\n return this.box;\n }\n\n reflowLabels() {\n const { labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n const measureBox = new Box();\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const options = this.options;\n const categories = options.categories.length;\n const divCount = categories / size || 1;\n const divAngle = 360 / divCount;\n const skip = skipOption || 0;\n const step = stepOption || 1;\n const divs = [];\n let angle = 0;\n\n for (let i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(1);\n }\n\n minorIntervals() {\n return this.intervals(0.5);\n }\n\n intervalAngle(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n }\n\n majorAngles() {\n return map(this.majorIntervals(), (interval) => this.intervalAngle(interval));\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const { minorGridLines, majorGridLines } = this.options;\n const majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n radiusCallback(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n const minorAngle = rad(360 / (this.options.categories.length * 2));\n const minorRadius = Math.cos(minorAngle) * radius;\n const majorAngles = this.majorAngles();\n\n const radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n }\n\n createPlotBands() {\n const plotBands = this.options.plotBands || [];\n\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const slot = this.plotBandSlot(band);\n const singleSlot = this.getSlot(band.from);\n\n const head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n const tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n const ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to - 1);\n }\n\n getSlot(from, to) {\n const options = this.options;\n const justified = options.justified;\n const box = this.box;\n const divs = this.majorAngles();\n const totalDivs = divs.length;\n const slotAngle = 360 / totalDivs;\n let fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n let slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n const toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n const slots = toValue - fromValue + 1;\n const angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n }\n\n slot(from, to) {\n const slot = this.getSlot(from, to);\n const startAngle = slot.startAngle + 180;\n const endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n pointCategoryIndex(point) {\n const length = this.options.categories.length;\n let index = null;\n\n for (let i = 0; i < length; i++) {\n const slot = this.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n}\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nclass PolarAxis extends Axis {\n constructor(options, chartService) {\n super(options, chartService);\n\n const instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n getDivisions(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n }\n\n reflow(box) {\n this.box = box;\n this.reflowLabels();\n }\n\n reflowLabels() {\n const { options, labels, options: { labels: labelOptions } } = this;\n const skip = labelOptions.skip || 0;\n const step = labelOptions.step || 1;\n\n const measureBox = new Box();\n const divs = this.intervals(options.majorUnit, skip, step);\n\n for (let i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n const labelBox = labels[i].box;\n\n labels[i].reflow(this.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n }\n\n lineBox() {\n return this.box;\n }\n\n intervals(size, skipOption, stepOption, skipAngles = false) {\n const min = this.options.min;\n const divisions = this.getDivisions(size);\n const divs = [];\n const skip = skipOption || 0;\n const step = stepOption || 1;\n\n for (let i = skip; i < divisions; i += step) {\n const current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n }\n\n majorIntervals() {\n return this.intervals(this.options.majorUnit);\n }\n\n minorIntervals() {\n return this.intervals(this.options.minorUnit);\n }\n\n intervalAngle(i) {\n return (540 - i - this.options.startAngle) % 360;\n }\n\n createLine() {\n return [];\n }\n\n majorGridLineAngles(altAxis) {\n const majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n }\n\n minorGridLineAngles(altAxis, skipMajor) {\n const options = this.options;\n const { minorGridLines, majorGridLines } = options;\n const majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n }\n\n plotBandSlot(band) {\n return this.getSlot(band.from, band.to);\n }\n\n getSlot(a, b) {\n const { options, box } = this;\n const startAngle = options.startAngle;\n let start = limitValue(a, options.min, options.max);\n let end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n const tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n }\n\n slot(from, to = from) {\n const options = this.options;\n const start = 360 - options.startAngle;\n const slot = this.getSlot(from, to);\n const min = Math.min(from, to);\n const max = Math.max(from, to);\n let startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n }\n\n getValue(point) {\n const options = this.options;\n const center = this.box.center();\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n let theta = Math.round(deg(Math.atan2(dy, dx)));\n let start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n }\n\n valueRange() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n}\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nconst RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n const { majorGridLines: { type }, plotBands = [] } = this.options;\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (let i = 0; i < plotBands.length; i++) {\n const band = plotBands[i];\n const bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n const slot = this.getSlot(band.from, band.to, true);\n const ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n let shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n const innerPoints = [];\n const outerPoints = [];\n const center = [ ring.center.x, ring.center.y ];\n const innerCircle = new geom.Circle(center, ring.innerRadius);\n const outerCircle = new geom.Circle(center, ring.radius);\n\n for (let i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n const options = this.options;\n const majorTicks = this.radarMajorGridLinePositions();\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n let gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n const minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n const style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n const { skip = 0, step = 0 } = options;\n const container = this.gridLinesVisual();\n\n for (let tickIx = skip; tickIx < ticks.length; tickIx += step) {\n const tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n const circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n const line = new draw.Path(style);\n for (let angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n const lineBox = this.lineBox();\n const altAxis = this.plotArea.polarAxis;\n const majorAngles = altAxis.majorAngles();\n const center = altAxis.box.center();\n const radius = point.distanceTo(center);\n let distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n const dx = point.x - center.x;\n const dy = point.y - center.y;\n const theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n const midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n const alpha = angularDistance(theta, majorAngles[0]);\n const gamma = 90 - midAngle;\n const beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarNumericAxis extends NumericAxis {\n radarMajorGridLinePositions() {\n return this.getTickPositions(this.options.majorUnit);\n }\n\n radarMinorGridLinePositions() {\n const options = this.options;\n let minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n }\n\n axisType() {\n return NumericAxis;\n }\n}\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nclass RadarLogarithmicAxis extends LogarithmicAxis {\n radarMajorGridLinePositions() {\n const positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n }\n\n radarMinorGridLinePositions() {\n const positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n }\n\n axisType() {\n return LogarithmicAxis;\n }\n}\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nclass CurveProcessor extends Class {\n\n constructor(closed) {\n super();\n\n this.closed = closed;\n }\n\n process(dataPoints) {\n const points = dataPoints.slice(0);\n const segments = [];\n let closed = this.closed;\n let length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n this.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = this.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = this.lineFunction(p0,p1);\n const y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n isLine(p0, p1, p2) {\n const fn = this.lineFunction(p0, p1);\n const y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n controlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n }\n\n restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n tangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n point(xValue, yValue, xField, yField) {\n const controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n}\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nclass ChartAxis extends Class {\n constructor(axis) {\n super();\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n value(point) {\n const axis = this._axis;\n const value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n }\n\n slot(from, to, limit = true) {\n return this._axis.slot(from, to, limit);\n }\n\n range() {\n return this._axis.range();\n }\n\n valueRange() {\n return this._axis.valueRange();\n }\n}\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (let idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nclass ChartPane {\n constructor(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n }\n\n findAxisByName(name) {\n return findAxisByName(name, this._pane.axes);\n }\n}\n\nexport default ChartPane;","import { Class } from '../../common';\n\nclass ChartPlotArea extends Class {\n constructor(plotArea) {\n super();\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n}\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nconst Aggregates = {\n min: function(values) {\n const length = values.length;\n let min = MAX_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n const length = values.length;\n let max = MIN_VALUE;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n const length = values.length;\n let sum = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n let result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n const length = values.length;\n let count = 0;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n const count = countNumbers(values);\n let result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n const length = values.length;\n\n for (let i = 0; i < length; i++) {\n const value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n const get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nclass SeriesBinder extends Class {\n\n constructor() {\n super();\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n register(seriesTypes, valueFields = [ VALUE ], otherFields = {}) {\n\n for (let i = 0; i < seriesTypes.length; i++) {\n const type = seriesTypes[i];\n\n this._valueFields[type] = valueFields;\n this._otherFields[type] = otherFields;\n this._nullValue[type] = this._makeValue(valueFields, null);\n this._undefinedValue[type] = this._makeValue(valueFields, undefined);\n }\n }\n\n canonicalFields(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n }\n\n valueFields(series) {\n return this._valueFields[series.type] || [ VALUE ];\n }\n\n otherFields(series) {\n return this._otherFields[series.type] || [ VALUE ];\n }\n\n bindPoint(series, pointIx, item) {\n const data = series.data;\n const pointData = defined(item) ? item : data[pointIx];\n const result = { valueFields: { value: pointData } };\n const valueFields = this.valueFields(series);\n const otherFields = this._otherFields[series.type];\n let fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n const fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n const srcValueFields = this.sourceFields(series, valueFields);\n const srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n }\n\n _makeValue(fields, initialValue) {\n const value = {};\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n }\n\n _bindFromArray(array, fields) {\n const value = {};\n\n if (fields) {\n const length = Math.min(fields.length, array.length);\n\n for (let i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n }\n\n _bindFromObject(object, fields, srcFields = fields) {\n const value = {};\n\n if (fields) {\n const length = fields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = fields[i];\n const srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n }\n\n sourceFields(series, canonicalFields) {\n const sourceFields = [];\n\n if (canonicalFields) {\n const length = canonicalFields.length;\n\n for (let i = 0; i < length; i++) {\n const fieldName = canonicalFields[i];\n const sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n}\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nconst STD_ERR = \"stderr\";\nconst STD_DEV = \"stddev\";\nconst percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nconst standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nclass ErrorRangeCalculator extends Class {\n constructor(errorValue, series, field) {\n super();\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n initGlobalRanges(errorValue, series, field) {\n const data = series.data;\n const deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n const average = this.getAverage(data);\n const deviation = this.getStandardDeviation(data, average, false);\n const multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n const errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n const standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n }\n\n createValueGetter(series, field) {\n const data = series.data;\n const binder = SeriesBinder.current;\n const valueFields = binder.valueFields(series);\n const item = defined(data[0]) ? data[0] : {};\n let valueGetter;\n\n if (isArray(item)) {\n const index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n const srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n }\n\n getErrorRange(pointValue, errorValue) {\n let low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n const percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n }\n\n getStandardError(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n }\n\n getStandardDeviation(data, average, isSample) {\n const length = data.length;\n const total = isSample ? average.count - 1 : average.count;\n let squareDifferenceSum = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n }\n\n getAverage(data) {\n const length = data.length;\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < length; idx++) {\n const value = this.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n}\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nconst browser = support.browser || {};\n\nconst INITIAL_ANIMATION_DURATION = 600;\nconst FADEIN = \"fadeIn\";\n\nconst GLASS = \"glass\";\nconst BORDER_BRIGHTNESS = 0.8;\nconst TOOLTIP_OFFSET = 5;\nconst START_SCALE = browser.msie ? 0.001 : 0;\nconst ERROR_LOW_FIELD = \"errorLow\";\nconst ERROR_HIGH_FIELD = \"errorHigh\";\nconst X_ERROR_LOW_FIELD = \"xErrorLow\";\nconst X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nconst Y_ERROR_LOW_FIELD = \"yErrorLow\";\nconst Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nconst LINE_MARKER_SIZE = 8;\nconst ZERO = \"zero\";\nconst INTERPOLATE = \"interpolate\";\nconst GAP = \"gap\";\nconst ABOVE = \"above\";\nconst BELOW = \"below\";\n\nconst SMOOTH = \"smooth\";\nconst STEP = \"step\";\n\nconst AREA = \"area\";\nconst BAR = \"bar\";\nconst BOX_PLOT = \"boxPlot\";\nconst BUBBLE = \"bubble\";\nconst BULLET = \"bullet\";\nconst CANDLESTICK = \"candlestick\";\nconst COLUMN = \"column\";\nconst DONUT = \"donut\";\nconst FUNNEL = \"funnel\";\nconst PYRAMID = \"pyramid\";\nconst HEATMAP = \"heatmap\";\nconst HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nconst LINE = \"line\";\nconst OHLC = \"ohlc\";\nconst PIE = \"pie\";\nconst POLAR_AREA = \"polarArea\";\nconst POLAR_LINE = \"polarLine\";\nconst POLAR_SCATTER = \"polarScatter\";\nconst RADAR_AREA = \"radarArea\";\nconst RADAR_COLUMN = \"radarColumn\";\nconst RADAR_LINE = \"radarLine\";\nconst RANGE_AREA = \"rangeArea\";\nconst RANGE_BAR = \"rangeBar\";\nconst RANGE_COLUMN = \"rangeColumn\";\nconst SCATTER = \"scatter\";\nconst SCATTER_LINE = \"scatterLine\";\nconst VERTICAL_AREA = \"verticalArea\";\nconst VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nconst VERTICAL_BULLET = \"verticalBullet\";\nconst VERTICAL_LINE = \"verticalLine\";\nconst VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nconst WATERFALL = \"waterfall\";\nconst EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nconst TRENDLINE_EXPONENTIAL = 'exponentialTrendline';\nconst TRENDLINE_LINEAR = 'linearTrendline';\nconst TRENDLINE_LOGARITHMIC = 'logarithmicTrendline';\nconst TRENDLINE_MOVING_AVERAGE = 'movingAverageTrendline';\nconst TRENDLINE_POLYNOMIAL = 'polynomialTrendline';\nconst TRENDLINE_POWER = 'powerTrendline';\nconst TRENDLINE_SERIES = [\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n];\n\nconst LEGEND_ITEM_CLICK = \"legendItemClick\";\nconst LEGEND_ITEM_HOVER = \"legendItemHover\";\nconst LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nconst SERIES_CLICK = \"seriesClick\";\nconst SERIES_HOVER = \"seriesHover\";\nconst SERIES_OVER = \"seriesOver\";\nconst SERIES_LEAVE = \"seriesLeave\";\nconst PLOT_AREA_CLICK = \"plotAreaClick\";\nconst PLOT_AREA_HOVER = \"plotAreaHover\";\nconst PLOT_AREA_LEAVE = \"plotAreaLeave\";\nconst DRAG = \"drag\";\nconst DRAG_END = \"dragEnd\";\nconst DRAG_START = \"dragStart\";\nconst ZOOM_START = \"zoomStart\";\nconst ZOOM = \"zoom\";\nconst ZOOM_END = \"zoomEnd\";\nconst SELECT_START = \"selectStart\";\nconst SELECT = \"select\";\nconst SELECT_END = \"selectEnd\";\nconst RENDER = \"render\";\nconst SHOW_TOOLTIP = \"showTooltip\";\nconst HIDE_TOOLTIP = \"hideTooltip\";\nconst PANE_RENDER = \"paneRender\";\n\n\nconst CHART_POINT_ROLE = \"graphics-symbol\";\nconst CHART_POINT_CLASSNAME = \"k-chart-point\";\nconst CHART_POINT_ROLE_DESCRIPTION = \"Point\";\nconst LEGEND_ITEM_ROLE = \"checkbox\";\nconst LEGEND_ITEM_CLASSNAME = \"k-chart-legend-item\";\nconst LEGEND_ITEM_ARIA_ROLE_DESCRIPTION = \"Legend item\";\n\nconst LOGARITHMIC = \"log\";\nconst CATEGORY = \"category\";\n\nconst INSIDE_END = \"insideEnd\";\nconst INSIDE_BASE = \"insideBase\";\nconst OUTSIDE_END = \"outsideEnd\";\n\nconst MOUSEWHEEL = \"wheel\";\nconst MOUSEWHEEL_DELAY = 150;\nconst MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nconst DRILLDOWN = \"drilldown\";\nconst DRILLDOWN_FIELD = \"drilldown\";\n\nconst MIN_MOVING_AVERAGE_PERIOD = 2;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE,\n GLASS, BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL, PYRAMID,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP,\n DRILLDOWN, DRILLDOWN_FIELD,\n MIN_MOVING_AVERAGE_PERIOD,\n TRENDLINE_SERIES,\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER,\n CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION,\n LEGEND_ITEM_ROLE, LEGEND_ITEM_CLASSNAME,\n LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nconst DEFAULT_ERROR_BAR_WIDTH = 4;\n\nclass ErrorBarBase extends ChartElement {\n constructor(low, high, isVertical, chart, series, options) {\n super(options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n reflow(targetBox) {\n const endCaps = this.options.endCaps;\n const isVertical = this.isVertical;\n const axis = this.getAxis();\n const valueBox = axis.getSlot(this.low, this.high);\n const centerBox = targetBox.center();\n const capsWidth = this.getCapsWidth(targetBox, isVertical);\n const capValue = isVertical ? centerBox.x : centerBox.y;\n const capStart = capValue - capsWidth;\n const capEnd = capValue + capsWidth;\n let linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n }\n\n getCapsWidth(box, isVertical) {\n const boxSize = isVertical ? box.width() : box.height();\n const capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n }\n\n createVisual() {\n const options = this.options;\n const visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: () => {\n this.createDefaultVisual();\n const defaultVisual = this.visual;\n delete this.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n }\n\n createDefaultVisual() {\n const { options, linePoints } = this;\n const lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n super.createVisual();\n\n for (let idx = 0; idx < linePoints.length; idx += 2) {\n const line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this.visual.append(line);\n }\n }\n}\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nclass CategoricalErrorBar extends ErrorBarBase {\n getAxis() {\n const axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n}\n\nexport default CategoricalErrorBar;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n const visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n const pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n const data = series.data;\n const points = [];\n let sum = 0;\n let count = 0;\n\n for (let idx = 0; idx < data.length; idx++) {\n const pointData = SeriesBinder.current.bindPoint(series, idx);\n let value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function categoriesCount(series) {\n const seriesCount = series.length;\n let categories = 0;\n\n for (let i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray, isFunction, isObject, valueOrDefault, hasOwnProperty } from '../../common';\n\nconst MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state = {}, dryRun = false) {\n const defaults = state.defaults = state.defaults || {};\n const depth = state.depth = state.depth || 0;\n let needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (let property in options) {\n if (!inArray(property, state.excluded) && hasOwnProperty(options, property)) {\n const propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n const result = [];\n\n const seriesTypes = [].concat(types);\n for (let idx = 0; idx < series.length; idx++) {\n const currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\n\nconst dateCache = new WeakMap();\n\nexport default function parseDateCategory(category, row, intlService) {\n if (row === null || typeof row !== 'object') {\n return parseDate(intlService, category);\n }\n\n let date = dateCache.get(row);\n if (!date) {\n date = parseDate(intlService, category);\n dateCache.set(row, date);\n }\n\n return date;\n}\n","export default function hasGradientOverlay(options) {\n const overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n const type = axisOptions.type;\n const dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nconst AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n const fields = SeriesBinder.current.bindPoint(series, null, item);\n const valueFields = fields.valueFields;\n\n for (let field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext({ start, dir, min, max, getter, hasItem, series }) {\n let pointHasValue, outPoint;\n let idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n const { min, max } = range;\n const hasMinPoint = min > 0 && min < count;\n const hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n const missingValues = seriesMissingValues(series);\n let minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n let outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport { evalOptions, categoriesCount } from './utils';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE, OBJECT } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nclass CategoricalChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n }\n\n plotValue(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n const otherValues = [];\n let categorySum = 0;\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n if (other) {\n const stack = point.series.stack;\n const otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n }\n\n plotRange(point, startValue = 0) {\n const categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n let plotValue = this.plotValue(point);\n const positive = plotValue >= 0;\n let prevValue = startValue;\n let isStackedBar = false;\n const stack = defined(point.series.stack) ? point.series.stack : this.options.defaultStack;\n const isNonGroupStack = (stack) => stack === true || typeof stack === OBJECT && !stack.group;\n\n if (stack) {\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n const otherStack = defined(other.series.stack) ? other.series.stack : this.options.defaultStack;\n\n if (!otherStack) {\n continue;\n }\n\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (isNonGroupStack(stack) && !isNonGroupStack(otherStack)) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n\n const otherValue = this.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n // zero values should be skipped for log axis (startValue !== 0)\n if (startValue === 0 || otherValue !== 0) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n }\n\n stackLimits(axisName, stackName) {\n let min = MAX_VALUE;\n let max = MIN_VALUE;\n\n for (let i = 0; i < this.categoryPoints.length; i++) {\n const categoryPoints = this.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (let pIx = 0; pIx < categoryPoints.length; pIx++) {\n const point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n const to = this.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n }\n\n updateStackRange() {\n const { isStacked, series: chartSeries } = this.options;\n const limitsCache = {};\n\n if (isStacked) {\n for (let i = 0; i < chartSeries.length; i++) {\n const series = chartSeries[i];\n const axisName = series.axis;\n const key = axisName + series.stack;\n\n let limits = limitsCache[key];\n if (!limits) {\n limits = this.stackLimits(axisName, series.stack);\n\n const errorTotals = this.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this.valueAxisRanges[axisName] = limits;\n }\n }\n }\n }\n\n addErrorBar(point, data, categoryIx) {\n const { value, series, seriesIx } = point;\n const errorBars = point.options.errorBars;\n const lowValue = data.fields[ERROR_LOW_FIELD];\n const highValue = data.fields[ERROR_HIGH_FIELD];\n let errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n }\n\n addPointErrorBar(point, categoryIx) {\n const isVertical = !this.options.invertAxes;\n const options = point.options.errorBars;\n let { series, low, high } = point;\n\n if (this.options.isStacked) {\n const stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n const fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n const errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n }\n\n stackedErrorRange(point, categoryIx) {\n const plotValue = this.plotRange(point, 0)[1] - point.value;\n const low = point.low + plotValue;\n const high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n }\n\n addValue(data, fields) {\n const { categoryIx, series, seriesIx } = fields;\n\n let categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n let seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n const point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n }\n\n evalPointOptions(options, value, fields) {\n const categoryIx = fields.categoryIx;\n const category = fields.category;\n const series = fields.series;\n const seriesIx = fields.seriesIx;\n const state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n }\n\n updateRange(data, fields) {\n const axisName = fields.series.axis;\n const value = data.value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n }\n\n seriesValueAxis(series) {\n const plotArea = this.plotArea;\n const axisName = series.axis;\n const axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n }\n\n reflow(targetBox) {\n const categorySlots = this.categorySlots = [];\n const chartPoints = this.points;\n const categoryAxis = this.categoryAxis;\n let pointIx = 0;\n\n this.traverseDataPoints((data, fields) => {\n const { categoryIx, series: currentSeries } = fields;\n\n const valueAxis = this.seriesValueAxis(currentSeries);\n const point = chartPoints[pointIx++];\n\n let categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n const plotRange = this.plotRange(point, valueAxis.startValue());\n const valueSlot = this.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n const pointSlot = this.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this.options.isStacked100) {\n point.percentage = this.plotValue(point);\n }\n\n this.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n }\n\n valueSlot(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n }\n\n limitPoints() {\n const categoryPoints = this.categoryPoints;\n const points = categoryPoints[0].concat(last(categoryPoints));\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this.limitPoint(points[idx]);\n }\n }\n }\n\n limitPoint(point) {\n const limitedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limitedSlot.equals(point.box)) {\n point.reflow(limitedSlot);\n }\n }\n\n aboveAxis(point, valueAxis) {\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n const value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n }\n\n categoryAxisCrossingValue(valueAxis) {\n const categoryAxis = this.categoryAxis;\n const options = valueAxis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n }\n\n reflowPoint(point, pointSlot) {\n point.reflow(pointSlot);\n }\n\n reflowCategories() { }\n\n pointSlot(categorySlot, valueSlot) {\n const options = this.options;\n const invertAxes = options.invertAxes;\n const slotX = invertAxes ? valueSlot : categorySlot;\n const slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const count = categoriesCount(series);\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (let categoryIx = 0; categoryIx < count; categoryIx++) {\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentCategory = this.categoryAxis.categoryAt(categoryIx);\n const pointData = this.plotArea.bindPoint(currentSeries, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx\n });\n }\n }\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this._outOfRangeCallback(series[seriesIx], \"_outOfRangeMaxPoint\", seriesIx, callback);\n }\n }\n\n _outOfRangeCallback(series, field, seriesIx, callback) {\n const outOfRangePoint = series[field];\n if (outOfRangePoint) {\n const categoryIx = outOfRangePoint.categoryIx;\n const pointData = this.plotArea.bindPoint(series, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n }\n\n formatPointValue(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n }\n\n pointValue(data) {\n return data.valueFields.value;\n }\n}\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nconst PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nconst NoteMixin = {\n createNote: function() {\n const options = this.options.notes;\n const text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","export default function guid() {\n let id = \"\";\n let i;\n let random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n}","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getAriaTemplate, valueOrDefault, getSpacing } from '../../common';\nimport guid from '../../core/utils/guid';\n\nclass LinePoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n }\n\n render() {\n const { markers } = this.options;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n }\n\n createLabelElement(options) {\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n }, options),\n this.pointData()\n );\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n }\n\n getAriaLabelText() {\n const labels = this.options.labels;\n const ariaTemplate = getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n }\n\n markerBorder() {\n const options = this.options.markers;\n const background = options.background;\n const border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n }\n\n createVisual() {}\n\n createMarker() {\n const options = this.options.markers;\n const marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual,\n accessibilityOptions: deepExtend({\n ariaLabel: this.getAriaLabelText(this.options.labels)\n }, this.options.accessibility)\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n }\n\n markerBox() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n }\n\n reflow(targetBox) {\n const { options, aboveAxis } = this;\n const vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n const childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n let noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n const center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n }\n\n reflowLabel(box) {\n const { options, label } = this;\n let anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n }\n\n createHighlight() {\n const markers = this.options.highlight.markers;\n const defaultColor = this.markerBorder().color;\n const options = this.options.markers;\n const size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n const shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n }\n\n highlightVisual() {\n return (this.marker || {}).visual;\n }\n\n highlightVisualArgs() {\n const marker = this.marker;\n let visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n const size = this.options.markers.size;\n const halfSize = size / 2;\n const center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n }\n\n createFocusHighlight() {\n const markerOptions = this.options.markers;\n const highlightOptions = this.options.accessibility.highlight;\n const size = markerOptions.size + (markerOptions.border.width || 0);\n\n const highlight = new ShapeElement({\n type: markerOptions.type,\n width: size,\n height: size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n opacity: highlightOptions.opacity,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this._childBox);\n\n return highlight.getElement();\n }\n\n tooltipAnchor() {\n const markerBox = this.markerBox();\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n const x = markerBox.x2 + TOOLTIP_OFFSET;\n const horizontalAlign = LEFT;\n let y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n const markerBox = this.markerBox();\n return markerBox.overlaps(box);\n }\n\n unclipElements() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n\n focusVisual() {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", this._id);\n }\n\n this.toggleFocusHighlight(true);\n }\n }\n\n clearFocusFromVisual() {\n if (this.marker) {\n if (this.marker.visual) {\n this.marker.visual.options.set(\"id\", \"\");\n }\n\n this.toggleFocusHighlight(false);\n }\n }\n\n getIndex() {\n return defined(this.categoryIx) ? this.categoryIx : this.pointIx;\n }\n}\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n },\n accessibility: {\n tabIndex: 0,\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass LineSegment extends ChartElement {\n constructor(linePoints, series, seriesIx) {\n super();\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n points() {\n return this.toGeometryPoints(this.linePoints);\n }\n\n toGeometryPoints(points) {\n const result = [];\n for (let i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n }\n\n createVisual() {\n const customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: () => {\n this.segmentVisual();\n\n return this.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n }\n\n segmentVisual() {\n const { options, series } = this;\n let { color, _defaults: defaults } = series;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n }\n\n aliasFor(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n}\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nconst StepLineMixin = {\n calculateStepPoints: function(points) {\n const categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n const { justified, vertical, reverse } = categoryAxis.options;\n\n const stepAxis = vertical ? X : Y;\n const axis = vertical ? Y : X;\n const stepDir = reverse ? 2 : 1;\n const dir = stepDir;\n\n let previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n const result = [ previousPoint ];\n\n for (let idx = 1; idx < points.length; idx++) {\n const point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n const stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n const box = lintPoint.box;\n const result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nclass StepLineSegment extends LineSegment {\n points() {\n return this.calculateStepPoints(this.linePoints);\n }\n}\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nclass SplineSegment extends LineSegment {\n segmentVisual() {\n const series = this.series;\n const defaults = series._defaults;\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n const curveProcessor = new CurveProcessor(this.options.closed);\n const segments = curveProcessor.process(this.points());\n const curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n}\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nconst LineChartMixin = {\n renderSegments: function() {\n const { options, seriesPoints } = this;\n const series = options.series;\n const seriesCount = seriesPoints.length;\n let lastSegment;\n\n this._segments = [];\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const sortedPoints = this.sortPoints(seriesPoints[seriesIx]);\n const pointCount = sortedPoints.length;\n let linePoints = [];\n\n for (let pointIx = 0; pointIx < pointCount; pointIx++) {\n const point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n const missingValues = series.missingValues;\n const assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n const target = new Point(x, y);\n const allPoints = this.seriesPoints[seriesIx];\n let nearestPointDistance = MAX_VALUE;\n let nearestPoint;\n\n for (let i = 0; i < allPoints.length; i++) {\n const point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n const pointBox = point.box;\n const pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass ClipAnimation extends draw.Animation {\n setup() {\n this._setEnd(this.options.box.x1);\n }\n\n step(pos) {\n const box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n }\n\n _setEnd(x) {\n const element = this.element;\n const segments = element.segments;\n const topRight = segments[1].anchor();\n const bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n}\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nconst ClipAnimationMixin = {\n createAnimation: function() {\n const root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n const box = root.size();\n const clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n const points = this.animationPoints();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nclass LineChart extends CategoricalChart {\n render() {\n\n super.render();\n\n this.updateStackRange();\n this.renderSegments();\n }\n\n pointType() {\n return LinePoint;\n }\n\n createPoint(data, fields) {\n const { series, seriesIx } = fields;\n const missingValues = this.seriesMissingValues(series);\n let value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n plotRange(point) {\n let plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n const categoryIx = point.categoryIx;\n const categoryPoints = this.categoryPoints[categoryIx];\n\n for (let i = 0; i < categoryPoints.length; i++) {\n const other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this.plotValue(other);\n\n if (this.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nclass AreaSegment extends LineSegment {\n constructor(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n super(linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n createVisual() {\n const series = this.series;\n const defaults = series._defaults;\n const lineOptions = series.line || {};\n let color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n }\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.points());\n }\n\n stackSegments() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n }\n\n segmentsFromPoints(points) {\n return points.map((point) => new geom.Segment(point));\n }\n\n createStroke(style) {\n const stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n }\n\n hasStackSegment() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n }\n\n createFill(style) {\n const strokeSegments = this.strokeSegments();\n const fillSegments = strokeSegments.slice(0);\n const hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n const stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n const fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n }\n\n fillToAxes(fillPath) {\n const chart = this.parent;\n const invertAxes = chart.options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.series);\n const crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n const endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n const segments = this.strokeSegments();\n const firstPoint = segments[0].anchor();\n const lastPoint = last(segments).anchor();\n let end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n}\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nclass StepAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n }\n\n createStackSegments(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n}\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nclass SplineAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n const curveProcessor = new CurveProcessor(this.options.closed);\n const linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n }\n\n createStackSegments() {\n const strokeSegments = this.strokeSegments();\n const stackSegments = [];\n for (let idx = strokeSegments.length - 1; idx >= 0; idx--) {\n const segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n}\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nclass AreaChart extends LineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n\n let stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n const missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n let pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n reflow(targetBox) {\n super.reflow(targetBox);\n\n const stackPoints = this._stackPoints;\n if (stackPoints) {\n for (let idx = 0; idx < stackPoints.length; idx++) {\n const stackPoint = stackPoints[idx];\n const pointSlot = this.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n }\n\n _gapStackPoints(linePoints, seriesIx, style) {\n const seriesPoints = this.seriesPoints;\n let startIdx = linePoints[0].categoryIx;\n let length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n const endIdx = startIdx + length;\n const pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n const stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (let categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n const pointIx = categoryIx + pointOffset;\n let currentSeriesIx = seriesIx;\n let point;\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n const gapStackPoint = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n }\n\n _previousSegmentPoint(categoryIx, pointIx, segmentIx, seriesIdx) {\n const seriesPoints = this.seriesPoints;\n let index = seriesIdx;\n let point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n }\n\n _createGapStackPoint(categoryIx) {\n const options = this.pointOptions({}, 0);\n const point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nclass AxisGroupRangeTracker extends Class {\n constructor() {\n super();\n\n this.axisRanges = {};\n }\n\n update(chartAxisRanges) {\n const axisRanges = this.axisRanges;\n\n for (let axisName in chartAxisRanges) {\n const chartRange = chartAxisRanges[axisName];\n let range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n }\n\n reset(axisName) {\n this.axisRanges[axisName] = undefined;\n }\n\n query(axisName) {\n return this.axisRanges[axisName];\n }\n}\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nclass BarLabel extends ChartElement {\n constructor(content, options, pointData) {\n super(options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n createVisual() {\n this.textBox.options.noclip = this.options.noclip;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const { vertical, aboveAxis } = options;\n const text = this.children[0];\n const textOptions = text.options;\n const box = text.box;\n const padding = text.options.padding;\n let labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n }\n\n alignToClipBox(clipBox) {\n const vertical = this.options.vertical;\n const field = vertical ? Y : X;\n const start = field + \"1\";\n const end = field + \"2\";\n const text = this.children[0];\n const parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n const targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n}\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","import addAccessibilityAttributesToVisual from \"../../core/utils/add-accessibility-attributes-to-visual\";\nimport { deepExtend, getAriaTemplate } from \"../../common\";\nimport guid from '../../core/utils/guid';\n\nconst AccessibilityAttributesMixin = {\n addAccessibilityAttributesToVisual: function() {\n this._id = this._id || guid();\n\n const accessibilityOptions = deepExtend({\n ariaLabel: this.getAriaLabelText()\n }, this.options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n },\n\n getAriaLabelText() {\n const labels = this.options.labels;\n const ariaTemplate = getAriaTemplate(labels);\n\n if (ariaTemplate) {\n return ariaTemplate(this.pointData());\n }\n\n return this.getLabelText(labels);\n },\n\n focusVisual() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n },\n\n clearFocusFromVisual() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n }\n};\n\nexport default AccessibilityAttributesMixin;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE, BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nconst BAR_ALIGN_MIN_WIDTH = 6;\n\nclass Bar extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n }\n\n createLabelElement(options) {\n return new BarLabel(this.getLabelText(options),\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), this.pointData());\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (let i = 0; i < this.errorBars.length; i++) {\n this.errorBars[i].reflow(targetBox);\n }\n }\n }\n\n createVisual() {\n const { box, options } = this;\n const customVisual = options.visual;\n\n if (this.visible !== false) {\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n\n if (customVisual) {\n const visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: () => {\n const group = new draw.Group();\n this.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n }\n\n createRect(visual) {\n const options = this.options;\n const border = options.border;\n const strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n const rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n const path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n const width = this.box.width();\n const height = this.box.height();\n\n const size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n const overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n }\n\n createHighlight(style) {\n const highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n createFocusHighlight(style) {\n const borderWidth = this.options.accessibility.highlight.border.width;\n const highlight = draw.Path.fromRect(this.box.pad(borderWidth / 2).toRect(), style);\n\n return alignPathToPixel(highlight);\n }\n\n getBorderColor() {\n const color = this.color;\n const border = this.options.border;\n const brightness = border._brightness || BORDER_BRIGHTNESS;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n }\n\n tooltipAnchor() {\n const { options, box, aboveAxis } = this;\n const clipBox = this.owner.pane.clipBox() || box;\n let horizontalAlign = LEFT;\n let verticalAlign = TOP;\n let x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n const x1 = Math.max(box.x1, clipBox.x1);\n const x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n\n getIndex() {\n return this.categoryIx;\n }\n}\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\ndeepExtend(Bar.prototype, AccessibilityAttributesMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nclass ClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(box) {\n const { vertical, gap, spacing } = this.options;\n const children = this.children;\n const count = children.length;\n const axis = vertical ? Y : X;\n const slots = count + gap + (spacing * (count - 1));\n const slotSize = (vertical ? box.height() : box.width()) / slots;\n let position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, (child, idx) => {\n const childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n}\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass StackWrap extends ChartElement {\n reflow(targetBox) {\n const positionAxis = this.options.vertical ? X : Y;\n const children = this.children;\n const childrenCount = children.length;\n let box = this.box = new Box();\n\n for (let i = 0; i < childrenCount; i++) {\n const currentChild = children[i];\n\n if (currentChild.visible !== false) {\n const childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n}\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { OBJECT, STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nclass BarChart extends CategoricalChart {\n\n render() {\n super.render();\n this.updateStackRange();\n }\n\n pointType() {\n return Bar;\n }\n\n clusterType() {\n return ClusterLayout;\n }\n\n stackType() {\n return StackWrap;\n }\n\n stackLimits(axisName, stackName) {\n const limits = super.stackLimits(axisName, stackName);\n\n return limits;\n }\n\n createPoint(data, fields) {\n const { categoryIx, series, seriesIx } = fields;\n const { options, children } = this;\n const stackOrDefault = defined(series.stack) ? series.stack : options.defaultStack;\n const value = this.pointValue(data);\n let pointOptions = this.pointOptions(series, seriesIx);\n\n const labelOptions = pointOptions.labels;\n if (stackOrDefault) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = stackOrDefault;\n\n let color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const pointType = this.pointType();\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n const clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (options.isStacked) {\n const stackWrap = this.getStackWrap(stackOrDefault, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n }\n\n getStackWrap(stack, cluster) {\n const stackGroup = (typeof stack === OBJECT) ? (stack.group || true) : stack;\n const wraps = cluster.children;\n let stackWrap;\n\n if (typeof stackGroup === STRING || stackGroup === true) {\n for (let i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n }\n\n if (!stackWrap) {\n const stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n }\n\n categorySlot(categoryAxis, categoryIx, valueAxis) {\n const options = this.options;\n const categorySlot = categoryAxis.getSlot(categoryIx);\n const startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n const zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n const stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n createAnimation() {\n this._setAnimationOptions();\n super.createAnimation();\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n }\n\n _setChildrenAnimation() {\n const points = this.points;\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n const pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n }\n\n _setAnimationOptions() {\n const options = this.options;\n const animation = options.animation || {};\n let origin;\n\n if (options.isStacked) {\n const valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n}\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;\n","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass Candlestick extends ChartElement {\n constructor(value, options) {\n super(options);\n this.value = value;\n }\n\n getLabelText(options) {\n return this.formatValue(options.format);\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const ocSlot = valueAxis.getSlot(value.open, value.close);\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n const mid = lhSlot.center().x;\n const points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n }\n\n reflowNote() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n }\n\n createVisual() {\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n }\n\n mainVisual(options) {\n const group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n }\n\n createBody(container, options) {\n const body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n }\n\n drawLines(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n const lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n }\n\n getBorderColor() {\n const border = this.options.border;\n let borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n }\n\n createOverlay() {\n const overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const normalColor = this.color;\n\n this.color = highlight.color || this.color;\n const overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n }\n\n highlightVisual() {\n return this._mainVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n }\n\n tooltipAnchor() {\n const box = this.box;\n const clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n value: this.value,\n meanPoints: this.meanPoints,\n medianPoints: this.medianPoints,\n whiskerPoints: this.whiskerPoints,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n\n getIndex() {\n return this.categoryIx;\n }\n}\n\nCandlestick.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{4:d}
Open:{0:C}
High:{1:C}
Low:{2:C}
Close:{3:C}
\"\n },\n labels: {\n format: \"\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\ndeepExtend(Candlestick.prototype, AccessibilityAttributesMixin);\n\nexport default Candlestick;","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK, OHLC } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nclass CandlestickChart extends CategoricalChart {\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n return Candlestick;\n }\n\n createPoint(data, fields) {\n const { series } = fields;\n const pointType = this.pointType();\n const value = data.valueFields;\n let pointOptions = deepExtend({}, series);\n let color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK || series.type === OHLC) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n const point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n }\n\n splitValue(value) {\n return [ value.low, value.open, value.close, value.high ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const parts = this.splitValue(value);\n let axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n }\n\n animationPoints() {\n return this.points;\n }\n}\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nclass BoxPlot extends Candlestick {\n constructor(value, options) {\n super(value, options);\n\n this.createNote();\n }\n\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n let whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n const medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n const meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n }\n\n reflowBoxSlot(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n }\n\n renderOutliers(options) {\n const value = this.value;\n const outliers = value.outliers || [];\n const outerFence = Math.abs(value.q3 - value.q1) * 3;\n const elements = [];\n let markers = options.markers || {};\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n let markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this.color)) {\n markersBorder.color = this.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n const shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n }\n\n reflowOutliers(outliers) {\n const valueAxis = this.owner.seriesValueAxis(this.options);\n const center = this.box.center();\n\n for (let i = 0; i < outliers.length; i++) {\n const outlierValue = outliers[i].value;\n const markerBox = valueAxis.getSlot(outlierValue);\n\n if (this.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this.box = this.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n }\n\n mainVisual(options) {\n const group = super.mainVisual(options);\n const outliers = this.renderOutliers(options);\n\n for (let i = 0; i < outliers.length; i++) {\n const element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n }\n\n createLines(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n }\n\n getBorderColor() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return super.getBorderColor();\n }\n}\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{6:d}
Lower:{0:C}
Q1:{1:C}
Median:{2:C}
Mean:{5:C}
Q3:{3:C}
Upper:{4:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nclass VerticalBoxPlot extends BoxPlot {\n reflowBoxSlot(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n }\n\n reflowWhiskerSlot(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n }\n\n calcMeanPoints(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n }\n\n calcWhiskerPoints(boxSlot, whiskerSlot) {\n const mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n }\n\n calcMedianPoints(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n}\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nclass BoxPlotChart extends CandlestickChart {\n addValue(data, fields) {\n const { categoryIx, category, series, seriesIx } = fields;\n const { children, options } = this;\n const value = data.valueFields;\n const valueParts = this.splitValue(value);\n const hasValue = areNumbers(valueParts);\n const dataItem = series.data[categoryIx];\n let categoryPoints = this.categoryPoints[categoryIx];\n let point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n }\n\n pointType() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n }\n\n splitValue(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n let parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n let axisRange = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n\n this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n }\n\n filterOutliers(items) {\n const length = (items || []).length;\n const result = [];\n\n for (let i = 0; i < length; i++) {\n const item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n }\n\n supportsPointInactiveOpacity() {\n return false;\n }\n}\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nclass ScatterErrorBar extends ErrorBarBase {\n getAxis() {\n const axes = this.chart.seriesAxes(this.series);\n const axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n}\n\nexport default ScatterErrorBar;","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\n\nimport { hasValue, evalOptions } from '../utils';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nclass ScatterChart extends ChartElement {\n constructor(plotArea, options) {\n\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n addErrorBar(point, field, fields) {\n const value = point.value[field];\n const valueErrorField = field + \"Value\";\n const lowField = field + \"ErrorLow\";\n const highField = field + \"ErrorHigh\";\n const { seriesIx, series } = fields;\n const errorBars = point.options.errorBars;\n const lowValue = fields[lowField];\n const highValue = fields[highField];\n\n if (isNumber(value)) {\n let errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n }\n\n addPointErrorBar(errorRange, point, field) {\n const { low, high } = errorRange;\n const { series, options: { errorBars: options } } = point;\n const isVertical = field === Y;\n const item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n const errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n }\n\n addValue(value, fields) {\n const { x, y } = value;\n const seriesIx = fields.seriesIx;\n const series = this.options.series[seriesIx];\n const missingValues = this.seriesMissingValues(series);\n const seriesPoints = this.seriesPoints[seriesIx];\n\n let pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n let point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n }\n\n seriesMissingValues(series) {\n return series.missingValues;\n }\n\n createMissingValue() {}\n\n updateRange(value, series) {\n const intlService = this.chartService.intl;\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n let { x, y } = value;\n let xAxisRange = this.xAxisRanges[xAxisName];\n let yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\", \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return LinePoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const seriesAxes = this.seriesAxes(fields.series);\n const slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n const slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series }, seriesPoints } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this.plotArea.bindPoint(currentSeries, pointIx);\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin);\n\nexport default ScatterChart;\n","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nclass Bubble extends LinePoint {\n constructor(value, options) {\n super(value, options);\n\n this.category = value.category;\n }\n\n createHighlight() {\n const highlight = this.options.highlight;\n const border = highlight.border;\n const markers = this.options.markers;\n const center = this.box.center();\n const radius = (markers.size + markers.border.width + border.width) / 2;\n const highlightGroup = new draw.Group();\n const shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n const overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n\n createFocusHighlight(style) {\n const highlightOptions = this.options.accessibility.highlight;\n const markers = this.options.markers;\n const center = this.box.center();\n const radius = (markers.size + markers.border.width) / 2 + highlightOptions.border.width / 2;\n const highlight = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), style);\n\n return highlight;\n }\n}\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nclass BubbleChart extends ScatterChart {\n _initFields() {\n this._maxSize = MIN_VALUE;\n super._initFields();\n }\n\n addValue(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n super.addValue(value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n }\n\n reflow(box) {\n this.updateBubblesSize(box);\n super.reflow(box);\n }\n\n pointType() {\n return Bubble;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n const pointsCount = series.data.length;\n const delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n const animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n let color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n let pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n const point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n updateBubblesSize(box) {\n const { options: { series } } = this;\n const boxSize = Math.min(box.width(), box.height());\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesPoints = this.seriesPoints[seriesIx];\n const minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n const maxSize = currentSeries.maxSize || boxSize * 0.2;\n const minR = minSize / 2;\n const maxR = maxSize / 2;\n const minArea = Math.PI * minR * minR;\n const maxArea = Math.PI * maxR * maxR;\n const areaRange = maxArea - minArea;\n const areaRatio = areaRange / this._maxSize;\n\n for (let pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n const point = seriesPoints[pointIx];\n if (point) {\n const area = Math.abs(point.value.size) * areaRatio;\n const radius = Math.sqrt((minArea + area) / Math.PI);\n const baseZIndex = valueOrDefault(point.options.zIndex, 0);\n const zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n }\n\n createAnimation() {}\n createVisual() {}\n}\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass Target extends ShapeElement { }\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { Box, ChartElement } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, setDefaultOptions, valueOrDefault } from '../../common';\n\nimport BarLabel from '../bar-chart/bar-label';\nimport { CHART_POINT_ROLE_DESCRIPTION, CHART_POINT_CLASSNAME, CHART_POINT_ROLE } from '../constants';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nclass Bullet extends ChartElement {\n constructor(value, options) {\n super(options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n const options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n }\n\n createLabelElement(options) {\n return new BarLabel(this.getLabelText(options),\n options,\n this.pointData());\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n }\n\n reflow(box) {\n this.render();\n\n const { options, target, owner: chart } = this;\n const invertAxes = options.invertAxes;\n const valueAxis = chart.seriesValueAxis(this.options);\n const categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n const targetValueSlot = valueAxis.getSlot(this.value.target);\n const targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n const targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n const targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n const label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n }\n\n createVisual() {\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n\n const options = this.options;\n const body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n }\n\n createAnimation() {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n }\n\n createHighlight(style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n }\n\n highlightVisual() {\n return this.bodyVisual;\n }\n\n highlightVisualArgs() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n getIndex() {\n return this.categoryIx;\n }\n}\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\nBullet.prototype.createFocusHighlight = Bar.prototype.createFocusHighlight;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
Target: {1}\"\n },\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\ndeepExtend(Bullet.prototype, AccessibilityAttributesMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nclass BulletChart extends CategoricalChart {\n constructor(plotArea, options) {\n\n wrapData(options);\n\n super(plotArea, options);\n }\n\n reflowCategories(categorySlots) {\n const children = this.children;\n const childrenLength = children.length;\n\n for (let i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n }\n\n plotRange(point) {\n const series = point.series;\n const valueAxis = this.seriesValueAxis(series);\n const axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n }\n\n createPoint(data, fields) {\n const { categoryIx, series } = fields;\n const { options, children } = this;\n const value = data.valueFields;\n\n let bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n let color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n const bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n let cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n }\n\n updateRange(value, fields) {\n const { current, target } = value;\n const axisName = fields.series.axis;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n }\n\n pointValue(data) {\n return data.valueFields.current;\n }\n\n aboveAxis(point) {\n const value = point.value.current;\n\n return value > 0;\n }\n\n createAnimation() {\n const points = this.points;\n\n this._setAnimationOptions();\n\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n point.options.animation = this.options.animation;\n point.createAnimation();\n }\n }\n}\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n const series = options.series;\n\n for (let i = 0; i < series.length; i++) {\n const seriesItem = series[i];\n const data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;\n","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nclass BaseTooltip extends Class {\n constructor(chartService, options) {\n super();\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n getStyle(options, point) {\n let { background, border: { color: border } } = options;\n\n if (point) {\n const pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n const padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n }\n\n show(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n const style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n const background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n }\n\n hide() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n }\n\n destroy() {\n delete this.chartService;\n }\n}\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nclass CrosshairTooltip extends BaseTooltip {\n constructor(chartService, crosshair, options) {\n super(chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n initAxisName() {\n const axis = this.crosshair.axis;\n const plotArea = axis.plotArea;\n let name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n }\n\n showAt(point) {\n const { crosshair: { axis }, options } = this;\n let value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n let formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n }\n\n hide() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n }\n\n getAnchor() {\n const { crosshair, options: { position, padding } } = this;\n const vertical = !crosshair.axis.options.vertical;\n const lineBox = crosshair.line.bbox();\n let horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n}\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass Crosshair extends ChartElement {\n constructor(chartService, axis, options) {\n super(options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n const tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n showAt(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n }\n\n hide() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n }\n\n moveLine() {\n const { axis, point } = this;\n const vertical = axis.options.vertical;\n const box = this.getBox();\n const dim = vertical ? Y : X;\n const lineStart = new geom.Point(box.x1, box.y1);\n let lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n const slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n }\n\n getBox() {\n const axis = this.axis;\n const axes = axis.pane.axes;\n const length = axes.length;\n const vertical = axis.options.vertical;\n const box = axis.lineBox().clone();\n const dim = vertical ? X : Y;\n let axisLineBox;\n\n for (let i = 0; i < length; i++) {\n const currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n }\n\n destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n super.destroy();\n }\n}\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nclass ChartContainer extends ChartElement {\n constructor(options, pane) {\n super(options);\n this.pane = pane;\n }\n\n shouldClip() {\n const children = this.children;\n const length = children.length;\n\n for (let i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n }\n\n _clipBox() {\n return this.pane.chartsBox();\n }\n\n createVisual() {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n const clipBox = this.clipBox = this._clipBox();\n const clipRect = clipBox.toRect();\n const clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n unclipLabels() {\n const { children: charts, clipBox } = this;\n\n for (let i = 0; i < charts.length; i++) {\n const points = charts[i].points || {};\n const length = points.length;\n\n for (let j = 0; j < length; j++) {\n const point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n const { label, note } = point;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n }\n\n destroy() {\n super.destroy();\n\n delete this.parent;\n }\n}\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nclass Pane extends BoxElement {\n constructor(options) {\n super(options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n createTitle() {\n let titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n }\n\n appendAxis(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n }\n\n appendAxisAt(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n }\n\n appendChart(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n }\n\n empty() {\n const plotArea = this.parent;\n\n if (plotArea) {\n for (let i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this.axes[i]);\n }\n\n for (let i = 0; i < this.charts.length; i++) {\n plotArea.removeChart(this.charts[i]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n }\n\n reflow(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n let content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n super.reflow(targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n }\n\n visualStyle() {\n const style = super.visualStyle();\n style.zIndex = -10;\n\n return style;\n }\n\n renderComplete() {\n if (this.options.visible) {\n this.createGridLines();\n }\n }\n\n stackRoot() {\n return this;\n }\n\n clipRoot() {\n return this;\n }\n\n createGridLines() {\n const axes = this.axes;\n const allAxes = axes.concat(this.parent.axes);\n const vGridLines = [];\n const hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const vertical = axis.options.vertical;\n const gridLines = vertical ? vGridLines : hGridLines;\n for (let j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n const altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n }\n\n refresh() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n }\n\n chartsBox() {\n const axes = this.axes;\n const length = axes.length;\n const chartsBox = new Box();\n\n for (let idx = 0; idx < length; idx++) {\n const axis = axes[idx];\n const axisValueField = axis.options.vertical ? Y : X;\n const lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n const allAxes = this.parent.axes;\n const length = allAxes.length;\n\n for (let idx = 0; idx < length; idx++) {\n const axis = allAxes[idx];\n if (!axis.options.vertical) {\n const lineBox = axis.lineBox();\n chartsBox.x1 = lineBox.x1;\n chartsBox.x2 = lineBox.x2;\n }\n }\n }\n return chartsBox;\n }\n\n clipBox() {\n return this.chartContainer.clipBox;\n }\n\n notifyRender() {\n const service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n}\n\nlet ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\nimport SeriesBinder from '../series-binder';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END, INHERIT } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString,\n limitValue, round, setDefaultOptions, last, cycleIndex } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nclass PlotAreaBase extends ChartElement {\n constructor(series, options, chartService) {\n super(options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.data = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n this.originalSeries = series;\n this._bindCache = new WeakMap();\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n initFields() { }\n\n initSeries() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n }\n\n bindPoint(series, pointIx, item) {\n let cached = this._bindCache.get(series);\n if (!cached) {\n cached = [];\n this._bindCache.set(series, cached);\n }\n\n let data = cached[pointIx];\n if (!data) {\n data = cached[pointIx] = SeriesBinder.current.bindPoint(series, pointIx, item);\n }\n\n return data;\n }\n\n createPanes() {\n const titleOptions = this.options.title || {};\n const paneDefaults = this.options.paneDefaults;\n const paneOptions = this.options.panes || [];\n const panesLength = Math.max(paneOptions.length, 1);\n const panes = [];\n\n const defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (let i = 0; i < panesLength; i++) {\n const options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n const currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this.append(currentPane);\n }\n\n this.panes = panes;\n }\n\n crosshairOptions(axis) {\n return axis.options.crosshair;\n }\n\n createCrosshairs(panes = this.panes) {\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n for (let j = 0; j < pane.axes.length; j++) {\n const axis = pane.axes[j];\n const options = this.crosshairOptions(axis);\n if (options && options.visible) {\n const currentCrosshair = new Crosshair(this.chartService, axis, options);\n\n this.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n }\n\n removeCrosshairs(pane) {\n const crosshairs = this.crosshairs;\n const axes = pane.axes;\n\n for (let i = crosshairs.length - 1; i >= 0; i--) {\n for (let j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n }\n\n hideCrosshairs() {\n const crosshairs = this.crosshairs;\n for (let idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n }\n\n findPane(name) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n }\n\n findPointPane(point) {\n const panes = this.panes;\n let matchingPane;\n\n for (let i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n }\n\n appendAxis(axis) {\n const pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n }\n\n removeAxis(axisToRemove) {\n const filteredAxes = [];\n\n for (let i = 0; i < this.axes.length; i++) {\n const axis = this.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n }\n\n appendChart(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n }\n\n removeChart(chartToRemove) {\n const filteredCharts = [];\n\n for (let i = 0; i < this.charts.length; i++) {\n const chart = this.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n }\n\n addToLegend(series) {\n const count = series.length;\n const legend = this.options.legend;\n const labels = legend.labels || {};\n const inactiveItems = legend.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n const data = [];\n\n for (let i = 0; i < count; i++) {\n const currentSeries = series[i];\n const seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n let text = currentSeries.name;\n const labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n const defaults = currentSeries._defaults;\n let color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n let itemLabelOptions, markerColor;\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.data, data);\n }\n\n groupAxes(panes) {\n const xAxes = [];\n const yAxes = [];\n\n for (let paneIx = 0; paneIx < panes.length; paneIx++) {\n const paneAxes = panes[paneIx].axes;\n for (let axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n const axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n }\n\n groupSeriesByPane() {\n const series = this.series;\n const seriesByPane = {};\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const pane = this.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n }\n\n filterVisibleSeries(series) {\n const result = [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n reflow(targetBox) {\n const options = this.options.plotArea;\n const panes = this.panes;\n const margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n }\n\n redraw(panes) {\n const panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n const root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (let i = 0; i < panesArray.length; i++) {\n this.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this._bindCache = new WeakMap();\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (let i = 0; i < panesArray.length; i++) {\n panesArray[i].refresh();\n }\n }\n\n axisCrossingValues(axis, crossingAxes) {\n const options = axis.options;\n const crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n const valuesToAdd = crossingAxes.length - crossingValues.length;\n const defaultValue = crossingValues[0] || 0;\n\n for (let i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n }\n\n alignAxisTo(axis, targetAxis, crossingValue, targetCrossingValue) {\n const slot = axis.getSlot(crossingValue, crossingValue, true);\n const slotEdge = axis.options.reverse ? 2 : 1;\n const targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n const targetEdge = targetAxis.options.reverse ? 2 : 1;\n const axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n }\n\n alignAxes(xAxes, yAxes) {\n const xAnchor = xAxes[0];\n const yAnchor = yAxes[0];\n const xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n const yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n const leftAnchors = {};\n const rightAnchors = {};\n const topAnchors = {};\n const bottomAnchors = {};\n\n for (let i = 0; i < yAxes.length; i++) {\n const axis = yAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n const anchor = paneAnchor(xAxes, pane) || xAnchor;\n let anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, yAxes);\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n // Locate pane anchor, if any, and align the axis to it\n const paneYAnchor = paneAnchor(yAxes, pane) || yAnchor;\n if (paneYAnchor !== axis) {\n axis.alignTo(paneYAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (let i = 0; i < xAxes.length; i++) {\n const axis = xAxes[i];\n const pane = axis.pane;\n const paneId = pane.id;\n const visible = axis.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n const anchor = paneAnchor(yAxes, pane) || yAnchor;\n let anchorCrossings = yAnchorCrossings;\n if (anchor !== yAnchor) {\n anchorCrossings = this.axisCrossingValues(anchor, xAxes);\n }\n\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().y1) === round(anchor.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n this.alignAxisTo(axis, anchor, xAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(topAnchors[paneId].box, TOP)\n .translate(0, -axis.options.margin)\n );\n }\n\n if (visible) {\n topAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().y2, COORD_PRECISION) === round(anchor.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(bottomAnchors[paneId].box, BOTTOM)\n .translate(0, axis.options.margin)\n );\n }\n\n if (visible) {\n bottomAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0) {\n axis.alignTo(xAnchor);\n axis.reflow(axis.box);\n }\n }\n }\n\n shrinkAxisWidth(panes) {\n const axes = this.groupAxes(panes).any;\n const axisBox = axisGroupBox(axes);\n let overflowX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n }\n\n shrinkAxisHeight(panes) {\n let shrinked;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const axes = currentPane.axes;\n const overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (let j = 0; j < axes.length; j++) {\n const currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n }\n\n fitAxes(panes) {\n const axes = this.groupAxes(panes).any;\n let offsetX = 0;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n const paneAxes = currentPane.axes;\n const paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n const axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n const offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (let j = 0; j < paneAxes.length; j++) {\n const currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n\n currentAxis.reflow(\n currentAxis.box.translate(offsetX, 0)\n );\n }\n }\n\n reflowAxes(panes) {\n const axes = this.groupAxes(panes);\n\n for (let i = 0; i < panes.length; i++) {\n this.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n }\n\n autoRotateAxisLabels(groupedAxes) {\n const { panes } = this;\n const axes = allPaneAxes(panes);\n let rotated;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (let idx = 0; idx < panes.length; idx++) {\n this.reflowPaneAxes(panes[idx]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n }\n\n reflowPaneAxes(pane) {\n const axes = pane.axes;\n const length = axes.length;\n\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n }\n\n reflowCharts(panes) {\n const charts = this.charts;\n const count = charts.length;\n const box = this.box;\n\n for (let i = 0; i < count; i++) {\n const chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n }\n\n reflowPanes() {\n const { box, panes } = this;\n const panesLength = panes.length;\n let remainingHeight = box.height();\n let autoHeightPanes = 0;\n let top = box.y1;\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n const percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n\n if (!currentPane.options.height) {\n currentPane.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (let i = 0; i < panesLength; i++) {\n const currentPane = panes[i];\n const paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane.reflow(paneBox);\n\n top += currentPane.options.height;\n }\n }\n\n backgroundBox() {\n const axes = this.axes;\n const axesCount = axes.length;\n let box;\n\n for (let i = 0; i < axesCount; i++) {\n const axisA = axes[i];\n\n for (let j = 0; j < axesCount; j++) {\n const axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n const lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n }\n\n chartsBoxes() {\n const panes = this.panes;\n const boxes = [];\n\n for (let idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n }\n\n addBackgroundPaths(multipath) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n }\n\n backgroundContainsPoint(point) {\n const boxes = this.chartsBoxes();\n for (let idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n }\n\n createVisual() {\n super.createVisual();\n\n const options = this.options.plotArea;\n let { opacity, background, border = {} } = options;\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n const bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n }\n\n pointsByCategoryIndex(categoryIndex) {\n const charts = this.charts;\n const result = [];\n\n if (categoryIndex !== null) {\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n const points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n }\n\n pointsBySeriesIndex(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n }\n\n pointsByPointIndex(pointIndex) {\n return this.filterPoints(function(point) {\n return point.getIndex() === pointIndex;\n });\n }\n\n pointsBySeriesName(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n }\n\n filterPoints(callback) {\n const charts = this.charts;\n const result = [];\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n }\n\n findPoint(callback) {\n const charts = this.charts;\n\n for (let i = 0; i < charts.length; i++) {\n const chart = charts[i];\n const points = chart.points;\n for (let j = 0; j < points.length; j++) {\n const point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n }\n\n paneByPoint(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n }\n\n detachLabels() {\n const axes = this.groupAxes(this.panes);\n const xAxes = axes.x;\n const yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n }\n\n detachAxisGroupLabels(axes, crossingAxes) {\n let labelAxisCount = 0;\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const pane = axis.pane;\n const anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n const axisIndex = i + labelAxisCount;\n const labelAxis = this.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n const pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n }\n\n createLabelAxis(axis, axisIndex, anchor) {\n const labelOptions = axis.options.labels;\n const position = labelOptions.position;\n const onAxis = position !== END && position !== START;\n const visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n const allAxes = this.groupAxes(this.panes);\n const crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n const anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n const end = position === END;\n const range = anchor.range();\n const edge = end ? range.max : range.min;\n const crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n const labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n\n isTrendline(series) {\n return series && inArray(series.type, TRENDLINE_SERIES);\n }\n\n trendlineFactory() { /* abstract */ }\n\n createTrendlineSeries() {\n const modifiedSeries = [];\n\n this.series = this.series.map(series => {\n if (!this.isTrendline(series)) {\n return series;\n }\n\n const forSeries = this.seriesByName(series.for);\n if (!forSeries) {\n throw new Error('Invalid Configuration: Unable to locate linked series ' +\n `\"${series.for}\" for trendline \"${series.name}\".`);\n }\n\n const valueFields = SeriesBinder.current.valueFields(forSeries);\n const field = last(valueFields); // Use the last field for multi-field series\n\n const trendlineSeries = this.trendlineFactory(Object.assign({}, {field}, series), forSeries);\n if (trendlineSeries) {\n if (forSeries.visible === false) {\n trendlineSeries.visible = false;\n }\n\n if (trendlineSeries.color === INHERIT) {\n trendlineSeries.color = forSeries.color;\n }\n\n modifiedSeries.push(trendlineSeries);\n }\n\n return trendlineSeries;\n }).filter(series => series !== null);\n\n return modifiedSeries;\n }\n\n seriesByName(name) {\n return this.series.find(series => series.name === name);\n }\n\n getFirstPoint() {\n return this.pointsBySeriesIndex(0)[0];\n }\n\n getPointBelow(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n }\n\n getPointAbove(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n }\n\n getPointToTheRight(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, 1);\n }\n\n getPointToTheLeft(point) {\n return this._getNextPoint(point, this._pointsByHorizontal, -1);\n }\n\n _getNextPoint(point, getPointsFunc, increment) {\n let points = getPointsFunc.call(this, point);\n const pointIndex = points.indexOf(point);\n let nextIndex = pointIndex + increment;\n const loopPoints = (direction) => {\n // loop over to last non-empty collection\n let result;\n let offset = 0;\n do {\n offset += direction;\n result = getPointsFunc.call(this, point, offset);\n } while (result.length === 0);\n\n return result;\n };\n\n if (nextIndex < 0) {\n points = loopPoints(-1);\n\n return points.at(-1);\n } else if (nextIndex >= points.length) {\n points = loopPoints(1);\n\n return points.at(0);\n }\n\n return points[nextIndex];\n }\n\n _pointsByVertical(basePoint) {\n return this.pointsByPointIndex(basePoint.getIndex());\n }\n\n _pointsByHorizontal(basePoint, offset = 0) {\n let index = cycleIndex(basePoint.series.index + offset, this.series.length);\n return this.pointsBySeriesIndex(index);\n }\n}\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some((a) =>\n a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false\n );\n}\n\nfunction axisGroupBox(axes) {\n const length = axes.length;\n let box;\n\n for (let i = 0; i < length; i++) {\n const axis = axes[i];\n const visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n const axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (let i = 0; i < axes.length; i++) {\n const anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nconst allPaneAxes = (panes) => panes.reduce((acc, pane) => acc.concat(pane.axes), []);\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nconst PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nclass SeriesAggregator extends Class {\n constructor(series, binder, defaultAggregates) {\n super();\n\n const canonicalFields = binder.canonicalFields(series);\n const valueFields = binder.valueFields(series);\n const sourceFields = binder.sourceFields(series, canonicalFields);\n const seriesFields = this._seriesFields = [];\n const defaults = defaultAggregates.query(series.type);\n const rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (let i = 0; i < canonicalFields.length; i++) {\n const field = canonicalFields[i];\n let fieldAggregate;\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n aggregatePoints(srcPoints, group) {\n const { _series: series, _seriesFields: seriesFields } = this;\n const data = this._bindPoints(srcPoints || []);\n const firstDataItem = data.dataItems[0];\n let result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n const fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (let i = 0; i < seriesFields.length; i++) {\n const field = seriesFields[i];\n const srcValues = this._bindField(data.values, field.canonicalName);\n const value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n }\n\n _bindPoints(points) {\n const { _binder: binder, _series: series } = this;\n const values = [];\n const dataItems = [];\n\n for (let i = 0; i < points.length; i++) {\n const pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n }\n\n _bindField(data, field) {\n const values = [];\n const count = data.length;\n\n for (let i = 0; i < count; i++) {\n const item = data[i];\n const valueFields = item.valueFields;\n let value;\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n}\n\nfunction setValue(fieldName, target, value) {\n let parentObj = target;\n let field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n const parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nclass DefaultAggregates extends Class {\n constructor() {\n super();\n\n this._defaults = {};\n }\n\n register(seriesTypes, aggregates) {\n for (let i = 0; i < seriesTypes.length; i++) {\n this._defaults[seriesTypes[i]] = aggregates;\n }\n }\n\n query(seriesType) {\n return this._defaults[seriesType];\n }\n}\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\n\nimport { deepExtend } from '../../common';\n\nclass RangeBar extends Bar {\n createLabel() {\n const labels = this.options.labels;\n const fromOptions = deepExtend({}, labels, labels.from);\n const toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this.createLabelElement(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this.createLabelElement(toOptions);\n this.append(this.labelTo);\n }\n }\n\n reflow(targetBox) {\n this.render();\n\n const { labelFrom, labelTo, value } = this;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n}\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nclass RangeBarChart extends BarChart {\n pointType() {\n return RangeBar;\n }\n\n pointValue(data) {\n return data.valueFields;\n }\n\n formatPointValue(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n }\n\n plotRange(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n updateRange(value, fields) {\n const axisName = fields.series.axis;\n const { from, to } = value;\n let axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n }\n\n aboveAxis(point) {\n const value = point.value;\n return value.from < value.to;\n }\n}\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nclass RangeLinePoint extends LinePoint {\n aliasFor() {\n return this.parent;\n }\n}\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\nimport guid from '../../core/utils/guid';\n\nconst AUTO = 'auto';\nconst DEFAULT_FROM_FORMAT = '{0}';\nconst DEFAULT_TO_FORMAT = '{1}';\n\nclass RangeAreaPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this._id = guid();\n this.initLabelsFormat();\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n const { markers, labels } = this.options;\n const value = this.value;\n\n const fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n const toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n }\n\n reflow(targetBox) {\n this.render();\n\n const { from: fromBox, to: toBox } = targetBox;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n }\n\n createHighlight() {\n const group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n }\n\n highlightVisual() {\n return this.visual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n }\n\n createFocusHighlight() {\n const group = new draw.Group();\n group.append(this.fromPoint.createFocusHighlight());\n group.append(this.toPoint.createFocusHighlight());\n\n return group;\n }\n\n tooltipAnchor() {\n const clipBox = this.owner.pane.clipBox();\n const showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n const box = this.box;\n const center = box.center();\n const horizontalAlign = LEFT;\n let x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n }\n\n initLabelsFormat() {\n const labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n }\n\n positionLabels(fromBox, toBox) {\n const { labels, vertical } = this.options;\n\n if (labels.position === AUTO) {\n let fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n }\n\n copyFields(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n\n focusVisual() {\n this.fromPoint.focusVisual();\n }\n\n clearFocusFromVisual() {\n this.toPoint.clearFocusFromVisual();\n }\n\n getIndex() {\n return this.categoryIx;\n }\n}\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass RangeAreaSegment extends AreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n }\n\n createStroke(style) {\n const toPath = new draw.Path(style);\n const fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n }\n\n hasStackSegment() {\n return true;\n }\n\n fromPoints() {\n return this.linePoints.map(point => point.fromPoint);\n }\n\n toPoints() {\n return this.linePoints.map(point => point.toPoint);\n }\n}\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nclass SplineRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.createCurveSegments(this.toPoints());\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n }\n\n createCurveSegments(points) {\n const curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n\n\n}\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nclass StepRangeAreaSegment extends RangeAreaSegment {\n\n createStrokeSegments() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n }\n\n stackSegments() {\n let fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n}\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nclass RangeAreaChart extends CategoricalChart {\n\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n pointType() {\n return RangeAreaPoint;\n }\n\n createPoint(data, fields) {\n const { series, seriesIx } = fields;\n let value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n let pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n let color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n const point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n }\n\n plotRange(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n }\n\n valueSlot(valueAxis, plotRange) {\n const fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n const toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n }\n\n pointSlot(categorySlot, valueSlot) {\n const { from, to } = valueSlot;\n let fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n\n addValue(data, fields) {\n const valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n super.addValue(data, fields);\n }\n\n updateRange(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n const axisName = fields.series.axis;\n const axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n const { from, to } = value;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n}\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nclass OHLCPoint extends Candlestick {\n reflow(box) {\n const { options, value, owner: chart } = this;\n const valueAxis = chart.seriesValueAxis(options);\n const oPoints = [];\n const cPoints = [];\n const lhPoints = [];\n\n const lhSlot = valueAxis.getSlot(value.low, value.high);\n const oSlot = valueAxis.getSlot(value.open, value.open);\n const cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n const mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n }\n\n createBody() {}\n}\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nclass OHLCChart extends CandlestickChart {\n pointType() {\n return OHLCPoint;\n }\n}\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nclass WaterfallSegment extends ChartElement {\n constructor(from, to, series) {\n super();\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n linePoints() {\n const from = this.from;\n const { from: { box: fromBox }, to: { box: toBox } } = this;\n const points = [];\n\n if (from.isVertical) {\n const y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n const x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n }\n\n createVisual() {\n super.createVisual();\n\n const line = this.series.line || {};\n\n const path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n}\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nclass WaterfallChart extends BarChart {\n render() {\n super.render();\n this.createSegments();\n }\n\n traverseDataPoints(callback) {\n const series = this.options.series;\n const totalCategories = categoriesCount(series);\n const isVertical = !this.options.invertAxes;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n let total = 0;\n let runningTotal = 0;\n\n for (let categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n const data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n const value = data.valueFields.value;\n const summary = data.fields.summary;\n let from = total;\n let to;\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n }\n\n updateRange(value, fields) {\n super.updateRange({ value: fields.to }, fields);\n }\n\n aboveAxis(point) {\n return point.value >= 0;\n }\n\n plotRange(point) {\n return [ point.from, point.to ];\n }\n\n createSegments() {\n const series = this.options.series;\n const seriesPoints = this.seriesPoints;\n const segments = this.segments = [];\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const points = seriesPoints[seriesIx];\n\n if (points) {\n let prevPoint;\n for (let pointIx = 0; pointIx < points.length; pointIx++) {\n const point = points[pointIx];\n\n if (point && prevPoint) {\n const segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n}\n\nexport default WaterfallChart;","function trendlineFactory(registry, type, context) {\n const impl = registry[String(type)];\n if (impl) {\n return impl(context);\n }\n\n return null;\n}\n\nexport default trendlineFactory;\n","// Optimized version of calculatePolynomial for order = 1\nfunction calculateSlope(sourceValues, valueGetter) {\n let x = 0;\n let y = 0;\n let x2 = 0;\n let xy = 0;\n let count = 0;\n let slope, intercept;\n let xMin = Number.MAX_VALUE;\n let xMax = Number.MIN_VALUE;\n\n for (let i = 0; i < sourceValues.length; i++) {\n const value = sourceValues[i];\n const { xValue, yValue } = valueGetter(value);\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n\n count++;\n x += xValue;\n y += yValue;\n x2 += Math.pow(xValue, 2);\n xy += xValue * yValue;\n }\n }\n\n if (count > 0) {\n slope = (count * xy - x * y) / (count * x2 - Math.pow(x, 2));\n intercept = (y - slope * x) / count;\n }\n\n return { slope, intercept, count, xMin, xMax };\n}\n\nexport default calculateSlope;\n","import { hasValue } from '../utils';\n\nconst checkAllPositive = (sourceValues, fieldName) =>\n sourceValues.every(({ valueFields }) => !hasValue(valueFields[fieldName]) || valueFields[fieldName] > 0);\n\nexport default checkAllPositive;\n","function getTrendlineData(valueMapper, categoryAxis) {\n const data = [];\n const totalRange = categoryAxis.totalRangeIndices();\n const currentRange = categoryAxis.currentRangeIndices();\n const range = {\n min: Math.floor(Math.max(currentRange.min - 1, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + 2, totalRange.max))\n };\n\n for (let i = range.min; i < range.max; i++) {\n const x = (i + 1);\n data[i] = {\n category: categoryAxis.categoryAt(i, true),\n value: valueMapper(x)\n };\n }\n\n return data;\n}\n\nexport default getTrendlineData;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\n\nfunction calculateMovingAverage(sourceValues, valueGetter, period) {\n const averagePoints = [];\n const values = [];\n const start = Math.max(MIN_MOVING_AVERAGE_PERIOD, period) - 1;\n\n let end = 0;\n let sum = 0;\n\n for (let i = 0; i < sourceValues.length; i++) {\n const value = sourceValues[i];\n const { xValue, yValue } = valueGetter(value);\n\n if (isFinite(yValue) && yValue !== null) {\n values.push(yValue);\n sum += yValue;\n end = Math.max(i, end);\n } else {\n values.push(null);\n }\n\n if (i >= start) {\n const count = values.filter(value => value !== null).length;\n const lastValue = values.shift() || 0;\n\n if (count > 0) {\n const average = sum / count;\n averagePoints.push([xValue, average]);\n\n sum -= lastValue;\n continue;\n }\n }\n\n averagePoints.push([xValue, null]);\n }\n\n return averagePoints.slice(0, end + 1);\n}\n\nexport default calculateMovingAverage;\n","import { Matrix } from '../../common';\n\nconst MIN_ORDER = 1;\nconst MAX_ORDER = 6;\n\nfunction calculatePolynomial(sourceValues, valueGetter, order) {\n let k = Math.min(Math.max(order || MIN_ORDER, MIN_ORDER), MAX_ORDER) + 1;\n let X = new Matrix();\n let Y = new Matrix();\n let count = 0;\n let xMin = Number.MAX_VALUE;\n let xMax = Number.MIN_VALUE;\n let valueMapper = x => x;\n let coefficients = [];\n\n for (let i = 0; i < sourceValues.length; i++) {\n const value = sourceValues[i];\n let { xValue, yValue } = valueGetter(value);\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n count++;\n\n // Set Y value in matrix\n Y.set(i, 0, yValue);\n\n // Set indicator column to 1 for valid values\n X.set(i, 0, 1);\n X.set(i, 1, xValue);\n for (let pow = 2; pow <= k; pow++) {\n X.set(i, pow, Math.pow(X.get(i, 1), pow));\n }\n } else {\n // Set indicator column to 0 for missing values\n X.set(i, 0, 0);\n }\n }\n\n // Limit order to number of values.\n X.width = Math.min(k, count);\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n coefficients = linearRegression(X, Y);\n valueMapper = x => coefficients.reduce((y, a, n) => y + a * Math.pow(x, n), 0);\n }\n\n return {\n coefficients,\n count,\n valueMapper,\n xMin,\n xMax\n };\n}\n\nfunction linearRegression(X, Y) {\n const Xt = X.transpose();\n const B = Xt.multiply(X).inverse().multiply(Xt).multiply(Y); // the last square estimate of the coefficients\n\n const coefficients = [];\n for (let i = 0; i < B.height; i++) {\n coefficients.push(B.get(i, 0));\n }\n\n // y_intercept and regression coefficients ('slopes')\n return coefficients;\n\n // It's possible to calculate statistics for the regression based on\n // the LINEST function implementation in kendo-spreadsheet-common/src/calc.js\n //\n // * The standard errors (of coefficients and y-intercept)\n // * The coefficient of determination (R^2)\n // * The standard error for the y estimate\n // * The F statistic\n // * The degrees of freedom\n // * The regression sum of squares (SSR)\n // * The residual sum of squares (SSE)\n}\n\nexport default calculatePolynomial;\n","import {\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n} from '../constants';\nimport exponentialTrendline from './exponential-trendline';\nimport linearTrendline from './linear-trendline';\nimport logarithmicTrendline from './logarithmic-trendline';\nimport movingAverageTrendline from './moving-average';\nimport polynomialTrendline from './polynomial-trendline';\nimport powerTrendline from './power-trendline';\n\nconst registry = {};\nregistry[TRENDLINE_EXPONENTIAL] = exponentialTrendline;\nregistry[TRENDLINE_LINEAR] = linearTrendline;\nregistry[TRENDLINE_LOGARITHMIC] = logarithmicTrendline;\nregistry[TRENDLINE_MOVING_AVERAGE] = movingAverageTrendline;\nregistry[TRENDLINE_POLYNOMIAL] = polynomialTrendline;\nregistry[TRENDLINE_POWER] = powerTrendline;\n\nexport default registry;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getTrendlineData from './get-trendline-data';\n\nfunction exponentialTrendline(context) {\n const {\n options,\n categoryAxis,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, categoryAxis, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: categoryIx + 1, yValue: Math.log(valueFields[fieldName]) });\n\nfunction getData({ seriesValues, categoryAxis, options }) {\n const sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n let { slope, intercept, count } = calculateSlope(sourceValues, valueGetter(options.field));\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n const a = Math.exp(intercept);\n const b = slope;\n\n return getTrendlineData(x => a * Math.exp(b * x), categoryAxis);\n }\n\n return null;\n}\n\nexport default exponentialTrendline;\n","import calculateSlope from './calculate-slope';\nimport getTrendlineData from './get-trendline-data';\n\nfunction linearTrendline(context) {\n const {\n options,\n categoryAxis,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, categoryAxis, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n\nfunction getData({ seriesValues, categoryAxis, options }) {\n const { slope, intercept, count } = calculateSlope(seriesValues(), valueGetter(options.field));\n\n if (count > 0) {\n return getTrendlineData(x => slope * x + intercept, categoryAxis);\n }\n\n return null;\n}\n\nexport default linearTrendline;\n","import calculateSlope from './calculate-slope';\nimport getTrendlineData from './get-trendline-data';\n\nfunction logarithmicTrendline(context) {\n const {\n options,\n categoryAxis,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, categoryAxis, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: Math.log(categoryIx + 1), yValue: valueFields[fieldName] });\n\nfunction getData({ seriesValues, categoryAxis, options }) {\n let { slope, intercept, count } = calculateSlope(seriesValues(), valueGetter(options.field));\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n const a = slope;\n const b = intercept;\n return getTrendlineData(x => a * Math.log(x) + b, categoryAxis);\n }\n\n return null;\n}\n\nexport default logarithmicTrendline;\n","import { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport calculateMovingAverage from './calculate-moving-average';\n\nfunction movingAverageTrendline(context) {\n const { options } = context;\n\n const data = getData(context);\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: categoryIx, yValue: valueFields[fieldName] });\n\nfunction calculatePoints({ options, categoryAxis, seriesValues }) {\n const period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n const totalRange = categoryAxis.totalRangeIndices();\n const currentRange = categoryAxis.currentRangeIndices();\n const range = {\n min: Math.floor(Math.max(currentRange.min - period, totalRange.min)),\n max: Math.ceil(Math.min(currentRange.max + period + 2, totalRange.max))\n };\n\n return calculateMovingAverage(seriesValues(range), valueGetter(options.field), period);\n}\n\nfunction getData(context) {\n const { categoryAxis } = context;\n const points = calculatePoints(context);\n const data = [];\n points.forEach(([categoryIx, value]) => {\n data[categoryIx] = {\n category: categoryAxis.categoryAt(categoryIx, true),\n value\n };\n });\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n}\n\nexport default movingAverageTrendline;\n","import getTrendlineData from './get-trendline-data';\nimport calculatePolynomial from './calculate-polynomial';\n\nfunction polynomialTrendline(context) {\n const {\n options,\n categoryAxis,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, categoryAxis, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: categoryIx + 1, yValue: valueFields[fieldName] });\n\nfunction getData({ seriesValues, categoryAxis, options }) {\n const order = (options.trendline || {}).order;\n const { count, valueMapper } = calculatePolynomial(seriesValues(), valueGetter(options.field), order);\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n\n return getTrendlineData(x => valueMapper(x), categoryAxis);\n }\n\n return null;\n}\n\nexport default polynomialTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getTrendlineData from './get-trendline-data';\n\nfunction powerTrendline(context) {\n const {\n options,\n categoryAxis,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, categoryAxis, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'line',\n data,\n categoryField: 'category',\n field: 'value'});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ categoryIx, valueFields }) =>\n ({ xValue: Math.log(categoryIx + 1), yValue: Math.log(valueFields[fieldName]) });\n\nfunction getData({ seriesValues, categoryAxis, options }) {\n const sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n let { slope, intercept, count } = calculateSlope(sourceValues, valueGetter(options.field));\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n const a = Math.exp(intercept);\n const b = slope;\n\n return getTrendlineData(x => a * Math.pow(x, b), categoryAxis);\n }\n\n return null;\n}\n\nexport default powerTrendline;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport trendlineRegistry from '../trendlines/trendline-registry';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n isDateAxis, parseDateCategory, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES, RADAR_LINE, RADAR_AREA } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, deepExtend, defined, eventElement, grep, cycleIndex, hasOwnProperty } from '../../common';\n\nconst AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nconst OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nclass CategoricalPlotArea extends PlotAreaBase {\n\n initFields(series) {\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (let i = 0; i < series.length; i++) {\n const stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this.stack100 = true;\n break;\n }\n }\n }\n }\n\n render(panes = this.panes) {\n this.series = [...this.originalSeries];\n this.createCategoryAxes(panes);\n\n this.aggregateCategories(panes);\n this.createTrendlineSeries(panes);\n\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n }\n\n trendlineFactory(options, series) {\n const categoryAxis = this.seriesCategoryAxis(options);\n const seriesValues = this.seriesValues.bind(this, series.index);\n\n const trendline = trendlineFactory(trendlineRegistry, options.type, {\n options,\n categoryAxis,\n seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.categoryAxis = series.categoryAxis;\n trendline.valueAxis = series.valueAxis;\n\n return this.filterSeries(trendline, categoryAxis);\n }\n\n return trendline;\n }\n\n trendlineAggregateForecast() {\n return this.series\n .map(series => (series.trendline || {}).forecast)\n .filter(forecast => forecast !== undefined)\n .reduce((result, forecast) => ({\n before: Math.max(result.before, forecast.before || 0),\n after: Math.max(result.after, forecast.after || 0)\n }), { before: 0, after: 0 });\n }\n\n seriesValues(seriesIx, range) {\n const result = [];\n\n let series = this.srcSeries[seriesIx];\n const categoryAxis = this.seriesCategoryAxis(series);\n const dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n if (dateAxis) {\n this._seriesPointsCache = {};\n this._currentPointsCache = {};\n categoryAxis.options.dataItems = [];\n series = this.aggregateSeries(series, categoryAxis, categoryAxis.totalRangeIndices());\n }\n\n const min = range ? range.min : 0;\n const max = range ? range.max : series.data.length;\n for (let categoryIx = min; categoryIx < max; categoryIx++) {\n const data = this.bindPoint(series, categoryIx);\n result.push({ categoryIx, category: data.fields.category, valueFields: data.valueFields });\n }\n\n return result;\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n\n const visibleSeries = this.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n const groups = this.groupSeriesByCategoryAxis(visibleSeries);\n for (let groupIx = 0; groupIx < groups.length; groupIx++) {\n this.createChartGroup(groups[groupIx], pane);\n }\n }\n }\n\n createChartGroup(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n }\n\n aggregateCategories(panes) {\n const series = [...this.series];\n const processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (let i = 0; i < series.length; i++) {\n let currentSeries = series[i];\n\n if (!this.isTrendline(currentSeries)) {\n const categoryAxis = this.seriesCategoryAxis(currentSeries);\n const axisPane = this.findPane(categoryAxis.options.pane);\n const dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this.aggregateSeries(currentSeries, categoryAxis, categoryAxis.currentRangeIndices());\n } else {\n currentSeries = this.filterSeries(currentSeries, categoryAxis);\n }\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n }\n\n filterSeries(series, categoryAxis) {\n const dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(defined(categoryAxis.options.min) || defined(categoryAxis.options.max))) {\n return series;\n }\n\n const range = categoryAxis.currentRangeIndices();\n const outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n const currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, (idx) => ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }), (idx) => defined(series.data[idx]));\n }\n\n return currentSeries;\n }\n\n clearSeriesPointsCache() {\n this._seriesPointsCache = {};\n }\n\n seriesSourcePoints(series, categoryAxis) {\n const key = `${ series.index };${ categoryAxis.categoriesHash() }`;\n if (this._seriesPointsCache && this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n const axisOptions = categoryAxis.options;\n const srcCategories = axisOptions.srcCategories;\n const dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n const srcData = series.data;\n const result = [];\n if (!dateAxis) {\n categoryAxis.indexCategories();\n }\n\n for (let idx = 0; idx < srcData.length; idx++) {\n let category = SeriesBinder.current.bindPoint(series, idx).fields.category;\n if (dateAxis) {\n category = parseDateCategory(category, srcData[idx], this.chartService.intl);\n }\n\n if (!defined(category)) {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n const categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n }\n\n aggregateSeries(series, categoryAxis, range) {\n const srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n const srcPoints = this.seriesSourcePoints(series, categoryAxis);\n const result = deepExtend({}, series);\n const aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n const data = result.data = [];\n\n const dataItems = categoryAxis.options.dataItems || [];\n\n const categoryItem = (idx) => {\n const categoryIdx = idx - range.min;\n let point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n const category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (let idx = range.min; idx <= range.max; idx++) {\n const point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, (idx) => srcPoints[idx]);\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n }\n\n appendChart(chart, pane) {\n const series = chart.options.series;\n const categoryAxis = this.seriesCategoryAxis(series[0]);\n let categories = categoryAxis.options.categories;\n let categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const axisName = series.axis;\n const axisOptions = [].concat(options.valueAxis);\n const axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = (panes[0] || {}).name || \"default\";\n const paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesCategoryAxis(series) {\n const axisName = series.categoryAxis;\n const axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n }\n\n stackableChartOptions(series, pane) {\n const anyStackedSeries = series.some(s => s.stack);\n const isStacked100 = series.some(s => s.stack && s.stack.type === \"100%\");\n const clip = pane.options.clip;\n\n return {\n defaultStack: series[0].stack,\n isStacked: anyStackedSeries,\n isStacked100: isStacked100,\n clip: clip\n };\n }\n\n groupSeriesByCategoryAxis(series) {\n const categoryAxes = [];\n const unique = {};\n for (let idx = 0; idx < series.length; idx++) {\n const name = series[idx].categoryAxis || \"$$default$$\";\n if (!hasOwnProperty(unique, name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n const groups = [];\n for (let axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n const axis = categoryAxes[axisIx];\n const axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(barChart, pane);\n }\n\n createRangeBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n }\n\n createBulletChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(lineChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(series, pane)));\n\n this.appendChart(areaChart, pane);\n }\n\n createRangeAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n }\n\n createOHLCChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createCandlestickChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createBoxPlotChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n }\n\n createWaterfallChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n }\n\n axisRequiresRounding(categoryAxisName, categoryAxisIndex) {\n const centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (let seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n const currentSeries = this.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n const line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (let seriesIx = 0; seriesIx < centeredSeries.length; seriesIx++) {\n const seriesAxis = centeredSeries[seriesIx].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n }\n\n aggregatedAxis(categoryAxisName, categoryAxisIndex) {\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n }\n\n createCategoryAxesLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n }\n\n createCategoryAxes(panes) {\n const invertAxes = this.invertAxes;\n const definitions = [].concat(this.options.categoryAxis);\n const axes = [];\n\n for (let i = 0; i < definitions.length; i++) {\n let axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const { name, categories = [] } = axisOptions;\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this.isJustified();\n }\n\n if (this.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n let categoryAxis;\n\n if (isDateAxis(axisOptions, categories[0])) {\n axisOptions._forecast = this.trendlineAggregateForecast();\n categoryAxis = new DateCategoryAxis(axisOptions, this.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this.namedCategoryAxes[name]) {\n throw new Error(`Category axis with name ${ name } is already defined`);\n }\n this.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this.appendAxis(categoryAxis);\n }\n }\n\n const primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n }\n\n isJustified() {\n const series = this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n }\n\n createValueAxes(panes) {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const definitions = [].concat(this.options.valueAxis);\n const invertAxes = this.invertAxes;\n const baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n const axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (let i = 0; i < definitions.length; i++) {\n const axisOptions = definitions[i];\n const axisPane = this.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n const name = axisOptions.name;\n const defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this.chartService\n );\n\n if (name) {\n if (this.namedValueAxes[name]) {\n throw new Error(`Value axis with name ${ name } is already defined`);\n }\n this.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this.appendAxis(valueAxis);\n }\n }\n\n const primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const pane = this.pointPane(point);\n const categories = [];\n const values = [];\n\n if (!pane) {\n return;\n }\n\n const allAxes = pane.axes;\n for (let i = 0; i < allAxes.length; i++) {\n const axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n }\n\n pointPane(point) {\n const panes = this.panes;\n\n for (let i = 0; i < panes.length; i++) {\n const currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n }\n\n updateAxisOptions(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n\n _pointsByVertical(basePoint, offset = 0) {\n if (this.invertAxes) {\n return this._siblingsBySeriesIndex(basePoint.series.index, offset);\n }\n\n return this._siblingsByPointIndex(basePoint.getIndex());\n }\n\n _pointsByHorizontal(basePoint, offset = 0) {\n if (this.invertAxes) {\n return this._siblingsByPointIndex(basePoint.getIndex());\n }\n\n const siblings = this._siblingsBySeriesIndex(basePoint.series.index, offset);\n\n if (this.chartService.rtl) {\n return siblings.reverse();\n }\n\n return siblings;\n }\n\n _siblingsByPointIndex(pointIndex) {\n const charts = this.charts;\n const result = [];\n\n for (let i = 0; i < charts.length; i++) {\n let chart = charts[i];\n\n if (chart.pane && chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n let chartPoints = chart.points\n .filter(point =>\n point && point.visible !== false && point.getIndex() === pointIndex\n );\n\n result.push(...chartPoints.sort(this._getSeriesCompareFn(chartPoints[0])));\n }\n\n return result;\n }\n\n _siblingsBySeriesIndex(seriesIndex, offset) {\n const index = cycleIndex(seriesIndex + offset, this.series.length);\n\n return this.pointsBySeriesIndex(index);\n }\n\n _getSeriesCompareFn(point) {\n const isStacked = this._isInStackedSeries(point);\n\n if (isStacked && this.invertAxes || !isStacked && !this.invertAxes) {\n return (a, b) => a.box.center().x - b.box.center().x;\n }\n\n return (a, b) => a.box.center().y - b.box.center().y;\n }\n\n _isInStackedSeries(point) {\n const sortableSeries = inArray(point.series.type,\n [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA, LINE, VERTICAL_LINE, RADAR_LINE, RADAR_AREA]);\n\n const stackableSeries = inArray(point.series.type, [ COLUMN, BAR]);\n\n return sortableSeries || stackableSeries && point.options.isStacked;\n }\n}\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n const axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;\n","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nconst ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\n\nclass PathNode extends Node {\n\n geometryChange() {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n }\n\n optionsChange(e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n const name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n this.accessibilityOptionsChange(e);\n\n super.optionsChange(e);\n }\n\n content() {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n }\n\n renderData() {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n }\n\n mapStroke(stroke) {\n const attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n }\n\n renderStroke() {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n }\n\n renderDashType(stroke) {\n const { dashType, width = 1 } = stroke;\n\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n const result = [];\n\n for (let i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n }\n\n renderLinecap(stroke) {\n const { dashType, lineCap } = stroke;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n }\n\n mapFill(fill) {\n const attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n }\n\n renderFill() {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n }\n\n template() {\n return ``;\n }\n}\n\nexport default PathNode;\n","const ampRegExp = /&/g;\nconst ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nconst ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n const element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, (match) => {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nclass TextNode extends PathNode {\n\n geometryChange() {\n const pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n super.content(this.srcElement.content());\n }\n\n super.optionsChange(e);\n }\n\n mapStyle(encode) {\n const style = super.mapStyle(encode);\n let font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n }\n\n pos() {\n const pos = this.srcElement.position();\n const size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n }\n\n renderContent() {\n let content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n }\n\n renderTextAnchor() {\n let anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n }\n\n renderPaintOrder() {\n const paintOrder = this.srcElement.options.paintOrder;\n return paintOrder ? renderAttr(\"paint-order\", paintOrder) : \"\";\n }\n\n template() {\n return `${ this.renderContent() }`;\n }\n}\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nconst RTL = 'rtl';\n\nfunction alignToScreen(element) {\n let ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n const left = - ctm.e % 1;\n const top = - ctm.f % 1;\n const style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nclass Surface extends BaseSurface {\n get type() {\n return \"svg\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n destroy() {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n super.destroy();\n }\n\n translate(offset) {\n const viewBox = `${ Math.round(offset.x) } ${ Math.round(offset.y) } ${ this._size.width } ${ this._size.height }`;\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ]);\n }\n\n clear() {\n super.clear();\n this._root.clear();\n }\n\n svg() {\n return \"\" + this._template();\n }\n\n exportVisual() {\n let { _visual: visual, _offset: offset } = this;\n\n if (offset) {\n const wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n }\n\n _resize() {\n if (this._offset) {\n this.translate(this._offset);\n }\n }\n\n _template(svgStyles) {\n const styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return `${ this._root.render() }`;\n }\n}\n\nexport default Surface;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nclass ArcNode extends PathNode {\n renderData() {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n\n geometryChange() {\n const center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n }\n\n center() {\n return this.srcElement.geometry().center;\n }\n\n radius() {\n return this.srcElement.geometry().radius;\n }\n\n template() {\n return ``;\n }\n}\n\nexport default CircleNode;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass GroupNode extends Node {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n optionsChange(e) {\n const { field, value } = e;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n super.optionsChange(e);\n }\n}\n\nexport default GroupNode;\n","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nclass ImageNode extends PathNode {\n\n geometryChange() {\n this.allAttr(this.mapPosition());\n this.invalidate();\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n super.optionsChange(e);\n }\n\n mapPosition() {\n const rect = this.srcElement.rect();\n const tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n }\n\n renderPosition() {\n return renderAllAttr(this.mapPosition());\n }\n\n mapSource(encode) {\n let src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n }\n\n renderSource() {\n return renderAllAttr(this.mapSource(true));\n }\n\n template() {\n return `` +\n ``;\n }\n}\n\nexport default ImageNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nclass MultiPathNode extends PathNode {\n renderData() {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n }\n}\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nclass RectNode extends PathNode {\n\n geometryChange() {\n const geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n }\n\n size() {\n return this.srcElement.geometry().size;\n }\n\n origin() {\n return this.srcElement.geometry().origin;\n }\n\n rx() {\n return this.srcElement.geometry().cornerRadius[0];\n }\n\n ry() {\n return this.srcElement.geometry().cornerRadius[1];\n }\n\n template() {\n return ``;\n }\n}\n\nexport default RectNode;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nlet instance;\nlet support;\n\nconst hasDocument = () => typeof document !== \"undefined\";\n\nconst supportsCanvas = () => hasDocument() &&\n document.createElement(\"canvas\").getContext;\n\nconst supportsSVG = () => hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\");\n\nclass SurfaceFactory extends Class {\n static get support() {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n }\n\n static get current() {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n }\n\n constructor() {\n super();\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n create(element, options) {\n const items = this._items;\n let match = items[0];\n\n if (options && options.type) {\n const preferred = options.type.toLowerCase();\n for (let i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n `- The browser does not support SVG and Canvas. User agent: ${ navigator.userAgent }`);\n }\n}\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nclass Surface extends BaseSurface {\n static get support() {\n return SurfaceFactory.support;\n }\n\n static create(element, options) {\n return SurfaceFactory.current.create(element, options);\n }\n}\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nclass Highlight extends Class {\n constructor() {\n super();\n\n this._points = [];\n }\n\n destroy() {\n this._points = [];\n }\n\n show(points, opacity) {\n const arrayPoints = [].concat(points);\n this.hide();\n\n for (let i = 0; i < arrayPoints.length; i++) {\n const point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this.togglePointHighlight(point, true, opacity);\n this._points.push(point);\n }\n }\n }\n\n togglePointHighlight(point, show, opacity) {\n const toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n const eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n }\n\n hide() {\n const points = this._points;\n while (points.length) {\n this.togglePointHighlight(points.pop(), false);\n }\n }\n\n isHighlighted(element) {\n const points = this._points;\n\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;\n","export default function acceptKey(e, mouseKey) {\n const key = (mouseKey || \"\").toLowerCase();\n const event = e.event;\n const accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n const ranges = {};\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nclass Pannable extends Class {\n constructor(plotArea, options) {\n super();\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n start(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n }\n\n move(e) {\n if (this._active) {\n const axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n }\n\n end() {\n const active = this._active;\n this._active = false;\n\n return active;\n }\n\n pan() {\n const { plotArea, axisRanges } = this;\n if (axisRanges.length) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.plotArea;\n }\n\n _panAxes(e, position) {\n const plotArea = this.plotArea;\n const delta = -e[position].delta;\n const lock = (this.options.lock || \"\").toLowerCase();\n const updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n const axes = plotArea.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n const range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n}\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nclass ZoomSelection extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n createElement() {\n const marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n }\n\n removeElement() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n }\n\n setStyles(styles) {\n elementStyles(this._marquee, styles);\n }\n\n start(e) {\n if (acceptKey(e, this.options.key)) {\n const chart = this.chart;\n const point = chart._eventCoordinates(e);\n const zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n const clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n const offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n }\n\n _elementOffset() {\n const chartElement = this.chart.element;\n const { paddingLeft, paddingTop } = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n const offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n }\n\n move(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n }\n\n end(e) {\n const zoomPane = this._zoomPane;\n if (zoomPane) {\n const elementOffset = this._elementOffset();\n const selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n const start = { x: selectionPosition.left, y: selectionPosition.top };\n const end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n const plotArea = this.chart._plotArea;\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n }\n\n _updateAxisRanges(start, end) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n\n const axes = this._zoomPane.axes;\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n const range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n }\n\n _selectionPosition(e) {\n const clipBox = this._zoomPaneClipBox;\n const startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n const { x: { location: pageX }, y: { location: pageY } } = e;\n const lock = (this.options.lock || \"\").toLowerCase();\n let left = Math.min(startLocation.x, pageX);\n let top = Math.min(startLocation.y, pageY);\n let width = Math.abs(startLocation.x - pageX);\n let height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n}\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nconst MIN_RATE = 0.01;\nconst MAX_RATE = 0.9;\nconst DEFAULT_RATE = 0.3;\n\nclass MousewheelZoom extends Class {\n constructor(chart, options) {\n super();\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n updateRanges(delta, coords) {\n const lock = (this.options.lock || \"\").toLowerCase();\n const axisRanges = [];\n const axes = this.chart._plotArea.axes;\n\n for (let idx = 0; idx < axes.length; idx++) {\n const axis = axes[idx];\n const vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n const rate = limitValue(this.options.rate, MIN_RATE, MAX_RATE);\n const range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n\n zoom() {\n const axisRanges = this.axisRanges;\n const plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (let idx = 0; idx < axisRanges.length; idx++) {\n const axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n }\n\n destroy() {\n delete this.chart;\n }\n}\n\nexport default MousewheelZoom;\n","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n let start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nconst DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nconst forEach = (elements, callback) => {\n elements.forEach(callback);\n};\n\nconst forEachReverse = (elements, callback) => {\n const length = elements.length;\n\n for (let idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nclass Layout extends Group {\n\n constructor(rect, options) {\n super(Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n rect(value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n }\n\n _initMap() {\n const options = this.options;\n const fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n }\n\n reflow() {\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n const options = this.options;\n const rect = this._rect;\n const { groups, groupsSize } = this._initGroups();\n const { sizeField, groupsSizeField, groupAxis, groupsAxis } = this._fieldMap;\n const groupOrigin = new Point();\n const elementOrigin = new Point();\n const size = new Size();\n let groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n let elementStart, group, groupBox;\n\n const arrangeElements = (bbox, idx) => {\n const element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n const scale = rect.size[sizeField] / groupBox.size[sizeField];\n const scaledStart = groupBox.topLeft().scale(scale, scale);\n const scaledSize = groupBox.size[groupsSizeField] * scale;\n const newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n const transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n }\n\n _initGroups() {\n const { options, children } = this;\n const { lineSpacing, wrap, spacing } = options;\n const sizeField = this._fieldMap.sizeField;\n let group = this._newGroup();\n const groups = [];\n const addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n let groupsSize = -lineSpacing;\n\n for (let idx = 0; idx < children.length; idx++) {\n let element = children[idx];\n let bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this._addToGroup(group, bbox, element);\n addGroup();\n group = this._newGroup();\n } else {\n addGroup();\n group = this._newGroup();\n this._addToGroup(group, bbox, element);\n }\n } else {\n this._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n }\n\n _addToGroup(group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n }\n\n _newGroup() {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n }\n}\n\nexport default Layout;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n const transofrm = element.transform() || createTransform();\n const matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\nimport { CENTER, HORIZONTAL, START, VERTICAL } from '../../common/constants';\n\nclass LegendLayout extends ChartElement {\n\n constructor(options, chartService) {\n super(options);\n\n this.chartService = chartService;\n }\n\n render() {\n const { children, options } = this;\n const vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? VERTICAL : HORIZONTAL,\n reverse: options.rtl,\n alignItems: vertical ? START : CENTER\n });\n\n for (let idx = 0; idx < children.length; idx++) {\n let legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n }\n\n reflow(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n const bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n }\n\n renderVisual() {\n this.addVisual();\n }\n\n createVisual() {}\n}\n\nexport default LegendLayout;\n","import { ShapeElement } from '../../core';\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CROSS, LEFT, TOP, WHITE } from '../../common/constants';\nimport { valueOrDefault } from '../../drawing-utils';\n\nexport const DEFAULT_MARKER_SIZE = 10;\nexport const DEFAULT_MARKER_BORDER_WIDTH = 2;\n\nclass LegendItemMarker extends ShapeElement {\n visualStyle() {\n const options = this.markerOptions();\n const border = options.border;\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n\n markerOptions() {\n return this.options;\n }\n\n markerHighlightOptions() {\n const options = this.markerOptions();\n const borderWidth = options.highlight.border.width;\n\n return deepExtend(\n {},\n options,\n { background: options.border.color },\n options.highlight,\n options.type === CROSS ? {\n background: options.highlight.border.color,\n border: { color: options.highlight.background, width: borderWidth / 2 },\n width: options.width,\n height: options.height,\n margin: { top: 0, left: 0 }\n } : {}\n );\n }\n\n createHighlight() {\n const highlight = new ShapeElement(this.markerHighlightOptions());\n const box = this.paddingBox.clone();\n highlight.reflow(box.pad(highlight.options.border.width));\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n }\n}\n\nsetDefaultOptions(LegendItemMarker, {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n width: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n height: DEFAULT_MARKER_SIZE - DEFAULT_MARKER_BORDER_WIDTH,\n background: WHITE,\n margin: {\n top: -1,\n left: -1\n },\n vAlign: TOP,\n align: LEFT,\n highlight: {\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n color: WHITE,\n width: DEFAULT_MARKER_BORDER_WIDTH\n }\n }\n});\n\nexport default LegendItemMarker;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport ShapeElement from \"../../core/shape-element\";\nimport { setDefaultOptions } from '../../common';\nimport { BOTTOM, RIGHT } from '../../common/constants';\n\nclass MarkerLineArea extends ShapeElement {\n getElement() {\n const group = new draw.Group();\n const element = new draw.MultiPath(this.visualStyle());\n const { paddingBox: box } = this;\n const halfHeight = box.height() / 2;\n\n element\n .moveTo(box.x1, box.y1 + halfHeight)\n .lineTo(box.x1, box.y2)\n .lineTo(box.x2, box.y2);\n\n group.append(element);\n\n return group;\n }\n}\n\nsetDefaultOptions(MarkerLineArea, {\n width: 15,\n height: 15,\n align: RIGHT,\n vAlign: BOTTOM,\n margin: {\n right: -2,\n bottom: 2\n }\n});\n\nexport default MarkerLineArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport ShapeElement from \"../../core/shape-element\";\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CENTER, CIRCLE, LEFT, RECT, TOP, WHITE } from \"../../common/constants\";\nimport MarkerLineArea from \"./legend-item-line-area\";\nimport { DEFAULT_MARKER_BORDER_WIDTH, DEFAULT_MARKER_SIZE } from \"./legend-item-marker\";\n\nclass LegendItemLine extends ShapeElement {\n getElement() {\n const group = new draw.Group();\n const element = new draw.MultiPath({\n stroke: {\n color: this.options.border.color,\n opacity: this.options.opacity,\n width: this.options.height,\n dashType: this.options.dashType\n }\n });\n const box = this.paddingBox;\n const centerY = box.center().y;\n\n element\n .moveTo(box.x1, centerY)\n .lineTo(box.x2, centerY);\n\n group.append(element);\n\n return group;\n }\n\n createHighlight() {\n this.highlight = [ this.createHighlightLine(), this.createHighlightMarker() ];\n return this.highlight;\n }\n\n createHighlightLine() {\n const options = deepExtend({}, {\n border: {\n color: this.options.border.color,\n opacity: this.options.border.opacity,\n dashType: this.options.border.dashType\n }\n }, this.options.highlight);\n const highlightLine = new MarkerLineArea(options);\n highlightLine.reflow(this.parent.paddingBox.clone());\n\n this.highlightLine = highlightLine.getElement();\n\n return this.highlightLine;\n }\n\n createHighlightMarker() {\n const options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n const highlightMarker = new ShapeElement(options);\n const paddingBox = this.parent.paddingBox;\n const borderWidth = options.border.width;\n const box = this.parent.box.clone();\n\n box.pad({\n left: borderWidth - paddingBox.x1,\n top: borderWidth - paddingBox.y1\n });\n\n highlightMarker.reflow(box);\n this.highlightMarker = highlightMarker.getElement();\n\n return this.highlightMarker;\n }\n}\n\nsetDefaultOptions(LegendItemLine, {\n border: {\n width: 0\n },\n type: RECT,\n align: LEFT,\n vAlign: CENTER,\n highlight: {\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH\n },\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n align: LEFT,\n vAlign: TOP\n }\n }\n});\n\nexport default LegendItemLine;\n","import ShapeElement from \"../../core/shape-element\";\nimport { deepExtend, setDefaultOptions } from '../../common';\nimport { CIRCLE, LEFT, TOP, WHITE, X, Y } from \"../../common/constants\";\nimport { DEFAULT_MARKER_BORDER_WIDTH, DEFAULT_MARKER_SIZE } from \"./legend-item-marker\";\n\nclass LegendItemSquare extends ShapeElement {\n createHighlight() {\n const options = deepExtend({}, {\n background: this.options.background,\n }, this.options.highlight.markers);\n const highlight = new ShapeElement(options);\n\n const box = this.paddingBox.clone();\n const targetBox = this.parent.box.clone();\n box.align(targetBox, X, LEFT);\n box.align(targetBox, Y, TOP);\n highlight.reflow(box);\n\n this.highlight = [ highlight.getElement() ];\n\n return this.highlight;\n }\n}\n\nsetDefaultOptions(LegendItemSquare, {\n highlight: {\n markers: {\n type: CIRCLE,\n width: DEFAULT_MARKER_SIZE,\n height: DEFAULT_MARKER_SIZE,\n border: {\n width: DEFAULT_MARKER_BORDER_WIDTH,\n color: WHITE\n },\n margin: {\n top: -3,\n left: -3\n }\n }\n }\n});\n\nexport default LegendItemSquare;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, TextBox } from '../../core';\nimport { AREA, LEGEND_ITEM_ARIA_ROLE_DESCRIPTION, LEGEND_ITEM_CLASSNAME, LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE, LEGEND_ITEM_ROLE, LINE } from '../constants';\nimport { BOTTOM, CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport addAccessibilityAttributesToVisual from '../../core/utils/add-accessibility-attributes-to-visual';\nimport guid from '../../core/utils/guid';\nimport LegendItemMarker from './legend-item-marker';\nimport MarkerLineArea from './legend-item-line-area';\nimport LegendItemLine from './legend-item-line';\nimport LegendItemSquare from './legend-item-square';\n\nclass LegendItem extends BoxElement {\n constructor(options) {\n super(options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n\n this._id = guid();\n this.options.accessibility.ariaChecked = options.active;\n }\n\n createContainer() {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n }\n\n createMarker() {\n this.markerWrap = new BoxElement({ vertical: false, shrinkToFit: true, wrap: false, margin: 1, width: 22, height: 22 });\n this.container.append(this.markerWrap);\n\n this.createMarkerArea();\n\n if (this.options.markers.visible) {\n this._marker = this._createMarker();\n this.markerWrap.append(this._marker);\n }\n }\n\n createMarkerArea() {\n const options = this.options;\n const { markerColor, line = {} } = options;\n const lineOptions = {\n border: {\n color: line.color || markerColor,\n opacity: line.opacity,\n dashType: line.dashType\n }\n };\n return this._createLine(lineOptions) ||\n this._createMarkerLine(lineOptions, line) ||\n this._createSquare();\n }\n\n markerOptions() {\n const options = this.options;\n const { markers = {}, markerColor } = options;\n const { border = {} } = markers;\n\n return deepExtend({}, markers, {\n border: { color: border.color || markerColor },\n highlight: options.highlight.markers\n });\n }\n\n _highlightOptions() {\n const options = this.options;\n return deepExtend(\n { markers: { type: options.markers.type } },\n options.highlight\n );\n }\n\n _createLine(lineOptions) {\n const options = this.options;\n if (options.type === LINE && !options.markers.visible) {\n this._line = new LegendItemLine(deepExtend({}, {\n background: options.markerColor,\n highlight: this._highlightOptions(),\n }, lineOptions, options.line));\n\n this.markerWrap.append(this._line);\n }\n return this._line;\n }\n\n _createMarkerLine(lineOptions, line) {\n const options = this.options;\n if (options.type === LINE) {\n this._markerLineArea = new MarkerLineArea(deepExtend({}, {\n border: {\n width: line.height\n }\n }, lineOptions));\n\n this.markerWrap.append(this._markerLineArea);\n }\n\n return this._markerLineArea;\n }\n\n _createSquare() {\n const options = this.options;\n if (options.type === AREA) {\n this._square = new LegendItemSquare(Object.assign({}, {border: options.border,\n vAlign: options.markers.visible ? BOTTOM : CENTER,\n highlight: this._highlightOptions(),\n visual: options.visual},\n options.area,\n {background: options.area.background || options.markerColor}));\n this.markerWrap.append(this._square);\n }\n return this._square;\n }\n\n _createMarker() {\n return new LegendItemMarker(this.markerOptions());\n }\n\n _highlightMarkers() {\n if (this.options.active) {\n this._toggleHighlight(true);\n }\n }\n\n _restoreMarkers() {\n this._toggleHighlight(false);\n }\n\n _toggleHighlight(show) {\n if (!this.options.highlight.visible) {\n return;\n }\n\n const element = this._marker || this._square || this._line;\n\n if (element && element === this._line) {\n this._line.visual.visible(!show);\n }\n\n if (element) {\n let highlight = element.highlight;\n\n if (!highlight) {\n highlight = element.createHighlight();\n highlight.forEach(h => h && this.markerWrap.appendVisual(h));\n }\n\n highlight.forEach(h => h && h.visible(show));\n }\n }\n\n createLabel() {\n const options = this.options;\n const labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n }\n\n getAriaLabelText() {\n return this.options.text;\n }\n\n focusVisual() {\n this.visual.options.set(\"id\", this._id);\n this.toggleFocusHighlight(true);\n this._highlightMarkers();\n }\n\n clearFocusFromVisual() {\n this.visual.options.set(\"id\", \"\");\n this.toggleFocusHighlight(false);\n this._restoreMarkers();\n }\n\n renderComplete() {\n super.renderComplete();\n\n const cursor = this.options.cursor || {};\n const eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n }\n\n click(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n }\n\n over(widget, e) {\n const args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n this._highlightMarkers();\n }\n\n // Don't trigger point hover for legend items\n return true;\n }\n\n out(widget, e) {\n widget._unsetActivePoint();\n this._restoreMarkers();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n }\n\n eventArgs(e) {\n const options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n }\n\n createVisual() {\n super.createVisual();\n const options = this.options;\n\n if (this.options.visible) {\n const accessibilityOptions = deepExtend({\n ariaLabel: options.text\n }, options.accessibility);\n\n addAccessibilityAttributesToVisual(this.visual, accessibilityOptions);\n }\n }\n\n renderVisual() {\n const options = this.options;\n const customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n type: options.type,\n // Passing the markerColor as a background option for backwards compatibility.\n // Example in jq docs - https://docs.telerik.com/kendo-ui/api/javascript/dataviz/ui/chart/configuration/legend.item#legenditemvisual\n markers: deepExtend({ background: this.options.markerColor }, this.markerOptions()),\n labels: options.labels\n },\n createVisual: () => {\n this.createVisual();\n this.renderChildren();\n this.renderComplete();\n\n const defaultVisual = this.visual;\n\n delete this.visual;\n\n return defaultVisual;\n }\n });\n this._marker = this._markerLineArea = this._square = this._line = null;\n this.addVisual();\n } else {\n super.renderVisual();\n }\n }\n\n createFocusHighlight(style) {\n const borderWidth = style.stroke.width;\n return draw.Path.fromRect(this.container.box.pad(borderWidth / 2).toRect(), style);\n }\n}\n\nsetDefaultOptions(LegendItem, {\n accessibility: {\n role: LEGEND_ITEM_ROLE,\n className: LEGEND_ITEM_CLASSNAME,\n ariaRoleDescription: LEGEND_ITEM_ARIA_ROLE_DESCRIPTION\n },\n markers: {},\n highlight: {\n visible: true,\n markers: {}\n }\n});\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK, CIRCLE, POINTER, START, END, HORIZONTAL, SQUARE } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nconst CUSTOM = \"custom\";\n\nclass Legend extends ChartElement {\n constructor(options, chartService = {}) {\n super(options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n createContainers() {\n const options = this.options;\n const { position, align: userAlign } = options;\n let align = position;\n let vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === START) {\n align = LEFT;\n } else if (userAlign === END) {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === START) {\n vAlign = TOP;\n } else if (userAlign === END) {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n }\n\n createItems() {\n const chartService = this.getService();\n const options = this.options;\n const vertical = this.isVertical();\n const innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n let data = options.data;\n\n if (options.reverse) {\n data = data.slice(0).reverse();\n }\n\n const count = data.length;\n\n for (let i = 0; i < count; i++) {\n let dataItem = data[i];\n const { markers = {}, dashType, legendItem, opacity } = dataItem.series || {};\n const markersOptions = deepExtend({ visible: markers.visible !== false, type: CIRCLE }, markers);\n delete markersOptions.size;\n\n const itemOptions = deepExtend({},\n {\n markers: markersOptions,\n labels: options.labels,\n rtl: chartService.rtl,\n line: Object.assign({}, {dashType: dashType},\n options.line),\n area: Object.assign({}, {opacity: opacity},\n options.area),\n opacity: opacity,\n accessibility: options.accessibility\n },\n options.item,\n legendItem,\n dataItem,\n { markers: options.markers }\n );\n\n innerElement.append(new LegendItem(itemOptions));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n }\n\n isVertical() {\n const { orientation, position } = this.options;\n const vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n }\n\n hasItems() {\n return this.container.children[0].children.length > 0;\n }\n\n getItems() {\n return this.itemsContainer.children[0].children;\n }\n\n reflow(targetBox) {\n const options = this.options;\n const legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n }\n\n containerReflow(targetBox) {\n const { options, container } = this;\n const { position, width, height } = options;\n const pos = position === TOP || position === BOTTOM ? X : Y;\n const vertical = this.isVertical();\n const alignTarget = targetBox.clone();\n let containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n const box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n }\n\n containerCustomReflow(targetBox) {\n const { options, container } = this;\n const { offsetX, offsetY, width, height } = options;\n const vertical = this.isVertical();\n let containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n }\n\n renderVisual() {\n if (this.hasItems()) {\n super.renderVisual();\n }\n }\n\n createLegendTitle(title) {\n let titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n let text = titleOptions.text;\n\n if (!title || title.visible === false || !title.text) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n const labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n }\n\n createTitleLayout() {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n }\n\n hasTitle() {\n return Boolean(this.options.title && this.options.title.visible !== false && this.options.title.text);\n }\n\n appendTitleLayoutContent() {\n const options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n}\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n data: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(2),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {},\n line: {\n width: 20,\n height: 2,\n cursor: POINTER,\n opacity: 1\n },\n area: {\n type: SQUARE,\n align: RIGHT,\n width: 15,\n height: 15,\n }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\nimport { TRENDLINE_SERIES } from '../constants';\n\nclass PlotAreaFactory extends Class {\n\n constructor() {\n super();\n\n this._registry = [];\n }\n\n register(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n }\n\n create(srcSeries, options, chartService) {\n const registry = this._registry;\n let match = registry[0];\n let series;\n\n for (let idx = 0; idx < registry.length; idx++) {\n const entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n const trendlines = filterSeriesByType(srcSeries, TRENDLINE_SERIES);\n\n if ((series.length - trendlines.length) > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n}\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;\n","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, eventCoordinates, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nconst ZOOM_ACCELERATION = 3;\nconst SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(classNames) {\n const element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n let current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nclass Selection extends Class {\n constructor(chart, categoryAxis, options, observer) {\n super();\n\n const chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n onPane(pane) {\n return this.categoryAxis.pane === pane;\n }\n\n createElements() {\n const options = this.options;\n const wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n const selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n const body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n const leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n const rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n const selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n const leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n const rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n /* eslint no-self-assign: \"off\" */\n wrapper.style.cssText = wrapper.style.cssText;\n }\n\n bindEvents() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.chartElement, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n }\n\n this._domEvents = DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n }\n\n initOptions() {\n const { options, categoryAxis } = this;\n const box = categoryAxis.pane.chartsBox();\n const intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n const { paddingLeft, paddingTop } = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n }\n\n destroy() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.chartElement, {\n [ MOUSEWHEEL ]: this._mousewheelHandler\n });\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n }\n\n _rangeEventArgs(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n }\n\n _pointInPane(x, y) {\n const paneBox = this.categoryAxis.pane.box;\n const modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n }\n\n _start(e) {\n const options = this.options;\n const target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n const coords = eventCoordinates(e);\n const inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n const handle = closestHandle(target);\n const bodyRect = this.body.getBoundingClientRect();\n const inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n const args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n }\n\n _press(e) {\n let handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n }\n\n _move(e) {\n if (!this._state) {\n return;\n }\n\n const { _state: state, options, categoryAxis } = this;\n const { range, moveTarget: target } = state;\n const reverse = categoryAxis.options.reverse;\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const delta = state.startLocation - e.x.location;\n const oldRange = { from: range.from, to: range.to };\n const span = range.to - range.from;\n const scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n const offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n const leftHandle = target && hasClasses(target, \"k-left-handle\");\n const rightHandle = target && hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n }\n\n _end() {\n if (this._state) {\n const moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n const range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n }\n\n _tap(e) {\n const { options, categoryAxis } = this;\n const coords = this.chart._eventCoordinates(e);\n const categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n const from = this._index(options.from);\n const to = this._index(options.to);\n const min = this._index(options.min);\n const max = this._index(options.max);\n const span = to - from;\n const mid = from + span / 2;\n const range = {};\n const rightClick = e.event.which === 3;\n let offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n }\n\n _mousewheel(e) {\n let delta = mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n const range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._end();\n }, MOUSEWHEEL_DELAY);\n }\n }\n\n _gesturestart(e) {\n const options = this.options;\n const touch = e.touches[0];\n const inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n const args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n }\n\n _gestureend() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n }\n\n _gesturechange(e) {\n if (!this._state) {\n return;\n }\n\n const { chart, _state: state, options, categoryAxis } = this;\n const range = state.range;\n const p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n const p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n const left = Math.min(p0, p1);\n const right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n\n _index(value) {\n let index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n }\n\n _value(index) {\n let value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n }\n\n _slot(value) {\n const categoryAxis = this.categoryAxis;\n const index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n }\n\n move(from, to) {\n const options = this.options;\n const reverse = this.categoryAxis.options.reverse;\n const { offset, padding, selection: { border } } = options;\n const left = reverse ? to : from;\n const right = reverse ? from : to;\n const edge = 'x' + (reverse ? 2 : 1);\n\n let box = this._slot(left);\n const leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n const rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n let distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n }\n\n set(from, to) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const fromValue = limitValue(this._index(from), min, max);\n const toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n }\n\n expand(delta) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const zDir = options.mousewheel.zoom;\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n zoom(delta, coords) {\n const options = this.options;\n const min = this._index(options.min);\n const max = this._index(options.max);\n const from = this._index(options.from);\n const to = this._index(options.to);\n let range = { from: from, to: to };\n const oldRange = deepExtend({}, range);\n\n const { reverse } = this.categoryAxis.options;\n const origin = X + (reverse ? '2' : '1');\n const lineBox = this.categoryAxis.lineBox();\n const relative = Math.abs(lineBox[origin] - coords[X]);\n const size = lineBox.width();\n const position = round(relative / size, 2);\n const minDelta = round(position * delta);\n const maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n }\n\n trigger(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n}\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nclass Tooltip extends BaseTooltip {\n show(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n const options = deepExtend({}, this.options, point.options.tooltip);\n const anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n super.show({\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n }\n\n hide() {\n delete this._current;\n super.hide();\n }\n}\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nclass SharedTooltip extends BaseTooltip {\n constructor(plotArea, options) {\n super(plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n showAt(points, coords) {\n const tooltipPoints = grep(points, function(point) {\n const tooltip = point.series.tooltip;\n const excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n const point = tooltipPoints[0];\n const slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n const anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n }\n\n _slotAnchor(point, slot) {\n const axis = this.plotArea.categoryAxis;\n const align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n const box = point.owner.pane.chartsBox();\n const vertical = this.plotArea.categoryAxis.options.vertical;\n const center = box.center();\n const slotCenter = slot.center();\n const align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n let centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n}\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nclass BarChartAnimation extends draw.Animation {\n\n setup() {\n const { element, options } = this;\n const bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n const axis = options.vertical ? Y : X;\n\n const fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n }\n\n step(pos) {\n const scaleX = interpolateValue(this.fromScale.x, 1, pos);\n const scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n }\n\n abort() {\n super.abort();\n this.element.transform(null);\n }\n}\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass BubbleAnimation extends draw.Animation {\n setup() {\n const center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n }\n}\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass FadeInAnimation extends draw.Animation {\n setup() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n }\n\n step(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n}\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PieAnimation extends draw.Animation {\n setup() {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n }\n\n step(pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n }\n}\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nclass ScatterLineChart extends ScatterChart {\n render() {\n super.render();\n\n this.renderSegments();\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n }\n\n animationPoints() {\n const points = super.animationPoints();\n return points.concat(this._segments);\n }\n\n createMissingValue(value, missingValues) {\n if (missingValues === ZERO) {\n const missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n}\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import autoMajorUnit from '../../core/utils/auto-major-unit';\nimport { valueOrDefault } from '../../common';\n\nfunction getScatterTrendlineData(valueMapper, range, options) {\n const data = [];\n let { xMin, xMax } = range;\n\n const forecast = (options || {}).forecast;\n if (forecast) {\n if (forecast.before > 0) {\n xMin -= forecast.before;\n }\n\n if (forecast.after > 0) {\n xMax += forecast.after;\n }\n }\n\n const samplingInterval = (options || {}).samplingInterval;\n let delta = valueOrDefault(samplingInterval, autoMajorUnit(xMin, xMax) / 10);\n if (samplingInterval <= 0) {\n delta = xMax - xMin;\n }\n\n for (let x = xMin; x <= xMax; x += delta) {\n data.push([\n x,\n valueMapper(x)\n ]);\n }\n\n return data;\n}\n\nexport default getScatterTrendlineData;\n","const scatterValueGetter = fieldName => ({ valueFields }) =>\n ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n\nexport default scatterValueGetter;\n","function xValueLimits(sourceValues, valueGetter) {\n let xMin = Number.MAX_VALUE;\n let xMax = Number.MIN_VALUE;\n\n for (let i = 0; i < sourceValues.length; i++) {\n const value = sourceValues[i];\n const { xValue, yValue } = valueGetter(value);\n\n if (isFinite(xValue) && xValue !== null && isFinite(yValue) && yValue !== null) {\n xMin = Math.min(xValue, xMin);\n xMax = Math.max(xValue, xMax);\n }\n }\n\n return { xMin, xMax };\n}\n\nexport default xValueLimits;\n","import {\n TRENDLINE_EXPONENTIAL,\n TRENDLINE_LINEAR,\n TRENDLINE_LOGARITHMIC,\n TRENDLINE_MOVING_AVERAGE,\n TRENDLINE_POLYNOMIAL,\n TRENDLINE_POWER\n} from '../constants';\nimport scatterExponentialTrendline from './scatter-exponential-trendline';\nimport scatterLinearTrendline from './scatter-linear-trendline';\nimport scatterLogarithmicTrendline from './scatter-logarithmic-trendline';\nimport scatterMovingAverageTrendline from './scatter-moving-average';\nimport scatterPolynomialTrendline from './scatter-polynomial-trendline';\nimport scatterPowerTrendline from './scatter-power-trendline';\n\nconst scatterRegistry = {};\nscatterRegistry[TRENDLINE_EXPONENTIAL] = scatterExponentialTrendline;\nscatterRegistry[TRENDLINE_LINEAR] = scatterLinearTrendline;\nscatterRegistry[TRENDLINE_LOGARITHMIC] = scatterLogarithmicTrendline;\nscatterRegistry[TRENDLINE_MOVING_AVERAGE] = scatterMovingAverageTrendline;\nscatterRegistry[TRENDLINE_POLYNOMIAL] = scatterPolynomialTrendline;\nscatterRegistry[TRENDLINE_POWER] = scatterPowerTrendline;\n\nexport default scatterRegistry;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\n\nfunction scatterExponentialTrendline(context) {\n const {\n options,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ valueFields }) =>\n ({ xValue: valueFields.x, yValue: Math.log(valueFields[fieldName]) });\n\nfunction getData({ seriesValues, options }) {\n const sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, options.field)) {\n return null;\n }\n\n let { slope, intercept, count, xMin, xMax } = calculateSlope(sourceValues, valueGetter(options.field));\n const range = { xMin, xMax };\n\n if (count > 0) {\n // Exponential trendline equation:\n // y = a * e ^ (b * x)\n const a = Math.exp(intercept);\n const b = slope;\n\n return getScatterTrendlineData(x => a * Math.exp(b * x), range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterExponentialTrendline;\n","import calculateSlope from './calculate-slope';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterLinearTrendline(context) {\n const {\n options,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nfunction getData({ seriesValues, options }) {\n let { slope, intercept, count, xMin, xMax } = calculateSlope(seriesValues(), scatterValueGetter(options.field));\n const range = { xMin, xMax };\n\n if (count > 0) {\n return getScatterTrendlineData(x => slope * x + intercept, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterLinearTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport xValueLimits from './x-value-limits';\n\nfunction scatterLogarithmicTrendline(context) {\n const {\n options,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ valueFields }) =>\n ({ xValue: valueFields.x, yValue: valueFields[fieldName] });\n\nconst logValueGetter = fieldName => ({ valueFields }) =>\n ({ xValue: Math.log(valueFields.x), yValue: valueFields[fieldName] });\n\nfunction getData({ seriesValues, options }) {\n const sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n let { slope, intercept, count } = calculateSlope(sourceValues, logValueGetter(options.field));\n let range = xValueLimits(sourceValues, valueGetter(options.field));\n\n if (count > 0) {\n // Logarithmic trendline equation:\n // y = a * ln (x) + b\n const a = slope;\n const b = intercept;\n\n return getScatterTrendlineData(x => a * Math.log(x) + b, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterLogarithmicTrendline;\n","import calculateMovingAverage from './calculate-moving-average';\nimport { MIN_MOVING_AVERAGE_PERIOD } from '../constants';\nimport scatterValueGetter from './scatter-value-getter';\n\nfunction scatterMovingAverageTrendline(context) {\n const { options } = context;\n\n const data = getData(context);\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nfunction getData({ options, seriesValues }) {\n const period = (options.trendline || {}).period || MIN_MOVING_AVERAGE_PERIOD;\n const range = { before: period, after: period };\n const data = calculateMovingAverage(seriesValues(range), scatterValueGetter(options.field), period);\n\n if (data.length > 0) {\n return data;\n }\n\n return null;\n}\n\nexport default scatterMovingAverageTrendline;\n","import getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\nimport calculatePolynomial from './calculate-polynomial';\n\nfunction scatterPolynomialTrendline(context) {\n const {\n options,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nfunction getData({ seriesValues, options }) {\n const order = (options.trendline || {}).order;\n const valueGetter = scatterValueGetter(options.field);\n const { count, valueMapper, xMin, xMax } = calculatePolynomial(seriesValues(), valueGetter, order);\n const range = { xMin, xMax };\n\n if (count > 0) {\n // Polynomial trendline equation:\n // y = aN * x^N + ... + a2 * x^2 + a1 * x + a0\n return getScatterTrendlineData(valueMapper, range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterPolynomialTrendline;\n","import calculateSlope from './calculate-slope';\nimport checkAllPositive from './check-all-positive';\nimport getScatterTrendlineData from './get-scatter-trendline-data';\nimport scatterValueGetter from './scatter-value-getter';\nimport xValueLimits from './x-value-limits';\n\nfunction scatterPowerTrendline(context) {\n const {\n options,\n seriesValues\n } = context;\n\n const data = getData({ seriesValues, options });\n if (data) {\n return Object.assign({}, options,\n\n {type: 'scatterLine',\n data});\n }\n\n return null;\n}\n\nconst valueGetter = fieldName => ({ valueFields }) =>\n ({ xValue: Math.log(valueFields.x), yValue: Math.log(valueFields[fieldName]) });\n\nfunction getData({ seriesValues, options }) {\n const sourceValues = seriesValues();\n if (!checkAllPositive(sourceValues, 'x')) {\n return null;\n }\n\n let { slope, intercept, count } = calculateSlope(sourceValues, valueGetter(options.field));\n let range = xValueLimits(sourceValues, scatterValueGetter(options.field));\n\n if (count > 0) {\n // Power trendline equation:\n // y = a * x ^ b\n const a = Math.exp(intercept);\n const b = slope;\n return getScatterTrendlineData(x => a * Math.pow(x, b), range, options.trendline);\n }\n\n return null;\n}\n\nexport default scatterPowerTrendline;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\nimport trendlineFactory from '../trendlines/trendline-factory';\nimport scatterTrendlineRegistry from '../trendlines/scatter-trendline-registry';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport { filterSeriesByType, equalsIgnoreCase, singleItemOrArray } from '../utils';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nclass XYPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render(panes = this.panes) {\n this.series = [...this.originalSeries];\n this.createTrendlineSeries();\n\n const seriesByPane = this.groupSeriesByPane();\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n }\n\n appendChart(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n super.appendChart(chart, pane);\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n // TODO: Refactor, optionally use series.pane option\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n createScatterChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createScatterLineChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createBubbleChart(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n const axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n const isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n const defaultRange = tracker.query();\n const defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n const range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n const typeSamples = [ axisOptions.min, axisOptions.max ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n const axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n const currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n\n trendlineFactory(options, series) {\n const seriesValues = this.seriesValues.bind(this, series.index);\n\n const trendline = trendlineFactory(scatterTrendlineRegistry, options.type, {\n options,\n seriesValues\n });\n\n if (trendline) {\n // Inherit settings\n trendline.xAxis = series.xAxis;\n trendline.yAxis = series.yAxis;\n }\n\n return trendline;\n }\n\n seriesValues(seriesIx) {\n const result = [];\n const currentSeries = this.series[seriesIx];\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const data = this.bindPoint(currentSeries, pointIx);\n result.push({ pointIx, valueFields: data.valueFields });\n }\n\n return result;\n }\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET, CHART_POINT_ROLE, CHART_POINT_CLASSNAME, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\n\nclass PieSegment extends ChartElement {\n constructor(value, sector, options) {\n super(options);\n\n this.value = value;\n this.sector = sector;\n }\n\n render() {\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n this.createLabel();\n }\n\n createLabel() {\n const labels = this.options.labels;\n const chartService = this.owner.chartService;\n let labelText = this.getLabelText(labels);\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n const themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), this.pointData());\n\n this.append(this.label);\n }\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.owner.chartService.format.auto(options.format, this.value);\n }\n\n reflow(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n }\n\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const labelsDistance = labelsOptions.distance;\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n const labelWidth = label.box.width();\n let lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n let x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n }\n\n createVisual() {\n const { sector, options } = this;\n\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n\n if (this.value) {\n if (options.visual) {\n const startAngle = (sector.startAngle + 180) % 360;\n const visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: () => {\n const group = new draw.Group();\n this.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n }\n\n createSegmentVisual(group) {\n const { sector, options } = this;\n const borderOptions = options.border || {};\n const border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n const color = options.color;\n const fill = {\n color: color,\n opacity: options.opacity\n };\n const visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n }\n\n createSegment(sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n }\n\n createAnimation() {\n const { options, sector: { center } } = this;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n super.createAnimation();\n }\n\n createHighlight(options) {\n const highlight = this.options.highlight || {};\n const border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n }\n\n createFocusHighlight(style) {\n const borderWidth = this.options.accessibility.highlight.border.width;\n const result = this.createSegment(this.sector, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n }));\n\n const clipPath = new draw.MultiPath();\n\n clipPath.paths.push(draw.Path.fromRect(result.bbox()));\n clipPath.paths.push(this.createSegment(this.sector, {}));\n\n result.clip(clipPath);\n\n return result;\n }\n\n tooltipAnchor() {\n const sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n const midAndle = sector.middle();\n const midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n\n getIndex() {\n return this.index;\n }\n}\n\nconst RAD_30 = round(rad(30), DEFAULT_PRECISION);\nconst RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n const radians = rad(angle);\n const sine = round(Math.sin(radians), DEFAULT_PRECISION);\n const cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n let horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n let vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true,\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\ndeepExtend(PieSegment.prototype, AccessibilityAttributesMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nconst PieChartMixin = {\n createLegendItem: function(value, point, options) {\n const legendOptions = this.options.legend || {};\n const labelsOptions = legendOptions.labels || {};\n const inactiveItems = legendOptions.inactiveItems || {};\n const inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n const pointVisible = options.visible !== false;\n const labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n let text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n let itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst PIE_SECTOR_ANIM_DELAY = 70;\n\nclass PieChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n render() {\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n traverseDataPoints(callback) {\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const colorsCount = seriesColors.length;\n const series = options.series;\n const seriesCount = series.length;\n\n for (let seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n const currentSeries = series[seriesIx];\n const data = currentSeries.data;\n const { total, points, count } = bindSegments(currentSeries);\n const anglePerValue = 360 / total;\n let constantAngle;\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n let currentAngle;\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n const { fields, value, visible } = pointData;\n const angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n const explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"visual\", \"toggle\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n }\n\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const { options, points, seriesConfigs = [] } = this;\n const count = points.length;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n const newBoxCenter = newBox.center();\n const boxCenter = box.center();\n const seriesCount = options.series.length;\n const leftSideLabels = [];\n const rightSideLabels = [];\n let padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n const radius = halfMinWidth - padding;\n const center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const sector = segment.sector;\n const seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n const seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n const label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n }\n\n leftLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n rightLabelsReflow(labels) {\n const distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n }\n\n distanceBetweenLabels(labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const count = labels.length - 1;\n const lr = sector.radius + segment.options.labels.distance;\n const distances = [];\n let firstBox = labels[0].box;\n let distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (let i = 0; i < count; i++) {\n const secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n }\n\n distributeLabels(distances, labels) {\n const count = distances.length;\n let left, right, remaining;\n\n for (let i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this._takeDistance(distances, i, --left, remaining);\n remaining = this._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n }\n\n _takeDistance(distances, anchor, position, amount) {\n let result = amount;\n if (distances[position] > 0) {\n const available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n }\n\n reflowLabels(distances, labels) {\n const segment = last(this.points);\n const sector = segment.sector;\n const labelOptions = segment.options.labels;\n const labelsCount = labels.length;\n const labelDistance = labelOptions.distance;\n let boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n let boxX;\n\n distances[0] += 2;\n for (let i = 0; i < labelsCount; i++) {\n const label = labels[i];\n const box = label.box;\n\n boxY += distances[i];\n boxX = this.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n }\n\n createVisual() {\n const { options: { connectors }, points } = this;\n const count = points.length;\n const space = 4;\n\n super.createVisual();\n\n this._connectorLines = [];\n\n for (let i = 0; i < count; i++) {\n const segment = points[i];\n const { sector, label } = segment;\n const angle = sector.middle();\n const connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n const connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n const box = label.box;\n const centerPoint = sector.center;\n let start = sector.point(angle);\n let middle = new Point(box.x1, box.center().y);\n let sr, end, crossing;\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this._connectorLines.push(connectorLine);\n this.visual.append(connectorLine);\n }\n }\n }\n }\n\n renderVisual() {\n super.renderVisual();\n\n if (find(this.options.series, options => options.autoFit)) {\n const targetBox = this.targetBox;\n const pieCenter = this.box.center();\n const bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n const bboxBottom = bbox.bottomRight();\n\n const scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n }\n\n labelComparator(reverse) {\n const reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n const first = (a.parent.sector.middle() + 270) % 360;\n const second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n }\n\n hAlignLabel(originalX, sector, y1, y2, direction) {\n const { radius, center: { x: cx, y: cy } } = sector;\n const t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n }\n\n pointInCircle(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n }\n\n formatPointValue(point, format) {\n return this.chartService.format.auto(format, point.value);\n }\n\n animationDelay(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n }\n\n stackRoot() {\n return this;\n }\n}\n\nfunction intersection(a1, a2, b1, b2) {\n const uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n const ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n let result;\n if (ub !== 0) {\n const ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nclass PiePlotArea extends PlotAreaBase {\n render() {\n this.createPieChart(this.series);\n }\n\n createPieChart(series) {\n const firstSeries = series[0];\n const pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.data, chart.legendItems);\n }\n\n getPointBelow(point) {\n return this.getPointToTheRight(point);\n }\n\n getPointAbove(point) {\n return this.getPointToTheLeft(point);\n }\n}\n\nexport default PiePlotArea;\n","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nclass DonutSegment extends PieSegment {\n reflowLabel() {\n const { options: { labels: labelsOptions }, label } = this;\n const sector = this.sector.clone();\n const angle = sector.middle();\n\n if (label) {\n const labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n const lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n super.reflowLabel();\n }\n }\n }\n\n createSegment(sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n }\n}\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nconst DONUT_SECTOR_ANIM_DELAY = 50;\n\nclass DonutChart extends PieChart {\n addValue(value, sector, fields) {\n const segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n const segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n }\n\n reflow(targetBox) {\n const options = this.options;\n const box = targetBox.clone();\n const space = 5;\n const minWidth = Math.min(box.width(), box.height());\n const halfMinWidth = minWidth / 2;\n const defaultPadding = minWidth - minWidth * 0.85;\n const series = options.series;\n const seriesCount = series.length;\n\n let padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n let totalSize = halfMinWidth - padding;\n let seriesWithoutSize = 0;\n let holeSize;\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n const currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n let innerRadius = holeSize;\n let margin = 0;\n let size, radius;\n\n this.seriesConfigs = [];\n\n for (let i = 0; i < seriesCount; i++) {\n const currentSeries = series[i];\n size = valueOrDefault(currentSeries.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries.margin || 0;\n innerRadius = radius;\n }\n\n super.reflow(targetBox);\n }\n\n animationDelay(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n}\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;\n","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nconst DEFAULT_PADDING = 0.15;\n\nclass PolarPlotAreaBase extends PlotAreaBase {\n initFields() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n }\n\n render() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n }\n\n alignAxes() {\n const axis = this.valueAxis;\n const range = axis.range();\n const crossingValue = axis.options.reverse ? range.max : range.min;\n const slot = axis.getSlot(crossingValue);\n const center = this.polarAxis.getSlot(0).center;\n const axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n }\n\n createValueAxis() {\n const tracker = this.valueAxisRangeTracker;\n const defaultRange = tracker.query();\n const axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n let axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n const range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n const valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n }\n\n reflowAxes() {\n const { options: { plotArea: options }, valueAxis, polarAxis, box } = this;\n const defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n const padding = getSpacing(options.padding || {}, defaultPadding);\n const paddingBox = box.clone().unpad(padding);\n const axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n const valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n const heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n }\n\n backgroundBox() {\n return this.box;\n }\n\n detachLabels() {}\n}\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarScatterChart extends ScatterChart {\n pointSlot(slotX, slotY) {\n const valueRadius = slotX.center.y - slotY.y1;\n const slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n}\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass PolarLineChart extends ScatterLineChart {\n}\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nclass SplinePolarAreaSegment extends SplineAreaSegment {\n fillToAxes(fillPath) {\n const center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n }\n\n _polarAxisCenter() {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n return center;\n }\n\n strokeSegments() {\n let segments = this._strokeSegments;\n\n if (!segments) {\n const center = this._polarAxisCenter();\n const curveProcessor = new CurveProcessor(false);\n const linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n}\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nclass PolarAreaSegment extends AreaSegment {\n fillToAxes(fillPath) {\n const polarAxis = this.parent.plotArea.polarAxis;\n const center = polarAxis.box.center();\n const centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n}\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nclass PolarAreaChart extends PolarLineChart {\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = (currentSeries.line || {}).style;\n let segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n }\n\n createMissingValue(value, missingValues) {\n let missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n\n _hasMissingValuesGap() {\n const series = this.options.series;\n\n for (let idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n }\n\n sortPoints(points) {\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (let idx = 0; idx < points.length; idx++) {\n const point = points[idx];\n if (point) {\n const value = point.value;\n if (!hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n}\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\nimport XYPlotArea from './xy-plotarea';\n\nclass PolarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n }\n\n render() {\n this.series = [...this.originalSeries];\n this.createTrendlineSeries();\n\n super.render();\n }\n\n valueAxisOptions(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n }\n\n createValueAxis() {\n super.createValueAxis();\n this.axisY = this.valueAxis;\n }\n\n trendlineFactory(options, series) {\n const trendline = XYPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = POLAR_LINE;\n }\n\n return trendline;\n }\n\n appendChart(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n }\n\n createScatterChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const xValue = this.axisX.getValue(point);\n const yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n }\n\n createCrosshairs() {}\n}\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin, {\n seriesValues: XYPlotArea.prototype.seriesValues\n});\n\nexport default PolarPlotArea;\n","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n const seriesSegments = [];\n for (let idx = 0; idx < segments.length; idx++) {\n const segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nclass RadarLineChart extends LineChart {\n\n pointSlot(categorySlot, valueSlot) {\n const valueRadius = categorySlot.center.y - valueSlot.y1;\n const slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n\n renderSegments() {\n super.renderSegments();\n\n if (this._segments && this._segments.length > 1) {\n const seriesSegments = groupBySeriesIx(this._segments);\n\n for (let idx = 0; idx < seriesSegments.length; idx++) {\n const segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n const firstPoint = segments[0].linePoints[0];\n const lastSegment = last(segments);\n const lastPoint = last(lastSegment.linePoints);\n const isFirstDataPoint = firstPoint.categoryIx === 0;\n const isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n }\n\n createSegment(linePoints, currentSeries, seriesIx) {\n const style = currentSeries.style;\n let pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n const segment = new pointType(linePoints, currentSeries, seriesIx);\n const missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n}\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nclass SplineRadarAreaSegment extends SplineAreaSegment {\n fillToAxes() {}\n}\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nclass RadarAreaSegment extends AreaSegment {\n fillToAxes() {}\n}\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nclass RadarAreaChart extends RadarLineChart {\n createSegment(linePoints, currentSeries, seriesIx, prevSegment) {\n const isStacked = this.options.isStacked;\n const style = (currentSeries.line || {}).style;\n let previousSegment;\n let stackPoints;\n let segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n }\n\n seriesMissingValues(series) {\n return series.missingValues || ZERO;\n }\n}\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarSegment extends DonutSegment {\n constructor(value, options) {\n super(value, null, options);\n }\n\n getIndex() {\n return this.categoryIx;\n }\n}\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nclass RadarClusterLayout extends ChartElement {\n constructor(options) {\n super(options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n reflow(sector) {\n const { options, children } = this;\n const { gap, spacing } = options;\n const count = children.length;\n const slots = count + gap + (spacing * (count - 1));\n const slotAngle = sector.angle / slots;\n let angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, (child) => {\n const slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n}\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nclass RadarStackLayout extends ChartElement {\n reflow(sector) {\n const { options: { reverse }, children } = this;\n const childrenCount = children.length;\n const first = reverse ? childrenCount - 1 : 0;\n const step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (let i = first; i >= 0 && i < childrenCount; i += step) {\n const childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n}\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nclass RadarBarChart extends BarChart {\n pointType() {\n return RadarSegment;\n }\n\n clusterType() {\n return RadarClusterLayout;\n }\n\n stackType() {\n return RadarStackLayout;\n }\n\n categorySlot(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n }\n\n pointSlot(categorySlot, valueSlot) {\n const slot = categorySlot.clone();\n const y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n }\n\n reflowPoint(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n }\n\n createAnimation() {\n this.options.animation.center = this.box.toRect().center();\n super.createAnimation();\n }\n}\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nclass RadarPlotArea extends PolarPlotAreaBase {\n createPolarAxis() {\n const categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createTrendlineSeries();\n this.createCategoryAxesLabels();\n }\n\n valueAxisOptions(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n }\n\n aggregateCategories() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n }\n\n createCategoryAxesLabels() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n }\n\n filterSeries(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n }\n\n trendlineFactory(options, series) {\n const trendline = CategoricalPlotArea.prototype.trendlineFactory.call(this, options, series);\n if (trendline) {\n trendline.type = RADAR_LINE;\n }\n\n return trendline;\n }\n\n createCharts() {\n const series = this.filterVisibleSeries(this.series);\n const pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n }\n\n chartOptions(series) {\n const options = { series: series };\n const firstSeries = series[0];\n if (firstSeries) {\n const filteredSeries = this.filterVisibleSeries(series);\n const stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n }\n\n createAreaChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n }\n\n createLineChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n }\n\n createBarChart(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n const firstSeries = series[0];\n const options = this.chartOptions(series);\n const filteredSeries = this.filterVisibleSeries(series);\n const anyStackedSeries = filteredSeries.some(s => s.stack);\n const isStacked100 = filteredSeries.some(s => s.stack && s.stack.type === \"100%\");\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n options.defaultStack = firstSeries.stack && filteredSeries.length > 1;\n options.isStacked = anyStackedSeries && filteredSeries.length > 1;\n options.isStacked100 = isStacked100 && filteredSeries.length > 1;\n\n const barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n }\n\n seriesCategoryAxis() {\n return this.categoryAxis;\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const category = this.categoryAxis.getCategory(point);\n const value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n }\n\n createCrosshairs() {}\n\n _pointsByVertical(basePoint) {\n return super._pointsByVertical(basePoint).sort(this._getSeriesCompareFn());\n }\n\n _getSeriesCompareFn() {\n return (a, b) => b.value - a.value;\n }\n}\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints,\n seriesValues: CategoricalPlotArea.prototype.seriesValues\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions, getTemplate } from '../../common';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\nimport { CHART_POINT_CLASSNAME, CHART_POINT_ROLE, CHART_POINT_ROLE_DESCRIPTION } from '../constants';\n\nclass FunnelSegment extends ChartElement {\n constructor(value, options, segmentOptions) {\n super(options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n } else if (options.format) {\n return this.formatValue(options.format);\n }\n\n return this.value;\n }\n\n reflow(chartBox) {\n const points = this.points;\n const label = this.children[0];\n const x1 = Math.min(points[0].x, points[3].x);\n const x2 = Math.max(points[1].x, points[2].x);\n\n this.box = new Box(x1, points[0].y, x2, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n }\n\n createVisual() {\n const options = this.options;\n let visual;\n\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: () => this.createPath()\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n }\n\n createPath() {\n const options = this.options;\n const border = options.border;\n const path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n }\n\n createHighlight(style) {\n return draw.Path.fromPoints(this.points, style);\n }\n\n highlightVisual() {\n return this.visual.children[0];\n }\n\n highlightVisualArgs() {\n const path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n }\n\n createFocusHighlight(style) {\n const borderWidth = this.options.accessibility.highlight.border.width;\n const result = draw.Path.fromPoints(this.points, deepExtend({}, style, {\n stroke: {\n width: borderWidth * 2\n }\n })).close();\n\n const clipPath = new draw.MultiPath();\n\n clipPath.paths.push(draw.Path.fromRect(this.box.clone().pad(borderWidth).toRect()));\n clipPath.paths.push(draw.Path.fromPoints(this.points));\n\n result.clip(clipPath);\n\n return result;\n }\n\n tooltipAnchor() {\n const box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n }\n\n formatValue(format) {\n const point = this;\n return point.owner.formatPointValue(point, format);\n }\n\n pointData() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n\n getIndex() {\n return this.index;\n }\n}\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n },\n labels: {\n format: \"\"\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\ndeepExtend(FunnelSegment.prototype, AccessibilityAttributesMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nclass FunnelChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n formatPointValue(point, format) {\n return this.plotArea.chartService.format.auto(format,point.value);\n }\n\n render() {\n const seriesIx = 0;\n const { options, plotArea: { options: { seriesColors = [] } } } = this;\n const series = options.series[seriesIx];\n const data = series.data;\n\n if (!data) {\n return;\n }\n\n const { total, points } = bindSegments(series);\n\n for (let i = 0; i < points.length; i++) {\n const pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n let fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this,\n series: series,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n const value = pointData.valueFields.value;\n const segment = this.createSegment(value, fields);\n const label = this.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n }\n\n evalSegmentOptions(options, value, fields) {\n const series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [\n \"data\", \"content\", \"template\", \"toggle\", \"visual\",\n \"ariaTemplate\", \"ariaContent\"\n ] });\n }\n\n createSegment(value, fields) {\n const seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n const segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n }\n\n createLabel(value, fields) {\n const { series, dataItem } = fields;\n const labels = deepExtend({}, this.options.labels, series.labels);\n let text = value;\n\n if (labels.visible) {\n const labelTemplate = getTemplate(labels);\n const data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n const textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n }\n\n labelPadding() {\n const labels = this.labels;\n const padding = { left: 0, right: 0 };\n\n for (let i = 0; i < labels.length; i++) {\n const label = labels[i];\n const align = label.options.align;\n if (align !== CENTER) {\n const width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n }\n\n dynamicSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const firstSegment = segments[0];\n let maxSegment = firstSegment;\n\n for (let idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n let lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n let previousOffset = (width - lastUpperSide) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const percentage = segments[idx].percentage;\n const nextSegment = segments[idx + 1];\n const nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n const points = segments[idx].points = [];\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n let offset;\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n }\n\n constantSlopeReflow(box, width, totalHeight) {\n const { options, points: segments } = this;\n const count = segments.length;\n const decreasingWidth = options.neckRatio <= 1;\n const neckRatio = decreasingWidth ? options.neckRatio * width : width;\n let previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n const topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n const finalNarrow = (topMostWidth - neckRatio) / 2;\n let previousHeight = 0;\n\n for (let idx = 0; idx < count; idx++) {\n const points = segments[idx].points = [];\n const percentage = segments[idx].percentage;\n const offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n const height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n }\n\n reflow(chartBox) {\n const points = this.points;\n const count = points.length;\n\n if (!count) {\n return;\n }\n\n const options = this.options;\n const box = chartBox.clone().unpad(this.labelPadding());\n const totalHeight = box.height() - options.segmentSpacing * (count - 1);\n const width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (let idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n}\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import FunnelChart from './funnel-chart';\n\nconst MAX_NECK_RATIO = 1e6;\n\nclass PyramidChart extends FunnelChart {\n constructor(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n super(plotArea, options);\n }\n}\n\nexport default PyramidChart;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { CHART_POINT_CLASSNAME, CHART_POINT_ROLE, CHART_POINT_ROLE_DESCRIPTION, TOOLTIP_OFFSET } from '../constants';\nimport AccessibilityAttributesMixin from '../mixins/accessibility-attributes-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nclass HeatmapPoint extends ChartElement {\n constructor(value, options) {\n super();\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n render() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n }\n\n createLabel() {\n const options = this.options;\n const labels = options.labels;\n\n if (labels.visible) {\n this.label = this.createLabelElement(labels);\n this.append(this.label);\n }\n }\n\n createLabelElement(options) {\n let labelColor = options.color;\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n return new TextBox(this.getLabelText(options),\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n },\n options, {\n color: labelColor\n }),\n this.pointData()\n );\n }\n\n getLabelText(options) {\n let labelTemplate = getTemplate(options);\n\n if (labelTemplate) {\n return labelTemplate(this.pointData());\n }\n\n return this.formatValue(options.format);\n }\n\n formatValue(format) {\n return this.owner.formatPointValue(this, format);\n }\n\n reflow(targetBox) {\n this.render();\n\n const label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n }\n\n createVisual() {\n super.createVisual();\n\n this.addAccessibilityAttributesToVisual();\n }\n\n markerBox() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const rect = this.box.toRect();\n const type = valueOrDefault(markers.type, 'rect');\n const isRoundRect = type === ROUNDED_RECT;\n let borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n const halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n const center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n }\n\n markerBorder() {\n const options = this.options;\n const markers = options.markers;\n const border = markers.border;\n const opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n }\n\n createMarker() {\n const options = this.options;\n const markerOptions = options.markers;\n const marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n }\n\n createHighlight(style) {\n const options = this.options;\n const markerOptions = this.options.highlight.markers || this.options.markers;\n\n const highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n const visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n }\n\n highlightVisual() {\n return this.rectVisual;\n }\n\n highlightVisualArgs() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n }\n\n createFocusHighlight() {\n const markerOptions = this.options.markers;\n const highlightOptions = this.options.accessibility.highlight;\n\n const highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: highlightOptions.color,\n border: highlightOptions.border,\n borderRadius: markerOptions.borderRadius,\n padding: highlightOptions.border.width / 2,\n zIndex: highlightOptions.zIndex\n });\n\n highlight.reflow(this.markerBox());\n\n return highlight.getElement();\n }\n\n tooltipAnchor() {\n const left = this.box.center().x;\n const top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n }\n\n overlapsBox(box) {\n return this.box.overlaps(box);\n }\n\n unclipElements() {\n /* noop, clip labels */\n }\n\n pointData() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n}\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\ndeepExtend(HeatmapPoint.prototype, AccessibilityAttributesMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n },\n accessibility: {\n role: CHART_POINT_ROLE,\n className: CHART_POINT_CLASSNAME,\n ariaRoleDescription: CHART_POINT_ROLE_DESCRIPTION\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nclass HeatmapChart extends ChartElement {\n constructor(plotArea, options) {\n super(options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n _initFields() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n }\n\n render() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n }\n\n setRange() {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields } = this.plotArea.bindPoint(currentSeries, pointIx);\n if (defined(valueFields.value) && valueFields.value !== null) {\n this.valueRange.min = Math.min(this.valueRange.min, valueFields.value);\n this.valueRange.max = Math.max(this.valueRange.max, valueFields.value);\n }\n }\n }\n }\n\n addValue(value, fields) {\n let point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n }\n\n evalPointOptions(options, value, fields) {\n const { series, seriesIx } = fields;\n const state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\",\n \"ariaTemplate\", \"ariaContent\"\n ]\n };\n\n let doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n let pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n }\n\n pointType() {\n return HeatmapPoint;\n }\n\n pointOptions(series, seriesIx) {\n let options = this.seriesOptions[seriesIx];\n if (!options) {\n const defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n }\n\n createPoint(value, fields) {\n const series = fields.series;\n let pointOptions = this.pointOptions(series, fields.seriesIx);\n let color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n const scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n const point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n }\n\n seriesAxes(series) {\n const { xAxis: xAxisName, yAxis: yAxisName } = series;\n const plotArea = this.plotArea;\n const xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n const yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n reflow(targetBox) {\n const chartPoints = this.points;\n const limit = !this.options.clip;\n let pointIx = 0;\n\n\n this.traverseDataPoints((value, fields) => {\n const point = chartPoints[pointIx++];\n const { xAxis, yAxis } = this.seriesAxes(fields.series);\n const indexX = xAxis.categoryIndex(value.x);\n const indexY = yAxis.categoryIndex(value.y);\n const slotX = xAxis.getSlot(indexX, indexX, limit);\n const slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n const pointSlot = this.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n }\n\n pointSlot(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n }\n\n traverseDataPoints(callback) {\n const { options: { series } } = this;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n const xRange = xAxis.currentRangeIndices();\n const yRange = yAxis.currentRangeIndices();\n\n for (let pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n const { valueFields: value, fields } = this.plotArea.bindPoint(currentSeries, pointIx);\n const xIndex = xAxis.totalIndex(value.x);\n const yIndex = yAxis.totalIndex(value.y);\n const xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n const yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this\n }, fields));\n }\n }\n }\n }\n\n formatPointValue(point, format) {\n const value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n }\n\n animationPoints() {\n const points = this.points;\n const result = [];\n for (let idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n}\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\n\nexport default HeatmapChart;\n","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nconst colorScale = (color, minLightnessOffset = 0.05) => {\n const baseColor = parseColor(color);\n const offset = 1 - minLightnessOffset;\n\n return (value) => {\n const hsl = baseColor.toHSL();\n const range = 100 - hsl.l;\n const point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet, cycleIndex } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { dateEquals } from '../../date-utils';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nclass HeatmapPlotArea extends PlotAreaBase {\n initFields() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n }\n\n render(panes = this.panes) {\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n }\n\n bindCategories() {\n const series = this.srcSeries || this.series;\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const data = currentSeries.data || [];\n const { xAxis, yAxis } = this.seriesAxes(currentSeries);\n\n const xCategories = createHashSet(xAxis.categories || []);\n const yCategories = createHashSet(yAxis.categories || []);\n\n for (let pointIndex = 0; pointIndex < data.length; pointIndex++) {\n const { x, y } = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n }\n\n createCharts(panes) {\n const seriesByPane = this.groupSeriesByPane();\n\n for (let i = 0; i < panes.length; i++) {\n const pane = panes[i];\n const paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this.addToLegend(paneSeries);\n const filteredSeries = this.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n }\n\n createHeatmapChart(series, pane) {\n const chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n }\n\n seriesPaneName(series) {\n const options = this.options;\n const xAxisName = series.xAxis;\n const xAxisOptions = [].concat(options.xAxis);\n const xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n const yAxisName = series.yAxis;\n const yAxisOptions = [].concat(options.yAxis);\n const yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n const panes = options.panes || [ {} ];\n const defaultPaneName = panes[0].name || \"default\";\n const paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n }\n\n seriesAxes(series) {\n let xAxis;\n let yAxis;\n\n const options = this.options;\n\n const xAxisOptions = [].concat(options.xAxis);\n const xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(axis => axis.name === xAxisName);\n } else {\n xAxis = xAxisOptions[0];\n }\n\n const yAxisOptions = [].concat(options.yAxis);\n const yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(axis => axis.name === yAxisName);\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis, yAxis };\n }\n\n createAxisLabels() {\n const axes = this.axes;\n for (let i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n }\n\n createXYAxis(options, vertical, axisIndex) {\n const axisName = options.name;\n const namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n const axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n const firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n const typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n const series = this.series;\n\n for (let seriesIx = 0; seriesIx < series.length; seriesIx++) {\n const currentSeries = series[seriesIx];\n const seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n const firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n let inferredDate;\n\n for (let i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n let axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n const axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(`${ vertical ? \"Y\" : \"X\" } axis with name ${ axisName } is already defined`);\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.indexCategories();\n\n return axis;\n }\n\n createAxes(panes) {\n const options = this.options;\n const xAxesOptions = [].concat(options.xAxis);\n const xAxes = [];\n const yAxesOptions = [].concat(options.yAxis);\n const yAxes = [];\n\n for (let idx = 0; idx < xAxesOptions.length; idx++) {\n const axisPane = this.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (let idx = 0; idx < yAxesOptions.length; idx++) {\n const axisPane = this.findPane(yAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n yAxes.push(this.createXYAxis(yAxesOptions[idx], true, idx));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n }\n\n removeAxis(axis) {\n const axisName = axis.options.name;\n\n super.removeAxis(axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n }\n\n _dispatchEvent(chart, e, eventType) {\n const coords = chart._eventCoordinates(e);\n const point = new Point(coords.x, coords.y);\n const allAxes = this.axes;\n const length = allAxes.length;\n const xValues = [];\n const yValues = [];\n\n for (let i = 0; i < length; i++) {\n const axis = allAxes[i];\n const values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n }\n\n updateAxisOptions(axis, options) {\n const vertical = axis.options.vertical;\n const axes = this.groupAxes(this.panes);\n const index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n }\n\n crosshairOptions(axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n }\n\n _pointsByVertical(basePoint, offset = 0) {\n const normalizedOffset = this.axisX.options.reverse ? offset * -1 : offset;\n const axisXItems = this.axisX.children;\n let xIndex = this._getPointAxisXIndex(basePoint) + normalizedOffset;\n\n xIndex = cycleIndex(xIndex, axisXItems.length);\n const targetXValue = axisXItems[xIndex].value;\n\n const points = this\n .filterPoints(point => compareValues(point.pointData().x, targetXValue))\n .sort((a, b) => this._getPointAxisYIndex(a) - this._getPointAxisYIndex(b));\n\n if (this.axisY.options.reverse) {\n return points.reverse();\n }\n\n return points;\n }\n\n _pointsByHorizontal(basePoint, offset = 0) {\n const normalizedOffset = this.axisY.options.reverse ? offset * -1 : offset;\n const axisYItems = this.axisY.children;\n let yIndex = this._getPointAxisYIndex(basePoint) + normalizedOffset;\n\n yIndex = cycleIndex(yIndex, axisYItems.length);\n const targetYValue = axisYItems[yIndex].value;\n\n const points = this\n .filterPoints(point => compareValues(point.pointData().y, targetYValue))\n .sort((a, b) => this._getPointAxisXIndex(a) - this._getPointAxisXIndex(b));\n\n if (this.axisX.options.reverse) {\n return points.reverse();\n }\n\n return points;\n }\n\n _getPointAxisXIndex(point) {\n return this._getPointAxisIndex(this.axisX, point.pointData().x);\n }\n\n _getPointAxisYIndex(point) {\n return this._getPointAxisIndex(this.axisY, point.pointData().y);\n }\n\n _getPointAxisIndex(axis, pointValue) {\n return axis.children.findIndex(axisItem => compareValues(pointValue, axisItem.value));\n }\n}\n\nfunction compareValues(a, b) {\n if (a instanceof Date && b instanceof Date) {\n return dateEquals(a, b);\n }\n\n return a === b;\n}\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n const axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, PYRAMID, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP, DRILLDOWN_FIELD, TRENDLINE_SERIES } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nconst COLOR = \"color\";\nconst FIRST = \"first\";\nconst FROM = \"from\";\nconst MAX = \"max\";\nconst MIN = \"min\";\nconst NOTE_TEXT = \"noteText\";\nconst SUMMARY_FIELD = \"summary\";\nconst TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA,\n ...TRENDLINE_SERIES\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE,\n ...TRENDLINE_SERIES\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER,\n ...TRENDLINE_SERIES\n]);\n\nPlotAreaFactory.current.register(RadarPlotArea, [\n RADAR_AREA, RADAR_COLUMN, RADAR_LINE,\n ...TRENDLINE_SERIES\n]);\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ CATEGORY, COLOR, DRILLDOWN_FIELD ]);\n\nSeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n);\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nclass DonutPlotArea extends PiePlotArea {\n render() {\n this.createDonutChart(this.series);\n }\n\n createDonutChart(series) {\n const firstSeries = series[0];\n const donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n\n // These were overriden in the Pie, so revert to original behavior\n getPointBelow(point) {\n return this._getNextPoint(point, this._pointsByVertical, -1);\n }\n\n getPointAbove(point) {\n return this._getNextPoint(point, this._pointsByVertical, 1);\n }\n}\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\nimport PyramidChart from '../funnel-chart/pyramid-chart';\n\nimport { append } from '../../common';\nimport { filterSeriesByType } from '../utils';\n\nimport { FUNNEL, PYRAMID } from '../constants';\n\nclass FunnelPlotArea extends PlotAreaBase {\n render() {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n }\n\n createChart(chartType, series) {\n const firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n const chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n }\n\n appendChart(chart, pane) {\n super.appendChart(chart, pane);\n append(this.options.legend.data, chart.legendItems);\n }\n\n _pointsByVertical(basePoint) {\n return this.pointsBySeriesIndex(basePoint.series.index);\n }\n\n getPointToTheRight(point) {\n return this.getPointBelow(point);\n }\n\n getPointToTheLeft(point) {\n return this.getPointAbove(point);\n }\n}\n\nexport default FunnelPlotArea;\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport isDateAxis from './utils/is-date-axis';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY,\n ARROW_DOWN, ARROW_UP, ARROW_LEFT, ARROW_RIGHT, ARIA_ACTIVE_DESCENDANT, TAB, TOP, LEFT, BLACK } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, round,\n valueOrDefault, isString, cycleUp, cycleDown, hasOwnProperty } from '../common';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, PYRAMID, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER,\n SERIES_OVER, SERIES_LEAVE, SERIES_CLICK, DRILLDOWN, LEGEND_ITEM_CLICK } from './constants';\n\nimport './animations';\nimport './register-charts';\nimport { parseDateCategory } from './utils';\n\nconst AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nconst MOUSEDOWN = \"mousedown\";\nconst MOUSEMOVE = \"mousemove\";\nconst CONTEXTMENU = \"contextmenu\";\nconst MOUSELEAVE = \"mouseleave\";\nconst KEYDOWN = \"keydown\";\nconst FOCUS = \"focus\";\nconst BLUR = \"blur\";\nconst MOUSEMOVE_DELAY = 20;\n\nclass Chart extends Class {\n constructor(element, userOptions, themeOptions, context = {}) {\n super();\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n const options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n this._focusState = {};\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, () => {\n this.fontLoaded = true;\n if (!this._destroyed) {\n this.trigger('init');\n this._redraw();\n this._attachEvents();\n }\n });\n }\n\n _initElement(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n element.tabIndex = element.getAttribute(\"tabindex\") ? element.getAttribute(\"tabindex\") : 0;\n // To support user agents and assistive technologies based on the ARIA 1.0 specification, authors may wish to include the document role as a fallback value, in the form role=\"graphics-document document\".\n element.setAttribute(\"role\", \"graphics-document document\");\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n }\n\n _setElementClass(element) {\n addClass(element, \"k-chart\");\n }\n\n _initTheme(options, themeOptions) {\n const seriesCopies = [];\n const series = options.series || [];\n\n for (let i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n if (isString(options.title)) {\n options.title = { text: options.title };\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n }\n\n getSize() {\n const chartArea = this.options.chartArea || {};\n const width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n const height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this._size;\n const hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, s => !s.visible)) {\n this._destroySelections();\n this._setupSelection();\n }\n }\n\n _resize() {\n this._noTransitionsRedraw();\n }\n\n redraw(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n }\n\n getAxis(name) {\n return findAxisByName(name, this._plotArea.axes);\n }\n\n findAxisByName(name) {\n return this.getAxis(name);\n }\n\n findPaneByName(name) {\n const panes = this._plotArea.panes;\n\n for (let idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n }\n\n findPaneByIndex(idx) {\n const panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n }\n\n plotArea() {\n return new ChartPlotArea(this._plotArea);\n }\n\n toggleHighlight(show, filter) {\n const plotArea = this._plotArea;\n const firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n let points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n let seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n }\n\n togglePointsHighlight(show, points) {\n const highlight = this._highlight;\n for (let idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n }\n\n showTooltip(filter) {\n const shared = this._sharedTooltip();\n const { _tooltip: tooltip, _plotArea: plotArea } = this;\n let point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n const points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n }\n\n hideTooltip() {\n this._tooltip.hide();\n }\n\n _initSurface() {\n const surface = this.surface;\n const wrap = this._surfaceWrap();\n\n const chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceWrap() {\n return this.element;\n }\n\n _redraw() {\n const model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._setElementAccessibilityAttributes();\n\n this._model = model;\n this._plotArea = model._plotArea;\n this._legend = model._legend;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n }\n\n _setElementAccessibilityAttributes() {\n let titleOptions = this.options.title;\n let title = isString(titleOptions) ? titleOptions : (titleOptions.description || titleOptions.text);\n\n if (title) {\n this.element.setAttribute(\"aria-roledescription\", title);\n }\n }\n\n exportVisual(exportOptions) {\n let visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n const currentOptions = this.options;\n const options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n const model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n }\n\n _sharedTooltip() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n }\n\n _createPannable() {\n const options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n }\n\n _createZoomSelection() {\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n }\n\n _createMousewheelZoom() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n }\n\n _toggleDragZoomEvents() {\n const pannable = this.options.pannable;\n const zoomable = this.options.zoomable;\n const selection = (zoomable || {}).selection;\n const mousewheel = (zoomable || {}).mousewheel;\n const allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n const allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n const element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n }\n\n _toggleDomEvents(drag, zoom) {\n const domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n }\n\n _createTooltip() {\n const { options: { tooltip: tooltipOptions } } = this;\n let tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n applyDefaults(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n }\n\n applySeriesColors() {\n const options = this.options;\n const series = options.series;\n const colors = options.seriesColors || [];\n\n for (let i = 0; i < series.length; i++) {\n const currentSeries = series[i];\n const seriesColor = colors[i % colors.length];\n const defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n }\n\n _getModel() {\n const options = this.options;\n const plotArea = this._createPlotArea();\n const model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n const title = Title.buildTitle(options.title);\n const subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n const legend = new Legend(plotArea.options.legend, this.chartService);\n model.append(legend);\n model._legend = legend;\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n }\n\n _modelOptions() {\n const options = this.options;\n const size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n }\n\n _createPlotArea(skipSeries) {\n const options = this.options;\n\n const plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n }\n\n _setupSelection() {\n const { _plotArea: { axes } } = this;\n const selections = this._selections = [];\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n const range = axis.range();\n\n const selection = new Selection(this, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n }\n\n _selectStart(e) {\n return this.trigger(SELECT_START, e);\n }\n\n _select(e) {\n return this.trigger(SELECT, e);\n }\n\n _selectEnd(e) {\n return this.trigger(SELECT_END, e);\n }\n\n _initHandlers() {\n this._clickHandler = this._click.bind(this);\n this._keydownHandler = this._keydown.bind(this);\n this._focusHandler = this._focus.bind(this);\n this._blurHandler = this._blur.bind(this);\n this._mousedownHandler = this._mousedown.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._focusPoint(args.point);\n this._startDrilldown(args.point);\n } else if (name === LEGEND_ITEM_CLICK) {\n this._focusLegendItem(args);\n }\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n _attachEvents() {\n const element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSELEAVE ]: this._mouseleaveHandler,\n [ KEYDOWN ]: this._keydownHandler,\n [ MOUSEDOWN ]: this._mousedownHandler,\n [ FOCUS ]: this._focusHandler,\n [ BLUR]: this._blurHandler\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, { [ MOUSEMOVE ]: this._mousemove });\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n }\n\n _mouseleave(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n\n if (this._hasInactiveOpacity() && this._activeChartInstance) {\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._updateSeriesOpacity(null, true);\n }\n }\n\n _cancelDomEvents() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n }\n\n _gesturestart(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n }\n }\n\n _gestureend(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n }\n\n _gesturechange(e) {\n const mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n const previousGestureDistance = this._gestureDistance;\n let scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n const args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n const coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n const ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n }\n\n _mouseout(e) {\n if (e.element) {\n const element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n }\n\n _start(e) {\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n }\n\n _move(e) {\n let { _navState: state, _pannable: pannable } = this;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n const ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n const ranges = {};\n const axes = state.axes;\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n const axis = currentAxis.options.vertical ? e.y : e.x;\n const delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges;\n this.trigger(DRAG, {\n axisRanges: ranges,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n }\n\n _end(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n const pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n const ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n }\n\n _stopChartHandlers(e) {\n const selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (let idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n }\n\n _mousewheelZoomRate() {\n const zoomable = this.options.zoomable;\n const mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n }\n\n _mousewheel(e) {\n const delta = mousewheelDelta(e);\n const mousewheelZoom = this._mousewheelZoom;\n const coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n const args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this._clearFocusedElement();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(() => {\n this.trigger(ZOOM_END, args);\n this._zooming = false;\n if (this.surface) {\n this.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n let state = this._navState;\n if (!state) {\n const prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n const totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n const axes = this._navState.axes;\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const currentAxis = axes[i];\n const axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(() => {\n this._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n }\n\n _startNavigation(e, coords, chartEvent) {\n const plotArea = this._model._plotArea;\n const pane = plotArea.findPointPane(coords);\n const axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n const ranges = axisRanges(axes);\n\n const prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n }\n\n _endNavigation(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n }\n\n _getChartElement(e, match) {\n const element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n }\n\n _drawingChartElement(element, e, match) {\n let current = element;\n let chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n }\n\n _eventCoordinates(e) {\n const coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n }\n\n _elementPadding() {\n if (!this._padding) {\n const { paddingLeft, paddingTop } = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n }\n\n _toDocumentCoordinates(point) {\n const padding = this._elementPadding();\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n }\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n _toModelCoordinates(clientX, clientY) {\n const element = this.element;\n const offset = elementOffset(element);\n const padding = this._elementPadding();\n const inverseTransform = elementScale(element).invert();\n const point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n }\n\n _tap(e) {\n const drawingElement = this.surface.eventTarget(e);\n const element = this._drawingChartElement(drawingElement, e);\n const sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(() => {\n this.handlingTap = false;\n }, 0);\n }\n\n _click(e) {\n const element = this._getChartElement(e);\n this._propagateClick(element, e);\n }\n\n _propagateClick(element, e) {\n let current = element;\n while (current) {\n if (current.click) {\n current.click(this, e);\n }\n\n current = current.parent;\n }\n }\n\n _isLegendBeforeChart() {\n const { options: { legend: { position: legendPosition } }, _legend: legend } = this;\n\n return legend && legend.hasItems() && (legendPosition === TOP || legendPosition === LEFT);\n }\n\n _focus() {\n if (!this._preventInitialPointFocus) {\n if (this._isLegendBeforeChart()) {\n this._focusFirstLegendItem();\n } else {\n this._focusFirstPoint();\n }\n }\n\n this._preventInitialPointFocus = false;\n }\n\n _keydown(e) {\n const { _focusState: { legendInFocus }, _legend: legend } = this;\n\n if (e.key === TAB) {\n this._clearFocusedElement();\n const isLegendBeforeChart = this._isLegendBeforeChart();\n\n if (legendInFocus && isLegendBeforeChart !== e.shiftKey) {\n this._navigatePoints(e);\n } else if (!legendInFocus && isLegendBeforeChart === e.shiftKey && legend.hasItems()) {\n this._navigateLegend(e);\n }\n } else if (!legendInFocus) {\n this._navigatePoints(e);\n } else {\n this._navigateLegend(e);\n }\n }\n\n _navigatePoints(e) {\n const { _focusState: focusState, _plotArea: plotArea } = this;\n\n focusState.legendInFocus = false;\n\n if (!focusState.focusedElement) {\n this._focusFirstPoint();\n e.preventDefault();\n return;\n }\n\n const moveFocus = (point) => {\n focusState.focusedPoint = point;\n\n this._focusElement(focusState.focusedPoint);\n e.preventDefault();\n };\n\n switch (e.key) {\n case ARROW_RIGHT:\n moveFocus(plotArea.getPointToTheRight(focusState.focusedPoint));\n break;\n case ARROW_LEFT:\n moveFocus(plotArea.getPointToTheLeft(focusState.focusedPoint));\n break;\n case ARROW_DOWN:\n moveFocus(plotArea.getPointBelow(focusState.focusedPoint));\n break;\n case ARROW_UP:\n moveFocus(plotArea.getPointAbove(focusState.focusedPoint));\n break;\n default:\n break;\n }\n }\n\n _navigateLegend(e) {\n const { _focusState: focusState, _legend: legend, chartService: { rtl: rtl } } = this;\n\n focusState.legendInFocus = true;\n\n if (!focusState.focusedElement) {\n this._focusFirstLegendItem();\n e.preventDefault();\n return;\n }\n\n const itemsLength = legend.getItems().length;\n const moveFocus = (cycleFunc) => {\n focusState.focusedLegendItemIndex = cycleFunc(\n focusState.focusedLegendItemIndex,\n itemsLength\n );\n this._focusElement(this._getFocusedLegendItem());\n e.preventDefault();\n };\n\n switch (e.key) {\n case ARROW_UP:\n case ARROW_LEFT:\n moveFocus(rtl ? cycleUp : cycleDown);\n break;\n case ARROW_DOWN:\n case ARROW_RIGHT:\n moveFocus(rtl ? cycleDown : cycleUp);\n break;\n default:\n break;\n }\n }\n\n _focusFirstPoint() {\n const point = this._focusState.focusedPoint = this._plotArea.getFirstPoint();\n\n if (point) {\n this._focusElement(point);\n }\n }\n\n _hasFocus() {\n return this.element.ownerDocument.activeElement === this.element;\n }\n\n _mousedown() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n }\n }\n\n _focusChart() {\n if (!this._hasFocus()) {\n this._preventInitialPointFocus = true;\n this.element.focus();\n }\n }\n\n _focusPoint(point) {\n this._focusState.focusedPoint = point;\n\n this._focusChart();\n\n this._focusElement(point, true);\n }\n\n _focusFirstLegendItem() {\n const { _focusState: focusState } = this;\n\n focusState.focusedLegendItemIndex = 0;\n this._focusElement(this._getFocusedLegendItem());\n focusState.legendInFocus = true;\n }\n\n _focusLegendItem(args) {\n const { _focusState: focusState } = this;\n\n focusState.focusedLegendItemIndex = this._legend\n .getItems()\n .findIndex(x => x.options.series.index === args.seriesIndex\n && x.options.pointIndex === args.pointIndex);\n\n focusState.legendInFocus = true;\n\n this._focusChart();\n\n this._focusElement(this._getFocusedLegendItem(), true);\n }\n\n _getFocusedLegendItem() {\n const { _focusState: focusState, _legend: legend } = this;\n\n return legend.getItems()[focusState.focusedLegendItemIndex];\n }\n\n _focusElement(element, omitHighlight) {\n const { _focusState: focusState } = this;\n\n this._clearFocusedElement();\n\n if (!element) {\n return;\n }\n\n focusState.focusedElement = element;\n\n this._setElementActiveDescendant(element);\n\n if (!omitHighlight) {\n element.focusVisual();\n\n if (focusState.legendInFocus) {\n const options = element.options;\n\n this._showSeriesInactiveOpacity(options.series.index, options.pointIndex);\n } else {\n this._showInactiveOpacity(element);\n }\n }\n }\n\n _clearFocusedElement() {\n const { _focusState: focusState } = this;\n\n if (!focusState) {\n return;\n }\n\n if (focusState.focusedElement) {\n focusState.focusedElement.clearFocusFromVisual();\n this._clearElementActiveDescendant();\n }\n\n focusState.focusedElement = null;\n }\n\n _setElementActiveDescendant(element) {\n if (this.options.renderAs === \"canvas\") {\n this._pseudoFocusedElement = this._createPseudoFocusedElement(element);\n this.element.append(this._pseudoFocusedElement);\n }\n\n this.element.setAttribute(ARIA_ACTIVE_DESCENDANT, element._id);\n }\n\n _clearElementActiveDescendant() {\n if (this._pseudoFocusedElement) {\n this._pseudoFocusedElement.remove();\n this._pseudoFocusedElement = null;\n }\n\n this.element.removeAttribute(ARIA_ACTIVE_DESCENDANT);\n }\n\n _createPseudoFocusedElement(element) {\n const pseudoElement = document.createElement(\"div\");\n const accessibilityOptions = element.options.accessibility;\n\n pseudoElement.id = element._id;\n pseudoElement.setAttribute(\"aria-label\", element.getAriaLabelText());\n pseudoElement.setAttribute(\"role\", accessibilityOptions.role);\n pseudoElement.setAttribute(\"aria-roledescription\", accessibilityOptions.ariaRoleDescription);\n\n const checked = accessibilityOptions.ariaChecked;\n if (defined(checked)) {\n pseudoElement.setAttribute(\"aria-checked\", checked);\n }\n\n return pseudoElement;\n }\n\n _blur() {\n this._focusState.legendInFocus = false;\n this._clearFocusedElement();\n this._hideInactiveOpacity();\n }\n\n _startHover(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n let point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n const activePoint = this._activePoint;\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n this._showInactiveOpacity(point);\n }\n }\n\n return point;\n }\n\n _displayTooltip(point) {\n const tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n }\n\n _displayInactiveOpacity(activePoint, multipleSeries, highlightPoints) {\n const chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n let inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n }\n\n _getInactivePoints(activePoint, chartInstance) {\n let allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(point => point !== activePoint);\n }\n\n _getAllPointsOfType(container, type) {\n let points = [];\n\n for (let i = 0; i < container.children.length; i++) {\n const element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n }\n\n _updateHoveredPoint(point, e) {\n const hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n }\n\n _updateDrilldownPoint(point) {\n if (!point || !point.series) {\n return;\n }\n\n const { fields } = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n }\n\n _resetDrilldownPoint() {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n }\n\n _startDrilldown(point) {\n if (!point || !point.series) {\n return;\n }\n\n const series = point.series;\n const { fields } = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n const value = fields.drilldown;\n if (value) {\n const args = { series, point, value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n }\n\n _updateSeriesOpacity(point, resetOpacity) {\n const plotArea = this._plotArea;\n const length = plotArea.series.length;\n\n for (let i = 0; i < length; i++) {\n const currSeries = plotArea.series[i];\n const defaultOpacity = this._getDefaultOpacityForSeries(currSeries);\n const inactiveOpacity = this._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n }\n\n _applySeriesOpacity(elements, activeSeries, reset, series) {\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const currSeries = element.series || series;\n const shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n const opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n }\n\n _chartInstanceFromPoint(point) {\n let chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n }\n\n _showInactiveOpacity(point) {\n const multipleSeries = this._plotArea.series.length > 1;\n const hasInactiveOpacity = this._hasInactiveOpacity();\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n\n _hideInactiveOpacity(point) {\n const multipleSeries = this._plotArea.series.length > 1;\n const hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n }\n\n _hasInactiveOpacity() {\n let hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n let hasInactiveOpacity = this.options.series.filter(s => s.highlight.inactiveOpacity !== undefined ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n }\n\n _getInactiveOpacityForSeries(series) {\n let defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n let seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _getDefaultOpacityForSeries(series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n }\n\n _mouseover(e) {\n const point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n }\n\n _mouseMoveTracking(e) {\n const { options, _tooltip: tooltip, _highlight: highlight, _activePoint: point } = this;\n const coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n const seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n const tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n }\n\n _mousemove(e) {\n const coords = this._eventCoordinates(e);\n const plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n const overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n }\n\n _trackCrosshairs(coords) {\n const crosshairs = this._plotArea.crosshairs;\n\n for (let i = 0; i < crosshairs.length; i++) {\n const current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n }\n\n _trackSharedTooltip(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n const { options: { tooltip: tooltipOptions }, _plotArea: plotArea, _plotArea: { categoryAxis }, _tooltip: tooltip, _highlight: highlight } = this;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n const index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n const points = plotArea.pointsByCategoryIndex(index);\n const pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n const hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n }\n\n hideElements(options) {\n const plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n }\n\n _unsetActivePoint(options) {\n const { _tooltip: tooltip, _highlight: highlight } = this;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n }\n\n _deferRedraw() {\n this._redraw();\n }\n\n _clearRedrawTimeout() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n }\n\n bindCategories() {\n const options = this.options;\n const definitions = [].concat(options.categoryAxis);\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n }\n\n bindCategoryAxisFromSeries(axis, axisIx) {\n const uniqueCategories = new Set();\n const seriesOnAxis = this.options.series.filter(series => series.categoryAxis === axis.name || (!series.categoryAxis && axisIx === 0));\n const hasCategoryBinding = seriesOnAxis.some(series => Boolean(series.categoryField));\n const seriesWithData = seriesOnAxis.filter(series => series.data && series.data.length > 0);\n const categorySamples = seriesWithData.map(series => SeriesBinder.current.bindPoint(series, 0).fields.category);\n const dateAxis = categorySamples.reduce((result, firstCategory) => result || isDateAxis(axis, firstCategory), false);\n const seriesWithBinding = seriesWithData.filter((series, seriesIx) => series.categoryField || defined(categorySamples[seriesIx]));\n\n seriesWithBinding.forEach((series) => series.data.forEach((row, index) => {\n let category = SeriesBinder.current.bindPoint(series, index).fields.category;\n if (dateAxis) {\n const date = parseDateCategory(category, row, this.chartService.intl);\n category = date ? date.getTime() : undefined;\n }\n\n uniqueCategories.add(category);\n }));\n\n if (uniqueCategories.size > 0) {\n let categories = Array.from(uniqueCategories.values());\n if (dateAxis) {\n categories = categories.sort().map(time => time && new Date(time));\n }\n\n axis.categories = categories;\n } else if (hasCategoryBinding) {\n axis.categories = [];\n }\n }\n\n _isBindable(series) {\n const valueFields = SeriesBinder.current.valueFields(series);\n let result = true;\n\n for (let i = 0; i < valueFields.length; i++) {\n let field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n }\n\n _noTransitionsRedraw() {\n const options = this.options;\n let transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n }\n\n _legendItemHover(seriesIndex, pointIndex) {\n this._showSeriesInactiveOpacity(seriesIndex, pointIndex);\n }\n\n _showSeriesInactiveOpacity(seriesIndex, pointIndex) {\n const { _plotArea: plotArea, _highlight: highlight } = this;\n const currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n let items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n const multipleSeries = plotArea.series.length > 1;\n const point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n }\n\n _shouldAttachMouseMove() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n }\n\n updateMouseMoveHandler() {\n unbindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, {\n [ MOUSEMOVE ]: this._mousemove\n });\n }\n }\n\n applyOptions(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n }\n\n setOptions(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n }\n\n setDirection(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n }\n\n setIntlService(intl) {\n this.chartService.intl = intl;\n }\n\n noTransitionsRedraw() {\n this._noTransitionsRedraw();\n }\n\n destroy() {\n this._destroyed = true;\n\n unbindEvents(this.element, {\n [ CONTEXTMENU ]: this._clickHandler,\n [ MOUSEWHEEL ]: this._mousewheelHandler,\n [ MOUSEMOVE ]: this._mousemove,\n [ MOUSELEAVE ]: this._mouseleaveHandler,\n [ KEYDOWN ]: this._keydownHandler,\n [ FOCUS ]: this._focusHandler,\n [ BLUR]: this._blurHandler\n });\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, {\n [ MOUSEMOVE ]: this._mouseMoveTrackHandler\n });\n }\n\n this._focusState = null;\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n }\n\n _destroySurface() {\n const surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n }\n\n _destroySelections() {\n const selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n }\n\n _destroyView() {\n const model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._clearFocusedElement();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n}\n\nfunction resolveAxisAliases(options) {\n const aliases = AXIS_NAMES;\n\n for (let idx = 0; idx < aliases.length; idx++) {\n const alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (let idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n const themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n let axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n const axisColor = (axisOptions || {}).color || axisDefaults.color;\n const result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (let idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n const series = options.series;\n const seriesLength = series.length;\n const seriesDefaults = options.seriesDefaults;\n const commonDefaults = deepExtend({}, options.seriesDefaults);\n const themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n const commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (let i = 0; i < seriesLength; i++) {\n const seriesType = series[i].type || options.seriesDefaults.type;\n\n const baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n const ranges = {};\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nconst DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (let field in options) {\n if (!inArray(field, DATA_FIELDS) && hasOwnProperty(options, field)) {\n const fieldValue = options[field];\n const originalValue = originalOptions[field];\n if (defined(originalValue)) {\n const nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (let idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {},\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n color: BLACK,\n width: 2\n }\n }\n }\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n },\n accessibility: {\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n zIndex: 200\n }\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nconst TOP_OFFSET = -2;\n\nclass SharedTooltip extends ChartSharedTooltip {\n _slotAnchor(coords, slot) {\n const axis = this.plotArea.categoryAxis;\n const vertical = axis.options.vertical;\n const align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n let point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n }\n\n _defaultAnchor(point, slot) {\n return this._slotAnchor({}, slot);\n }\n}\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport { addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nconst DEAULT_BAR_WIDTH = 150;\nconst DEAULT_BULLET_WIDTH = 150;\nconst NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n const state = [];\n for (let idx = 0; idx < children.length; idx++) {\n const child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (let idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nclass Sparkline extends Chart {\n _setElementClass(element) {\n addClass(element, 'k-sparkline');\n }\n\n _initElement(element) {\n super._initElement(element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n }\n\n _resize() {\n const element = this.element;\n const state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n super._resize();\n }\n\n _modelOptions() {\n const chartOptions = this.options;\n const stage = this._surfaceWrap();\n const displayState = hide(stage.childNodes);\n\n const space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n const options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n }\n\n _surfaceWrap() {\n if (!this.stage) {\n const stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n }\n\n _createPlotArea(skipSeries) {\n const plotArea = super._createPlotArea(skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n }\n\n _calculateWidth(plotArea) {\n const options = this.options;\n const margin = getSpacing(options.chartArea.margin);\n const charts = plotArea.charts;\n const stage = this._surfaceWrap();\n let total = 0;\n\n\n for (let i = 0; i < charts.length; i++) {\n const currentChart = charts[i];\n const firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n const categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n const pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n let size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n }\n\n _createSharedTooltip(options) {\n return new SharedTooltip(this._plotArea, options);\n }\n\n static normalizeOptions(userOptions) {\n let options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n }\n}\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nclass FadeOutAnimation extends draw.Animation {\n\n setup() {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n }\n\n step(pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n }\n\n abort() {\n super.abort();\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n }\n\n cancel() {\n super.abort();\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n }\n}\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n const div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nclass NavigatorHint extends Class {\n constructor(container, chartService, options) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n const padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n createElements() {\n const element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n const tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n const scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n }\n\n show(from, to, bbox) {\n const { element, options, scroll, tooltip } = this;\n const middle = toDate(toTime(from) + toTime(to - from) / 2);\n const scrollWidth = bbox.width() * 0.4;\n const minPos = bbox.center().x - scrollWidth;\n const maxPos = bbox.center().x;\n const posRange = maxPos - minPos;\n const range = options.max - options.min;\n const scale = posRange / range;\n const offset = middle - options.min;\n let text = this.chartService.intl.format(options.format, from, to);\n const template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n const tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n }\n\n clearHideTimeout() {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n }\n\n hide() {\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(() => {\n this._visible = false;\n this._hideAnimation = new FadeOutAnimation(this.element);\n this._hideAnimation.setup();\n this._hideAnimation.play();\n }, this.options.hideDelay);\n }\n\n destroy() {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n }\n}\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","const NAVIGATOR_PANE = \"_navigator\";\nconst NAVIGATOR_AXIS = NAVIGATOR_PANE;\nconst DEFAULT_PANE = \"_default\";\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE };\n","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE, DEFAULT_PANE } from './constants';\n\nconst ZOOM_ACCELERATION = 3;\n\nclass Navigator extends Class {\n constructor(chart) {\n super();\n\n this.chart = chart;\n const options = this.options = deepExtend({}, this.options, chart.options.navigator);\n const select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, {\n [DRAG]: '_drag',\n [DRAG_END]: '_dragEnd',\n [ZOOM]: '_zoom',\n [ZOOM_END]: '_zoomEnd'\n });\n chart.addObserver(this.chartObserver);\n }\n\n parseDate(value) {\n return parseDate(this.chart.chartService.intl, value);\n }\n\n clean() {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n }\n\n destroy() {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n }\n\n redraw() {\n this._redrawSelf();\n this.initSelection();\n }\n\n initSelection() {\n const { chart, options } = this;\n const axis = this.mainAxis();\n const { min, max } = axis.roundedRange();\n const { from, to, mousewheel } = options.select;\n const axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n }\n\n setRange() {\n const plotArea = this.chart._createPlotArea(true);\n const axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n const { min, max } = axis.roundedRange();\n\n const select = this.options.select || {};\n let from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n let to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n }\n\n _redrawSelf(silent) {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n }\n\n redrawSlaves() {\n const chart = this.chart;\n const plotArea = chart._plotArea;\n const slavePanes = plotArea.panes.filter(pane => pane.options.name !== NAVIGATOR_PANE);\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n }\n\n _drag(e) {\n const { chart, selection } = this;\n const coords = chart._eventCoordinates(e.originalEvent);\n const navigatorAxis = this.mainAxis();\n const naviRange = navigatorAxis.roundedRange();\n const inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n const axis = chart._plotArea.categoryAxis;\n const range = e.axisRanges[axis.options.name];\n const select = this.options.select;\n let duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n const from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n const to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n }\n\n _dragEnd() {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n }\n\n readSelection() {\n const { selection: { options: { from, to } }, options: { select } } = this;\n\n select.from = from;\n select.to = to;\n }\n\n filterAxes() {\n const { options: { select = { } }, chart } = this;\n const allAxes = chart.options.categoryAxis;\n const { from, to } = select;\n\n for (let idx = 0; idx < allAxes.length; idx++) {\n const axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n }\n\n filter() {\n const { chart, options: { select } } = this;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n const mainAxis = this.mainAxis();\n const args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n const axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n }\n\n _zoom(e) {\n const { chart: { _plotArea: { categoryAxis: axis } }, selection, options: { select, liveDrag } } = this;\n const mainAxis = this.mainAxis();\n let delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n const fromIx = mainAxis.categoryIndex(selection.options.from);\n const toIx = mainAxis.categoryIndex(selection.options.to);\n const coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n }\n\n _zoomEnd(e) {\n this._dragEnd(e);\n }\n\n showHint(from, to) {\n const plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n }\n\n _selectStart(e) {\n return this.chart._selectStart(e);\n }\n\n _select(e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n }\n\n _selectEnd(e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n }\n\n mainAxis() {\n const plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n }\n\n select(from, to) {\n const select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n }\n\n static setup(options = {}, themeOptions = {}) {\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n const naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n const panes = options.panes = [].concat(options.panes);\n const paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n if (options.navigator.position !== 'top') {\n panes.push(paneOptions);\n } else {\n panes.unshift(paneOptions);\n }\n\n panes.forEach(pane => {\n pane.name = pane.name || DEFAULT_PANE;\n });\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n }\n\n static attachAxes(options, naviOptions) {\n const series = naviOptions.series || [];\n const categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n const valueAxes = options.valueAxis = [].concat(options.valueAxis);\n const allAxes = categoryAxes.concat(valueAxes);\n allAxes.forEach(axis => {\n axis.pane = axis.pane || DEFAULT_PANE;\n });\n\n const equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n const justifyAxis = equallySpacedSeries.length === 0;\n\n const base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n const user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n }\n\n static attachSeries(options, naviOptions, themeOptions) {\n const series = options.series = options.series || [];\n const navigatorSeries = [].concat(naviOptions.series || []);\n const seriesColors = themeOptions.seriesColors;\n const defaults = naviOptions.seriesDefaults;\n\n for (let idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n }\n}\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nconst AUTO_CATEGORY_WIDTH = 28;\n\nclass StockChart extends Chart {\n\n applyDefaults(options, themeOptions) {\n const width = elementSize(this.element).width || DEFAULT_WIDTH;\n let theme = themeOptions;\n\n const stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n super.applyDefaults(options, theme);\n }\n\n _setElementClass(element) {\n addClass(element, 'k-chart k-stockchart');\n }\n\n setOptions(options) {\n this.destroyNavigator();\n super.setOptions(options);\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n }\n\n _resize() {\n this.noTransitionsRedraw();\n }\n\n _redraw() {\n const navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n }\n\n _dirty() {\n const options = this.options;\n const series = [].concat(options.series, options.navigator.series);\n const seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n const dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n }\n\n _fullRedraw() {\n let navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n super._redraw();\n\n navigator.initSelection();\n }\n\n _trackSharedTooltip(coords) {\n const plotArea = this._plotArea;\n const pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n super._trackSharedTooltip(coords);\n }\n }\n\n bindCategories() {\n super.bindCategories();\n this.copyNavigatorCategories();\n }\n\n copyNavigatorCategories() {\n const definitions = [].concat(this.options.categoryAxis);\n let categories;\n\n for (let axisIx = 0; axisIx < definitions.length; axisIx++) {\n const axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n }\n\n destroyNavigator() {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n }\n\n destroy() {\n this.destroyNavigator();\n super.destroy();\n }\n\n _stopChartHandlers(e) {\n const coords = this._eventCoordinates(e);\n const pane = this._plotArea.paneByPoint(coords);\n\n return super._stopChartHandlers(e) || (pane && pane.options.name === NAVIGATOR_PANE);\n }\n\n _toggleDragZoomEvents() {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n }\n}\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: false\n },\n highlight: {\n visible: false\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;\n","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Arc extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Arc\";\n }\n\n constructor(geometry = new GeometryArc(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n rawBBox() {\n return this.geometry().bbox();\n }\n\n toPath() {\n const path = new Path();\n const curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Arc;\n","const ANGULAR_SPEED = 150;\nconst LINEAR_SPEED = 250;\nconst ARROW = \"arrow\";\nconst ARROW_POINTER = \"arrowPointer\";\nconst BAR_POINTER = \"barPointer\";\nconst DEFAULT_HEIGHT = 200;\nconst DEFAULT_LINE_WIDTH = 0.5;\nconst DEFAULT_WIDTH = 200;\nconst DEGREE = Math.PI / 180;\nconst INSIDE = \"inside\";\nconst LINEAR = \"linear\";\nconst OUTSIDE = \"outside\";\nconst RADIAL_POINTER = \"radialPointer\";\nconst RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n const origin = bbox.getOrigin();\n const size = bbox.getSize();\n const spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nconst { Group, Path, Text } = drawing;\n\nexport default function buildLabelElement(label, options) {\n const labelBox = label.box;\n const textBox = label.children[0].box;\n const border = options.border || {};\n const background = options.background || \"\";\n\n const wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n const text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n const styleGeometry = pad(text.bbox().clone(), options.padding);\n\n const styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n const elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n const from = defined(range.from) ? range.from : MIN_VALUE;\n const to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n const spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nconst DEFAULT_MARGIN = 5;\nconst { Path, Surface } = drawing;\n\nclass Gauge extends Class {\n\n constructor(element, userOptions, theme, context = {}) {\n super();\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n destroy() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n }\n\n value(pointerValue) {\n const pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n }\n\n _draw() {\n const surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n }\n\n exportVisual() {\n return this._visuals;\n }\n\n allValues(values) {\n const pointers = this.pointers;\n const allValues = [];\n\n if (arguments.length === 0) {\n for (let i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (let i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n\n this._setValueOptions(values);\n }\n\n _setValueOptions(values) {\n const pointers = [].concat(this.options.pointer);\n const arrayValues = [].concat(values);\n\n for (let i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n }\n\n resize() {\n this.noTransitionsRedraw();\n }\n\n noTransitionsRedraw() {\n const transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n }\n\n redraw() {\n const size = this._surfaceSize();\n const wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n const bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n }\n\n setOptions(options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n }\n\n setDirection(rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n }\n\n setIntlService(intl) {\n this.contextService.intl = intl;\n }\n\n _initTheme(theme) {\n let currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n const options = this.options;\n const pointer = options.pointer;\n\n if (isArray(pointer)) {\n const pointers = [];\n for (let i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n }\n\n _createGaugeArea() {\n const options = this.options.gaugeArea;\n const size = this.surface.size();\n const border = options.border || {};\n let areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n const gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n }\n\n _initSurface() {\n const { options, surface } = this;\n const element = this._surfaceElement();\n const size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n }\n\n _surfaceSize() {\n const options = this.options;\n const size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n }\n\n _surfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n }\n\n getSize() {\n return this._getSize();\n }\n\n _getSize() {\n const element = this.element;\n const defaultSize = this._defaultSize();\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n }\n\n _defaultSize() {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n }\n\n _toggleTransitions(value) {\n this.options.transitions = value;\n for (let i = 0; i < this.pointers.length; i++) {\n this.pointers[i].options.animation.transitions = value;\n }\n }\n}\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nconst { Path, Group } = drawing;\nconst Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n const { position, tickX, tickY } = tickRenderOptions;\n let start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n const tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n const count = tickPositions.length;\n\n if (tickOptions.visible) {\n const { mirror, lineBox } = tickRenderOptions;\n for (let i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nclass LinearScale extends NumericAxis {\n constructor(options, service) {\n let scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n super(0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n initUserOptions(options) {\n let scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render() {\n const elements = this.elements = new Group();\n const labels = this.renderLabels();\n const scaleLine = this.renderLine();\n const scaleTicks = this.renderTicks();\n const ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n }\n\n renderRanges() {\n const options = this.options;\n const { min, max, vertical, labels: { mirror } } = options;\n const ranges = options.ranges || [];\n const elements = new Group();\n const count = ranges.length;\n const rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const slot = this.getSlot(range.from, range.to);\n const slotX = vertical ? this.lineBox() : slot;\n const slotY = vertical ? slot : this.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n }\n\n renderLabels() {\n const { labels, options } = this;\n const elements = new Group();\n\n for (let i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n }\n\n renderLine() {\n const line = this.options.line;\n const lineBox = this.lineBox();\n const elements = new Group();\n\n if (line.width > 0 && line.visible) {\n const linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n }\n\n renderTicks() {\n const ticks = new Group();\n const options = this.options;\n const majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n const tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n }\n}\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nclass Pointer extends Class {\n constructor(scale, userOptions) {\n super();\n\n const { min, max } = scale.options;\n const options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n value(newValue) {\n const options = this.options;\n const value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n const { min, max } = this.scale.options;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n }\n}\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nclass LinearPointer extends Pointer {\n constructor(scale, options) {\n super(scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n reflow() {\n const { options, scale } = this;\n const { mirror, vertical } = scale.options;\n const scaleLine = scale.lineBox();\n const trackSize = options.track.size || options.size;\n const pointerHalfSize = options.size / 2;\n const margin = getSpacing(options.margin);\n let space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n let pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n }\n\n getElementOptions() {\n const options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n }\n\n _margin() {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const margin = getSpacing(options.margin);\n\n const space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n }\n}\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass ArrowLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const { margin, from, to, vertical } = options;\n const axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n const fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n const toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n }\n\n step(pos) {\n const translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n const translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n }\n}\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nconst Point = geo.Point;\nconst Path = drawing.Path;\n\nclass ArrowLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n pointerShape() {\n const { scale, options: { size } } = this;\n const halfSize = size / 2;\n const sign = (scale.options.mirror ? -1 : 1);\n let shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n }\n\n repaint() {\n const { scale, options } = this;\n const animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const { scale, options } = this;\n const elementOptions = this.getElementOptions();\n const shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n const elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n const slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n }\n}\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nclass BarLinearPointerAnimation extends drawing.Animation {\n\n setup() {\n const options = this.options;\n const axis = this.axis = options.vertical ? Y : X;\n const to = this.to = options.newPoints[0][axis];\n const from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n }\n\n step(pos) {\n const value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n }\n\n _set(value) {\n const setter = \"set\" + this.axis.toUpperCase();\n const points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n }\n}\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nconst { Group, Path } = drawing;\n\nclass BarLinearPointer extends LinearPointer {\n constructor(scale, options) {\n super(scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n pointerShape(value) {\n const { scale, options } = this;\n const { mirror, vertical } = scale.options;\n const dir = mirror === vertical ? -1 : 1;\n const size = options.size * dir;\n const minSlot = scale.getSlot(scale.options.min);\n const slot = scale.getSlot(value);\n const axis = vertical ? Y : X;\n const sizeAxis = vertical ? X : Y;\n const margin = this._margin() * dir;\n\n const p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n const p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n const p3 = p2.clone();\n const p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n }\n\n repaint() {\n const { scale, options } = this;\n const shape = this.pointerShape(options.value);\n const pointerPath = this.pointerPath;\n const oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n const animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n }\n\n render() {\n const group = new Group();\n const elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n const pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n }\n\n renderTrack() {\n const trackOptions = this.options.track;\n const border = trackOptions.border || {};\n const trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n }\n}\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nconst DEFAULT_MIN_WIDTH = 60;\nconst DEFAULT_MIN_HEIGHT = 60;\n\nconst Group = drawing.Group;\n\nclass LinearGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n const bboxX = bbox.origin.x;\n const bboxY = bbox.origin.y;\n\n const box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n }\n\n _buildVisual() {\n const visuals = new Group();\n const scaleElements = this.scale.render();\n const pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n }\n\n _createModel() {\n const options = this.options;\n const scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n let pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (let i = 0; i < pointers.length; i++) {\n const currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n const pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this.pointers.push(new pointerType(scale, currentOptions));\n }\n }\n\n _defaultSize() {\n const vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n }\n\n _getBox(box) {\n const { scale, pointers } = this;\n const boxCenter = box.center();\n let plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (let i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n let size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n }\n\n _alignElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box;\n const box = pointers[0].box.clone().wrap(scale.box);\n const plotAreaBox = this.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n let diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n\n _shrinkScaleWidth(bbox) {\n const { scale } = this;\n if (!scale.options.vertical) {\n const overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n }\n\n _shrinkElements() {\n const { scale, pointers } = this;\n const scaleBox = scale.box.clone();\n const pos = scale.options.vertical ? \"y\" : \"x\";\n const pointerBox = pointers[0].box;\n\n for (let i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.bbox);\n }\n }\n}\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nconst GEO_ARC_ADJUST_ANGLE = 180;\n\nconst { Arc, Path, Group } = drawing;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n const ticks = new Group();\n const center = arc.center;\n const radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (let i = 0; i < tickAngles.length; i++) {\n const tickStart = arc.pointAt(tickAngles[i]);\n const tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nclass RadialScale extends NumericAxis {\n constructor(options, service) {\n super(0, 1, options, service);\n }\n\n initUserOptions(options) {\n const scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n }\n\n initFields() {\n }\n\n render(center, radius) {\n const arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n }\n\n reflow(bbox) {\n const center = bbox.center();\n const radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n }\n\n slotAngle(value) {\n const { min, max, reverse, startAngle, endAngle } = this.options;\n const angle = endAngle - startAngle;\n let result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n }\n\n hasRanges() {\n const ranges = this.options.ranges;\n\n return ranges && ranges.length;\n }\n\n ticksSize() {\n const { majorTicks, minorTicks } = this.options;\n let size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n }\n\n labelsCount() {\n let count = super.labelsCount();\n const options = this.options;\n const angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n }\n\n renderLabels() {\n const options = this.options;\n const arc = this.arc.clone();\n let radius = arc.getRadiusX();\n const tickAngles = this.tickAngles(arc, options.majorUnit);\n const rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n const labelsGroup = new Group();\n\n let rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n const labelsOptions = options.labels;\n const isInside = labelsOptions.position === INSIDE;\n const hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n const labels = this.labels;\n const count = labels.length;\n const padding = getSpacing(labelsOptions.padding);\n const paddingWidth = (padding.left + padding.right) / 2;\n const paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (let i = 0; i < count; i++) {\n const label = labels[i];\n const halfWidth = label.box.width() / 2;\n const halfHeight = label.box.height() / 2;\n const angle = tickAngles[i];\n const labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n const lp = arc.pointAt(angle);\n const cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n const cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n const labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n let labelElement;\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this.labelElements.children[i];\n const prevLabelPos = labelElement.bbox().origin;\n\n const labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this.bbox = geo.Rect.union(this.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n }\n\n repositionRanges() {\n const ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n const { rangeDistance, rangeSize } = this.options;\n let rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n const newRadius = rangeRadius + (rangeSize / 2);\n\n for (let i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n }\n\n renderRanges() {\n const segments = this.rangeSegments();\n const segmentsCount = segments.length;\n const result = new Group();\n\n if (segmentsCount) {\n const { rangeSize, reverse, rangeDistance } = this.options;\n const rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (let i = 0; i < segmentsCount; i++) {\n const segment = segments[i];\n const from = this.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n const to = this.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n }\n\n createRange(startAngle, endAngle, rangeRadius, options) {\n const rangeSize = this.options.rangeSize;\n const rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n }\n\n rangeSegments() {\n const options = this.options;\n const ranges = options.ranges || [];\n const count = ranges.length;\n const segments = [];\n\n if (count) {\n const { min, max, rangePlaceholderColor: defaultColor } = options;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (let i = 0; i < count; i++) {\n const range = getRange(ranges[i], min, max);\n const segmentsCount = segments.length;\n\n for (let j = 0; j < segmentsCount; j++) {\n const segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n }\n\n getRangeRadius() {\n const { arc, options } = this;\n const { rangeSize, rangeDistance, majorTicks: { size: majorTickSize } } = options;\n let radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n }\n\n renderArc(center, radius) {\n const options = this.options;\n\n const arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n }\n\n renderTicks() {\n const { arc, options } = this;\n const tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n const allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n const majorTickSize = options.majorTicks.size;\n const minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n const radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n }\n\n normalizeTickAngles(angles) {\n const options = this.options;\n const skip = options.majorUnit / options.minorUnit;\n\n for (let i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n }\n\n tickAngles(ring, stepValue) {\n const options = this.options;\n const reverse = options.reverse;\n const range = options.max - options.min;\n const angle = ring.endAngle - ring.startAngle;\n let tickCount = range / stepValue;\n let pos = ring.startAngle;\n let step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n const positions = [];\n for (let i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n }\n\n radius(value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n }\n\n repositionTicks(ticks, tickAngles, minor) {\n const diff = minor ? (this._tickDifference || 0) : 0;\n let tickArc = this.arc;\n const radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (let i = 0; i < ticks.length; i++) {\n const newPoint = tickArc.pointAt(tickAngles[i]);\n const segments = ticks[i].segments;\n const xDiff = newPoint.x - segments[0].anchor().x;\n const yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n }\n}\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nclass RadialPointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n step(pos) {\n const options = this.options;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n }\n}\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nconst CAP_SIZE = 0.05;\nconst { Circle, Group, Path } = drawing;\n\nclass RadialPointer extends Pointer {\n\n setAngle(angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n }\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n }\n\n render() {\n const { scale, options } = this;\n const elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n }\n\n reflow(arc) {\n const center = this.center = arc.center;\n const length = limitValue(this.options.length || 1, 0.1, 1.5);\n const radius = this.radius = arc.getRadiusX() * length;\n const capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n }\n\n _renderNeedle() {\n const minorTickSize = this.scale.options.minorTicks.size;\n const center = this.center;\n const needleColor = this.options.color;\n\n const needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n }\n\n _renderCap() {\n const options = this.options;\n const capColor = options.cap.color || options.color;\n const circle = new geo.Circle(this.center, this.capSize);\n\n const cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n }\n}\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nconst Group = drawing.Group;\n\nclass RadialGauge extends Gauge {\n\n reflow(bbox) {\n const pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this.scale.arc);\n this._initialPlotArea = geo.Rect.union(this._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n }\n\n _buildVisual(gaugeArea, pointers, scale) {\n const visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n }\n\n _buildPointers(pointers) {\n for (let i = 0; i < pointers.length; i++) {\n const current = pointers[i];\n current.render();\n this._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n }\n\n fitScale(bbox) {\n const arc = this.scale.arc;\n const plotAreaBox = this._initialPlotArea;\n const step = Math.abs(this.getDiff(plotAreaBox, bbox));\n let min = round(step, COORD_PRECISION);\n let max = round(-step, COORD_PRECISION);\n let minDiff, midDiff, maxDiff, mid, oldDiff;\n let staleFlag = 0;\n let i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n }\n\n getPlotBox(step, bbox, arc) {\n const scale = this.scale;\n const pointers = this.pointers;\n const radius = arc.getRadiusX();\n const scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this.plotBbox = geo.Rect.union(this.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n }\n\n getDiff(plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n }\n\n alignScale(bbox) {\n const plotBoxCenter = this.plotBbox.center();\n const boxCenter = bbox.center();\n const paddingX = plotBoxCenter.x - boxCenter.x;\n const paddingY = plotBoxCenter.y - boxCenter.y;\n const { scale, pointers } = this;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (let i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n }\n\n _createModel() {\n const options = this.options;\n const pointers = options.pointer;\n const scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n const pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (let i = 0; i < pointersArr.length; i++) {\n const current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers.push(current);\n }\n }\n}\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nclass ArcScale extends RadialScale {\n\n rangeSegments() {\n const { min, max, rangePlaceholderColor, rangeLineCap } = this.options;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n }\n\n hasRanges() {\n return true;\n }\n\n placeholderRangeAngle(angle) {\n const geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n }\n\n addRange(from, to, options) {\n const reverse = this.options.reverse;\n\n const startAngle = this.slotAngle(reverse ? to : from);\n const endAngle = this.slotAngle(reverse ? from : to);\n\n const range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n }\n}\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nconst MAX_DURATION = 800;\n\nclass RangePointerAnimation extends drawing.Animation {\n constructor(element, options) {\n super(element, options);\n\n const animationOptions = this.options;\n const duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n const startColor = element.elements.options.get(\"stroke.color\");\n const color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n step(pos) {\n const { options, startColor, color } = this;\n const angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n const r = round(interpolateValue(startColor.r, color.r, pos));\n const g = round(interpolateValue(startColor.g, color.g, pos));\n const b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n }\n}\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nclass RangePointer extends Pointer {\n\n repaint() {\n const { scale, options } = this;\n const oldAngle = scale.slotAngle(options._oldValue);\n const newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n }\n\n angle(value) {\n const geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n }\n\n stroke(value) {\n this.elements.stroke(value);\n }\n\n render() {\n if (this.elements) {\n return;\n }\n\n const { scale, options } = this;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n }\n\n currentColor() {\n const { min, max } = this.scale.options;\n const { colors, color, value } = this.options;\n const currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (let idx = 0; idx < colors.length; idx++) {\n const { color: rangeColor, from = min, to = max } = colors[idx];\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n }\n\n reflow() {\n this.render();\n\n this.bbox = this.elements.bbox();\n }\n}\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nconst DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport class Encoding extends Class {\n constructor(options) {\n super();\n this.setOptions(options);\n this.initProperties();\n }\n\n initProperties() { }\n\n setOptions(options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n }\n\n encode(value, width, height) {\n const convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n }\n\n initValue() { }\n\n addQuietZone() {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n }\n\n addData() { }\n\n invalidCharacterError(character) {\n throw new Error(`Character \"${character}\" is not valid for symbology ${this.name}.`);\n }\n}\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nconst extend = Object.assign;\n\nexport class Code11 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addCheckSum() {\n const value = this.value;\n let length = value.length;\n const cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n let kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n }\n\n getWeightedSum(value, length, total) {\n let weightedSum = 0;\n\n for (let i = 0; i < value.length; i++) {\n weightedSum += this.weightedValue(this.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n }\n\n weightedValue(value, length, index, total) {\n const weight = (length - index) % total || total;\n return weight * value;\n }\n\n getValue(character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n }\n\n addCharacter(character) {\n const value = this.getValue(character);\n const pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n }\n}\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Code39Base extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n }\n\n addData() {\n const value = this.value;\n\n this.addStart();\n\n for (let idx = 0; idx < value.length; idx++) {\n this.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n }\n\n addCharacter(character) {\n const characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n }\n\n addBase() { }\n}\n\nexport class Code39 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n }\n\n initValue(value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n }\n\n prepareValues() {\n const minBaseUnit = this.minBaseUnitLength;\n const minRatio = this.minRatio;\n const minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n let baseUnit;\n let ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code39 encoding: the current height is ${this.height}px and the minimum height is ${minHeight}px.`);\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n let minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error(`Insufficient width for Code39 encoding: the current width is ${this.width}px and the minimum width for value \"${this.value}\" is ${minWidth}px.`);\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n }\n\n getBaseUnit(ratio) {\n return this.width / this.getBaseWidth(ratio);\n }\n\n getBaseWidth(ratio) {\n const characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n }\n\n addStart() {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n }\n\n addBase(character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n }\n\n addStop() {\n this.addPattern(this.characterMap.START.pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.patternString += this.patternMappings[pattern.charAt(i)];\n }\n }\n\n addCharacterGap() {\n this.patternString += this.gapWidth + this.splitCharacter;\n }\n}\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport const Code39ExtendedBase = {\n addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended(code) {\n let patterns;\n\n for (let i = 0; i < this.extendedMappings.length; i++) {\n patterns = this.extendedMappings[i].call(this, code);\n\n if (patterns) {\n for (let patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n const pattern = patterns[patternIndex];\n this.addBase(pattern);\n }\n\n this.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n let result;\n let dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (let i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this.characterMap[this.shiftCharacters[3]]);\n result.push(this.characterMap[this.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport class Code39Extended extends Code39 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n }\n}\n","import { Code39Base } from './code39';\n\nconst extend = Object.assign;\n\nexport class Code93 extends Code39Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n }\n\n initValue(value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n }\n\n prepareValues() {\n let minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error(`Insufficient height for Code93 encoding: the current height is ${this.height}px, the minimum required height is ${minHeight}px.`);\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n const minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error(`Insufficient width for Code93 encoding: the current width is ${this.width}px and the minimum required width for value \"${this.value}\" is ${minWidth}px.`);\n }\n }\n\n setBaseUnit() {\n const checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n }\n\n addStart() {\n let pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n }\n\n addStop() {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n }\n\n addBase(charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n }\n\n pushCheckSum() {\n const checkValues = this._getCheckValues();\n let charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n charData = this.characterMap[this._findCharacterByValue(checkValues[i])];\n this.addPattern(charData.pattern);\n }\n }\n\n _getCheckValues() {\n const values = this.values;\n const length = values.length;\n let wightedSum = 0;\n let cValue;\n let kValue;\n let idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx, this.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this.weightedValue(values[idx], length - idx + 1, this.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n }\n\n _findCharacterByValue(value) {\n for (let character in this.characterMap) {\n if (this.characterMap[character].value === value) {\n return character;\n }\n }\n }\n\n weightedValue(value, index, total) {\n return (index % total || total) * value;\n }\n\n addPattern(pattern) {\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n }\n }\n}\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst extend = Object.assign;\n\nexport class Postnet extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n }\n\n initValue(value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n }\n\n addCheckSum() {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n }\n\n setBaseUnit() {\n const startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n }\n\n validate(value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n }\n\n addPattern(pattern) {\n let y1;\n\n for (let i = 0; i < pattern.length; i++) {\n y1 = this.height - this.baseHeight * pattern.charAt(i);\n this.pattern.push({ width: 1, y1: y1, y2: this.height });\n this.pattern.push(1);\n }\n }\n}\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nconst numberRegex = /^\\d+$/;\nconst alphanumericRegex = /^[a-z0-9]+$/i;\nconst extend = Object.assign;\n\nexport class State128 extends Class {\n constructor(encoding) {\n super();\n this.encoding = encoding;\n this.initProperties();\n }\n\n initProperties() { }\n\n addStart() { }\n\n is() { }\n\n isCode() {\n return false;\n }\n\n move() { }\n\n pushState() { }\n}\n\nexport class State128AB extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n move(encodingState) {\n let idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n }\n\n pushState(encodingState) {\n let states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n let numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this.encoding.addPattern(this.getValue(code));\n encodingState.index++;\n }\n }\n\n _initMoves(states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n }\n\n _moveFNC(encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n }\n\n _shiftState(encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n }\n\n _moveState() {\n this.encoding.addPattern(this.MOVE);\n return true;\n }\n}\n\nconst states128 = {};\n\nstates128.A = class State128A extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n }\n\n isCode(code) {\n return 0 <= code && code < 96;\n }\n\n getValue(code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n }\n};\n\nstates128.B = class State128B extends State128AB {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n }\n\n isCode(code) {\n return 32 <= code && code < 128;\n }\n\n getValue(code) {\n return code - 32;\n }\n};\n\nstates128.C = class State128C extends State128 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n }\n\n addStart() {\n this.encoding.addPattern(this.START);\n }\n\n is(value, index) {\n let next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n }\n\n move() {\n this.encoding.addPattern(this.MOVE);\n }\n\n pushState(encodingState) {\n let code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n }\n\n getValue(code) {\n return code;\n }\n};\n\nstates128.FNC4 = class State128FNC4 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this._initSubStates(states);\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n }\n\n addStart(encodingState) {\n let code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n }\n\n is(value, index) {\n let code = value.charCodeAt(index);\n return this.isCode(code);\n }\n\n isCode(code) {\n return 128 <= code && code < 256;\n }\n\n pushState(encodingState) {\n let subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n let code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n }\n\n _pushStart(subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n }\n\n _initSubState(encodingState) {\n const subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n }\n\n _initSubStates(states) {\n this.subStates = [];\n\n for (let i = 0; i < states.length; i++) {\n if (inArray(states[i], this.dependentStates)) {\n this.subStates.push(states[i]);\n }\n }\n }\n\n _getSubState(code) {\n for (let i = 0; i < this.subStates.length; i++) {\n if (this.encoding[this.subStates[i]].isCode(code)) {\n return this.subStates[i];\n }\n }\n }\n\n _getAll(value, index) {\n let code;\n let result = \"\";\n let i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n }\n};\n\nstates128.FNC1 = class States128FNC1 extends State128 {\n constructor(encoding, states) {\n super(encoding);\n this.states = states;\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n }\n\n\n addStart() {\n this.encoding[this.startState].addStart();\n }\n\n is() {\n return inArray(this.key, this.states);\n }\n\n pushState(encodingState) {\n let encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n const trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this.startAI ? 2 : 0;\n current = separatorLength > 0 ? this.getBySeparator(value, index) : this.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this.validate(current, subState.value);\n encoding.pushData(subState, this.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this.startState) {\n encoding[this.startState].move(subState);\n subState.state = this.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n }\n\n validate(current, value) {\n let code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n }\n\n getByLength(value, index) {\n let id;\n let applicationIdentifier;\n\n for (let i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n }\n\n unsupportedAIError(id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n }\n\n getBySeparator(value, index) {\n let start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n }\n\n getApplicationIdentifier(id) {\n let applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (let i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n let ranges = multiKey[i].ranges;\n\n for (let j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n }\n};\n\nexport class Code128Base extends Encoding {\n constructor(options) {\n super(options);\n this._initStates();\n }\n\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n }\n\n _initStates() {\n for (let i = 0; i < this.states.length; i++) {\n this[this.states[i]] = new states128[this.states[i]](this, this.states);\n }\n }\n\n initValue(value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n }\n\n addData() {\n let encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n }\n\n pushData(encodingState, states) {\n const trueCondition = true;\n\n while (trueCondition) {\n this[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this.getNextState(encodingState, states);\n this[encodingState.state].move(encodingState);\n } else {\n let temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n }\n\n addStart(encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n }\n\n addCheckSum() {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n }\n\n addStop() {\n this.addPattern(this.STOP);\n }\n\n setBaseUnit() {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n }\n\n addPattern(code) {\n const pattern = this.characterMap[code].toString();\n let value;\n\n for (let i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this.pattern.push(value);\n this.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n }\n\n getNextState(encodingState, states) {\n for (let i = 0; i < states.length; i++) {\n if (this[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n }\n}\n\nexport class Code128a extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n }\n}\n\nexport class Code128b extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n }\n}\n\nexport class Code128c extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n }\n}\n\nexport class Code128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n }\n}\n\nexport class CodeGS1128 extends Code128Base {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n }\n}\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class MsiBase extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n }\n\n initValue(value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n }\n\n setBaseUnit() {\n const startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n }\n\n addData() {\n const value = this.value;\n\n this.addPattern(this.START);\n\n for (let i = 0; i < value.length; i++) {\n this.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n }\n\n addCharacter(character) {\n const pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n }\n\n addPattern(pattern) {\n for (let i = 0; i < pattern.length; i++) {\n this.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n }\n\n addCheckSum() {\n const checkSumFunction = this.checkSums[this.checkSumType];\n const checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n this.checkSumLength++;\n this.addPattern(this.characterMap[checkValues[i]]);\n }\n }\n}\n\nexport class MsiMod10 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n }\n}\n\nexport class MsiMod11 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n }\n}\n\nexport class MsiMod1010 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n }\n}\n\nexport class MsiMod1110 extends MsiBase {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n }\n}\n\nconst checkSums = {\n Modulo10(value) {\n let checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11(value) {\n let weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (let i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10(value) {\n let checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10(value) {\n let checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nconst extend = Object.assign;\n\nexport class Ean13 extends Encoding {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n }\n\n initValue(value, width, height) {\n const valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n }\n\n addData() {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n }\n\n addSide(leftPart, key) {\n for (let i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this.keyTable[key].charAt(i), 10)) {\n this.addPieces(Array.prototype.slice.call(this.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this.addPieces(this.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n }\n\n addPieces(arrToAdd, limitedHeight) {\n for (let i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this.pattern.push({\n y1: 0,\n y2: this.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this.pattern.push(arrToAdd[i]);\n }\n }\n }\n\n calculateChecksum() {\n let odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (let i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n let checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n }\n}\n","import { Ean13 } from './ean13';\n\nconst extend = Object.assign;\n\nexport class Ean8 extends Ean13 {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n name: \"EAN 8\"\n });\n }\n\n initValue(value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n }\n}\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport const Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c,\n [\"gs1-128\"]: CodeGS1128,\n\n msimod10: MsiMod10,\n msimod11: MsiMod11,\n msimod1010: MsiMod1010,\n msimod1110: MsiMod1110,\n\n postnet: Postnet,\n\n ean8: Ean8,\n ean13: Ean13\n};\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport class Code93Extended extends Code93 {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n const checkValues = this._getCheckValues();\n let value;\n\n this.checksum = checkValues.join(\"\");\n\n for (let i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this.shiftValuesAsciiCodes[value]) {\n this.addExtended(this.shiftValuesAsciiCodes[value]);\n } else {\n const characterByValue = this._findCharacterByValue(value);\n this.addPattern(this.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n }\n}\n","export function surfaceSize(element, surfaceType) {\n const display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n const size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nconst DEFAULT_BARCODE_WIDTH = 300;\nconst DEFAULT_BARCODE_HEIGHT = 100;\n\nclass Barcode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-barcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n setOptions(options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n _render() {\n const options = this.options;\n const value = options.value;\n const textOptions = options.text;\n const textMargin = getSpacing(textOptions.margin);\n const size = this._getSize();\n const border = options.border || {};\n const encoding = this.encoding;\n const contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n let barHeight = contentBox.height();\n let encodedValue;\n let textToDisplay;\n let textHeight;\n const visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n }\n\n exportVisual() {\n return this._render();\n }\n\n _getSize() {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n }\n\n value(value) {\n if (!defined(value)) {\n return this.options.value;\n }\n\n this.options.value = String(value);\n this.redraw();\n }\n\n _getBands(pattern, baseUnit) {\n const contentBox = this.contentBox;\n let offsetX = contentBox.x1;\n let stepX;\n let patternItem;\n const group = new draw.Group();\n\n for (let i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n const rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n const path = draw.Path.fromRect(rect, {\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n }\n\n _getBackground(size) {\n const options = this.options;\n const border = options.border || {};\n const box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n const path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n }\n\n _getText(value) {\n const textOptions = this.options.text;\n const text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n }\n\n _setOptions(options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error(`Encoding '${this.type}' is not supported.`);\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n }\n}\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","export const extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n let result = [];\n let idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n let bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport class FreeCellVisitor extends Class {\n constructor(matrix) {\n super();\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n move() {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n }\n\n getNextCell() {\n while (this.matrix[this.row][this.column] !== undefined) {\n this.move();\n\n if (this.row < 0 || this.row >= this.matrix.length) {\n this.dir = -this.dir;\n this.startColumn -= this.startColumn !== 8 ? 2 : 3;\n this.column = this.startColumn;\n this.row = this.dir < 0 ? this.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n }\n\n getNextRemainderCell() {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n }\n}\n","import { Class } from '../../common';\n\nexport class EncodingResult extends Class {\n constructor(dataString, version) {\n super();\n\n this.dataString = dataString;\n this.version = version;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport class IsoEncoder extends Class {\n getEncodingResult(inputString, errorCorrectionLevel) {\n let modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n }\n}\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nlet terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n (row, column) => { return (row + column) % 2 === 0; },\n (row, column) => { return row % 2 === 0; },\n (row, column) => { return column % 3 === 0; },\n (row, column) => { return (row + column) % 3 === 0; },\n (row, column) => { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n (row, column) => { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n (row, column) => { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n (row, column) => { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport const generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (let i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n let cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (let blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (let i = 0; i < block.length; i++) {\n for (let j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n let dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n let dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n let result;\n let power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n let result = [],\n idx = x.length - 2;\n\n for (let i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n let result = [];\n\n for (let i = 0; i < x.length; i++) {\n for (let j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n let maxErrorCorrectionCodeWordsCount = 68;\n\n for (let idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n let firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n let result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n let generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n let codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (let groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (let blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (let codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n let numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n let modes = [],\n previousMode,\n idx = 0;\n let str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n let nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n let length = 0,\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n let x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n let dataString = \"\",\n mode;\n\n for (let i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n let formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (let i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n let generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n let yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n let x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n let matrices = [],\n modules = 17 + 4 * version;\n\n for (let i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (let j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n let matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n let matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (let idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n let size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (let i = 0; i < pattern.length; i++) {\n for (let j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n let nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n let modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n let matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (let i = 0; i < points.length; i++) {\n for (let j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n let row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (let i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n let scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (let rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (let columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (let matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n let total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n let percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n let encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n let minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n let formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class QRDataMode extends Class {\n constructor() {\n super();\n\n this.initProperties();\n }\n\n initProperties() {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n }\n\n getVersionIndex(version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n }\n\n getBitsCharacterCount(version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n }\n\n getModeCountString(length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n }\n\n encode() { }\n\n getStringBitsLength() { }\n\n getValue() { }\n}\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nconst NUMERIC = \"numeric\";\nconst ALPHA_NUMERIC = \"alphanumeric\";\nconst BYTE = \"byte\";\n\nexport let DataModeInstances = {\n [NUMERIC]: new NumericQRDataMode(),\n [ALPHA_NUMERIC]: new AlphaNumericQRDataMode(),\n [BYTE]: new ByteQRDataMode()\n};\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class NumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n }\n\n getValue(character) {\n return parseInt(character, 10);\n }\n\n encode(str, version) {\n let mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n let mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport class AlphaNumericQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n characters: {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n }\n\n getValue(character) {\n return this.characters[character];\n }\n\n encode(str, version) {\n let\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n let i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n }\n}\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport class ByteQRDataMode extends QRDataMode {\n initProperties() {\n super.initProperties();\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n }\n\n getValue(character) {\n let code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error(`Unsupported character in QR Code: \"${character}\".`);\n }\n\n encode(str, version) {\n let mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (let i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n }\n\n getStringBitsLength(inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n }\n}\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nconst BYTE = \"byte\";\n\nexport class Utf8Encoder extends Class {\n constructor() {\n super();\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n initProperties() {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n }\n\n getEncodingResult(inputString, errorCorrectionLevel) {\n let data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n }\n\n getDataCodewordsCount(data) {\n let dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n }\n\n encode(str) {\n let result = this.utfBOM;\n\n for (let i = 0; i < str.length; i++) {\n result += this.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n }\n\n encodeCharacter(code) {\n let bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n let significantOnes = 8 - bytesCount;\n\n for (let i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n }\n\n getBytesCount(code) {\n let ranges = this.ranges;\n\n for (let i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n }\n}\n","export const VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nconst round = Math.round;\nconst crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nconst squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nconst QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nclass QRCode extends Class {\n constructor(element, options, errorHandler = defaultErrorHandler) {\n super();\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n destroy() {\n this._destroySurface();\n }\n\n _initElement() {\n addClass(this.element, \"k-qrcode\");\n }\n\n _initSurface() {\n const { options, surface } = this;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _createSurface() {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n redraw() {\n let size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n getSize() {\n const element = this.element;\n const elementWidth = element.clientWidth;\n const elementHeight = element.clientHeight;\n const size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n }\n\n _resize() {\n this.redraw();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n exportVisual() {\n return this._render();\n }\n\n _render() {\n let value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n let visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n }\n\n _renderLogo(qrSize, baseUnit) {\n let image;\n let imageRect;\n let center = round(qrSize / 2);\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n let logoUrl = this.options.overlay.imageUrl;\n let position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n }\n\n _renderSwissCode(qrSize, baseUnit) {\n let logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n let crossSize = logoSize / 4;\n let crossOffset = crossSize / 2;\n let center = qrSize / 2;\n let start = {};\n let visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n }\n\n _renderShape(start, step, pattern, color) {\n let path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (let i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n }\n\n _getSize() {\n let size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n const element = this.element;\n const elementSize = surfaceSize(element, this.options.renderAs);\n const min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n }\n\n _calculateBaseUnit(size, matrixSize) {\n let baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n const minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n `Insufficient size for QR Code: the current size is ${size}px and the minimum size is ${minSize}px.`\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n }\n\n _renderMatrix(matrix, baseUnit, quietZoneSize) {\n let path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (let row = 0; row < matrix.length; row++) {\n let y = quietZoneSize + row * baseUnit;\n let column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n let x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n let x1 = round(quietZoneSize + x * baseUnit);\n let y1 = round(y);\n let x2 = round(quietZoneSize + column * baseUnit);\n let y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n }\n\n _renderBackground(size, border) {\n const box = new Box(0, 0, size, size).unpad(border.width / 2);\n const background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n }\n\n setOptions(options) {\n let newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n }\n\n value(value) {\n if (value === undefined) {\n return this._value;\n }\n\n this._value = String(value);\n\n this.redraw();\n }\n\n _hasCustomLogo() {\n return Boolean(this.options.overlay.imageUrl);\n }\n\n _isSwiss() {\n return this.options.overlay.type === \"swiss\";\n }\n\n _getLogoSize(defautLogoSize) {\n let width = this.options.overlay.width;\n let height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n }\n}\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","import { encodeData } from './encodings/encoding';\n\nconst ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding = ISO) {\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","// Coordinate reference system\n// World Geodetic System of 1984\nconst WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport const datums = {\n WGS84\n};\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nlet math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport class Location extends Class {\n constructor(lat, lng) {\n super();\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n initProperties() {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n }\n\n toArray() {\n return [\n this.lat,\n this.lng\n ];\n }\n\n equals(loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n }\n\n clone() {\n return new Location(this.lat, this.lng);\n }\n\n round(precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n }\n\n wrap() {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n }\n\n distanceTo(dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n }\n\n destination(distance, initialBearing, initialDatum) {\n let bearing = rad(initialBearing);\n let datum = initialDatum || datums.WGS84;\n let fromLat = rad(this.lat);\n let fromLng = rad(this.lng);\n let dToR = distance / datum.a;\n let lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n let lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n }\n\n greatCircleTo(initialDest, initialDatum) {\n let dest = Location.create(dest);\n let datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n let a = datum.a;\n let b = datum.b;\n let f = datum.f;\n let L = rad(dest.lng - this.lng);\n let U1 = atan((1 - f) * tan(rad(this.lat)));\n let sinU1 = sin(U1);\n let cosU1 = cos(U1);\n let U2 = atan((1 - f) * tan(rad(dest.lat)));\n let sinU2 = sin(U2);\n let cosU2 = cos(U2);\n let lambda = L;\n let prevLambda;\n let i = this.DISTANCE_ITERATIONS;\n let converged = false;\n let sinLambda;\n let cosLambda;\n let sino;\n let cosA2;\n let coso;\n let cos2om;\n let sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n let sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n let C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this.DISTANCE_CONVERGENCE;\n }\n\n let u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n let A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n let B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n let deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n let azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n let azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n }\n\n // IE < 9 doesn't allow to override toString on definition\n toString() {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n }\n\n static fromLngLat(lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n }\n\n static fromLatLng(lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n }\n\n static create(a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n }\n}\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nlet math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nlet PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nlet WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport class Mercator extends Class {\n constructor(options) {\n super();\n this.initProperties();\n this._initOptions(options);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n initProperties() {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n }\n\n forward(loc, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n }\n _projectLat(lat) {\n let datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n }\n inverse(point, clamp) {\n let proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n }\n _inverseY(y) {\n let proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n let con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n }\n}\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport class SphericalMercator extends Mercator {\n initProperties() {\n super.initProperties();\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n }\n\n _projectLat(lat) {\n let r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n }\n\n _inverseY(y) {\n let r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n }\n}\n\nexport class Equirectangular extends Class {\n forward(loc) {\n return new Point(loc.lng, loc.lat);\n }\n inverse(point) {\n return new Location(point.y, point.x);\n }\n}\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport class EPSG3857 extends Class {\n constructor() {\n super();\n let crs = this,\n proj = crs._proj = new SphericalMercator();\n let c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n // Location <-> Point (screen coordinates for a given scale)\n toPoint(loc, scale, clamp) {\n let point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n }\n toLocation(point, scale, clamp) {\n let newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n }\n}\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport class EPSG3395 extends Class {\n constructor() {\n super();\n this._proj = new Mercator();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport class EPSG4326 extends Class {\n constructor() {\n super();\n this._proj = new Equirectangular();\n }\n toPoint(loc) {\n return this._proj.forward(loc);\n }\n toLocation(point) {\n return this._proj.inverse(point);\n }\n}\n","import {\n isFunction,\n isArray,\n hasOwnProperty\n} from '../common';\n\n/* eslint-disable arrow-body-style, no-useless-escape */\n\nconst defineProperty = Object.defineProperty;\n\nexport const extend = Object.assign;\n\nexport let convertToHtml = (html) => {\n const div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport let appendHtml = (html, element) => {\n const div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport let removeChildren = (element) => {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport let prepend = (element, originElement) => {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport let wrapInner = (parent, wrapper) => {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport let toHyphens = (str) => {\n const result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport let toPixels = (value) => {\n let result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nconst detectOS = (ua) => {\n let os = false, minorVersion, match = [],\n // notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (let agent in agentRxs) {\n if (hasOwnProperty(agentRxs, agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent === \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRegex(agent, formFactorRxs, false);\n os.browser = testRegex(ua, browserRxs, \"default\");\n os.name = testRegex(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n\n\n break;\n }\n }\n }\n\n return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n for (let regex in regexes) {\n if (hasOwnProperty(regexes, regex) && regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n\nexport let hasNativeScrolling = (userAgent) => {\n const os = detectOS(userAgent);\n return os.ios || os.android;\n};\n\nconst detectBrowser = (userAgent) => {\n let browser = false,\n match = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (let agent in browserRxs) {\n if (hasOwnProperty(browserRxs, agent)) {\n match = userAgent.match(browserRxs[agent]);\n\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n};\n\nexport let getEventMap = () => {\n let eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n const support = getSupportedFeatures();\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n return eventMap;\n};\n\nexport const getSupportedFeatures = () => {\n const os = detectOS(navigator.userAgent);\n const browser = detectBrowser(navigator.userAgent);\n\n let chrome = browser.chrome,\n mobileChrome = browser.crios,\n mozilla = browser.mozilla,\n safari = browser.safari;\n\n const support = {};\n\n support.mobileOS = os;\n support.touch = \"ontouchstart\" in window;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.eventCapture = document.documentElement.addEventListener;\n\n let table = document.createElement(\"table\");\n\n let transitions = support.transitions = false,\n transforms = support.transforms = false;\n\n const STRING = \"string\";\n\n [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n let hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n let lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix !== \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.delayedClick = function() {\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (support.mobileOS.ios) {\n return true;\n }\n\n if (support.mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n const meta = document.querySelector(\"meta[name=viewport]\");\n const contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n return !contentAttr.match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n return support;\n};\n\nexport const ownsElement = (parent, element) => {\n if (!element) {\n return false;\n }\n\n let node = element.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\nexport const contains = (parent, element) => {\n return parent === element || ownsElement(parent, element);\n};\n\nexport const proxy = (method, context) => {\n return method.bind(context);\n};\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nexport const on = (element, events, filter, handler, useCapture) => {\n addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const addEventListeners = (element, events, filter, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n};\n\nexport const addEventListener = (element, event, filter, handler, useCapture) => {\n let eventHandler = handler;\n let eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n element.addEventListener(event, function(e) {\n const closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n const currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n }, Boolean(useCapture));\n};\n\nexport const off = (element, events, filter, handler, useCapture) => {\n removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport const removeEventListeners = (element, events, handler, useCapture) => {\n const eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n};\n\nexport const removeEventListener = (element, event, handler, useCapture) => {\n element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport const applyEventMap = (events) => {\n const eventMap = getEventMap(navigator.userAgent);\n function queryEventMap(e) {\n return eventMap[e] || e;\n }\n\n const eventRegEx = /([^ ]+)/g;\n const appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n\nexport const setDefaultEvents = (type, events) => {\n const proto = type.prototype;\n\n if (proto.events) {\n events.forEach(event => {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport const wheelDeltaY = (jQueryEvent) => {\n const e = jQueryEvent.originalEvent || jQueryEvent;\n const deltaY = e.wheelDeltaY;\n let delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n};\n\nexport const now = () => {\n return Number(new Date());\n};\n\nexport const noop = () => {};\n\nexport const renderPos = (pos) => {\n let result = [];\n\n if (pos) {\n let parts = toHyphens(pos).split(\"-\");\n\n for (let i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n};\n\n/* eslint-enable arrow-body-style, no-useless-escape */\n","import {\n Class\n} from '../common';\n\nconst STRING = \"string\";\nconst FUNCTION = \"function\";\n\nlet preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nlet isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nexport class Observable extends Class {\n constructor() {\n super();\n this._events = {};\n }\n\n destroy() {\n this.unbind();\n }\n\n bind(event, handlers, one) {\n let that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n /* eslint-enable no-loop-func */\n\n return that;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n let that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n let eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n }\n\n trigger(eventName, eventArgs) {\n let that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n let e = eventArgs || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n let that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n\n _setEvents(options) {\n const length = (this.events || []).length;\n\n for (let idx = 0; idx < length; idx ++) {\n let e = this.events[idx];\n\n if (this.options[e] && options[e]) {\n this.unbind(e, this.options[e]);\n\n if (this._events && this._events[e]) {\n delete this._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n }\n}\n","import {\n addClass,\n defined,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nimport { Observable } from '../common/observable';\n\nexport class Attribution extends Observable {\n constructor(element, options) {\n super();\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n filter(extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n }\n\n add(item) {\n let newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n }\n\n remove(text) {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n }\n\n clear() {\n this.items = [];\n removeChildren(this.element);\n }\n\n _render() {\n let result = [];\n\n for (let i = 0; i < this.items.length; i++) {\n let item = this.items[i];\n let text = this._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n const html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n }\n\n hideElement() {\n this.element.style.display = \"none\";\n }\n\n showElement() {\n this.element.style.display = \"\";\n }\n\n _itemText(item) {\n let text = '';\n let inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n let inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n }\n\n _inZoomLevel(min, max) {\n let result = true;\n let newMin = valueOrDefault(min, -Number.MAX_VALUE);\n let newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n }\n\n _inArea(area) {\n let result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n }\n}\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n deepExtend,\n addClass,\n keys,\n setDefaultOptions,\n renderIcon\n} from '../common';\n\nimport {\n Observable\n} from '../common/observable';\n\nimport {\n proxy,\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nconst PAN = \"pan\";\n\nconst directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-caret-alt-up\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-caret-alt-down\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-caret-alt-right\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-caret-alt-left\"\n }\n};\n\nfunction createButton(direction, iconOptions) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nexport class Navigator extends Observable {\n constructor(element, options) {\n super();\n\n this.element = element;\n this._initOptions(options);\n\n const navigateUpButton = createButton(\"up\", options.icons);\n const navigateRightlButton = createButton(\"right\", options.icons);\n const navigateDownButton = createButton(\"down\", options.icons);\n const navigateLeftButton = createButton(\"left\", options.icons);\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n this.dispose();\n }\n\n // originates from the kendo.jquery version\n dispose() {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _pan(x, y) {\n let panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n }\n\n _click(e) {\n let x = 0;\n let y = 0;\n let button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n }\n\n _keydown(e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n }\n}\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","let keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n};\n\nexport default keys;\n","import {\n deepExtend,\n addClass,\n keys,\n hasClasses,\n setDefaultOptions,\n renderIcon\n} from '../common';\n\nimport {\n Observable\n} from '../common/observable';\n\nimport {\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, icon, iconOptions) {\n const html =\n '';\n\n return convertToHtml(html);\n}\n\nlet PLUS = 187;\nlet MINUS = 189;\nlet FF_PLUS = 61;\nlet FF_MINUS = 173;\nconst CHANGE = \"change\";\n\nexport class ZoomControl extends Observable {\n constructor(element, options, iconOptions) {\n super();\n this.element = element;\n this._initOptions(options);\n\n const zoomInButton = createButton('in', 'plus', iconOptions);\n const zoomOutButton = createButton('out', 'minus', iconOptions);\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n this.element.setAttribute(\"role\", \"group\");\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n let parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n destroy() {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n }\n\n _tabindex(target) {\n const targetElement = target || this.wrapper || this.element;\n\n let element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _change(direction) {\n let zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n }\n\n _click(e) {\n let button = e.currentTarget;\n let direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n }\n\n _keydown(e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n }\n}\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nlet math = Math,\n max = math.max,\n min = math.min;\n\nexport class Extent extends Class {\n constructor(initialNw, initialSe) {\n super();\n let nw = Location.create(initialNw);\n let se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n contains(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n }\n\n center() {\n let nw = this.nw;\n let se = this.se;\n let lng = nw.lng + (se.lng - nw.lng) / 2;\n let lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n }\n\n containsAny(locs) {\n let result = false;\n\n for (let i = 0; i < locs.length; i++) {\n result = result || this.contains(locs[i]);\n }\n\n return result;\n }\n\n include(loc) {\n let nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n }\n\n includeAll(locs) {\n for (let i = 0; i < locs.length; i++) {\n this.include(locs[i]);\n }\n }\n\n edges() {\n let nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n }\n\n toArray() {\n let nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n }\n\n overlaps(extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n }\n\n static create(a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n }\n\n static get World() {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n }\n}\n","export const SHOW_TOOLTIP = 'showTooltip';\nexport const HIDE_TOOLTIP = 'hideTooltip';\nexport const CENTER_CHANGE = 'centerChange';\nexport const ZOOM_CHANGE = 'zoomChange';\nexport const INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport class Tooltip extends Class {\n constructor(widgetService, options) {\n super();\n\n this.widgetService = widgetService;\n this.options = deepExtend({}, this.options, options);\n this.offset = { x: 0, y: 0 };\n }\n\n show(anchor, args) {\n if (this.location === args.location) {\n return;\n }\n\n this.anchor = anchor;\n this.location = args.location;\n\n this.widgetService.notify(SHOW_TOOLTIP,\n Object.assign({ anchor: this.anchor }, args)\n );\n\n this.visible = true;\n }\n\n hide() {\n if (this.widgetService) {\n this.widgetService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n this.location = null;\n }\n\n get anchor() {\n return this._anchor;\n }\n\n set anchor(anchor) {\n const documentPoint = this.widgetService.widget._toDocumentCoordinates({\n x: anchor.left - this.offset.x,\n y: anchor.top - this.offset.y\n });\n\n this._anchor = {\n left: documentPoint.left,\n top: documentPoint.top\n };\n }\n\n destroy() {\n this.widgetService = null;\n }\n}\n\nsetDefaultOptions(Tooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n","import {\n Class,\n addClass,\n deepExtend,\n defined\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nimport {\n getSupportedFeatures\n} from '../utils';\n\nexport class Layer extends Class {\n constructor(map, options) {\n super();\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n let element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n destroy() {\n this._deactivate();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n show() {\n this.reset();\n this._activate();\n this._applyExtent(true);\n }\n\n hide() {\n this._deactivate();\n this._setVisibility(false);\n }\n\n reset() {\n this._beforeReset();\n this._reset();\n }\n\n _reset() {\n this._applyExtent();\n }\n\n _beforeReset() {\n\n }\n\n _resize() {\n\n }\n\n _panEnd() {\n this._applyExtent();\n }\n\n _applyExtent() {\n let options = this.options;\n let zoom = this.map.zoom();\n let matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n let matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n let extent = Extent.create(options.extent);\n let inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n }\n\n _setVisibility(visible) {\n this.element.style.display = visible ? '' : 'none';\n }\n\n _activate() {\n let map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n }\n\n _deactivate() {\n let map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n }\n\n _updateAttribution() {\n const attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _hasData() {\n return this._data && this._data.length > 0;\n }\n\n _layerIndex() {\n const layers = this.map.layers || [];\n return layers.indexOf(this);\n }\n}\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nlet math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n let newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport class TileLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n let viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n destroy() {\n super.destroy();\n this._view.destroy();\n this._view = null;\n }\n\n _beforeReset() {\n let map = this.map;\n let origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n }\n\n _reset() {\n super._reset();\n this._updateView();\n this._view.reset();\n }\n\n _viewType() {\n return TileView;\n }\n\n _activate() {\n super._activate();\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n }\n\n _deactivate() {\n super._deactivate();\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n }\n\n _updateView() {\n let view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n }\n\n _resize() {\n this._render();\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._render();\n }\n\n _render() {\n this._updateView();\n this._view.render();\n }\n}\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport class TileView extends Class {\n constructor(element, options) {\n super();\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n center(center) {\n this._center = center;\n }\n\n extent(extent) {\n this._extent = extent;\n }\n\n viewOrigin(origin) {\n this._viewOrigin = origin;\n }\n\n zoom(zoom) {\n this._zoom = zoom;\n }\n\n pointToTileIndex(point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n }\n\n tileCount() {\n let size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n }\n\n size() {\n let nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n }\n\n indexToPoint(index) {\n let x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n }\n\n subdomainText() {\n let subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n }\n\n destroy() {\n removeChildren(this.element);\n this.pool.empty();\n }\n\n reset() {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n }\n\n render() {\n let size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n }\n\n createTile(currentIndex) {\n let options = this.tileOptions(currentIndex);\n let tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n }\n\n tileOptions(currentIndex) {\n let index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n }\n\n wrapIndex(index) {\n let boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n }\n\n wrapValue(value, boundary) {\n let remainder = math.abs(value) % boundary;\n let wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n }\n}\n\nexport class ImageTile extends Class {\n constructor(id, options) {\n super();\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n destroy() {\n const element = this.element;\n const parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n createElement() {\n let el = document.createElement(\"img\");\n const size = this.options.size + \"px\";\n el.setAttribute(\"alt\", \"\");\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('\\'\\'')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n }\n\n show() {\n let element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n let url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n }\n\n hide() {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n }\n\n url() {\n let urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n }\n\n errorUrl() {\n let urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n }\n\n urlOptions() {\n let options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n }\n}\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport class TilePool extends Class {\n constructor() {\n super();\n this._items = [];\n }\n\n get(center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n }\n\n empty() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n }\n\n reset() {\n let items = this._items;\n\n for (let i = 0; i < items.length; i++) {\n items[i].hide();\n }\n }\n\n _create(options) {\n let items = this._items;\n let tile;\n let id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n }\n\n _remove(center) {\n let items = this._items;\n let maxDist = -1;\n let index = -1;\n\n for (let i = 0; i < items.length; i++) {\n let dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n }\n}\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n elementOffset\n} from '../../common';\n\nimport {\n Observable\n} from '../../common/observable';\n\nimport {\n getEventMap,\n proxy,\n getSupportedFeatures\n} from '../utils';\n\nconst extend = Object.assign;\n\nconst CHANGE = 'change';\n\nexport class TapCapture extends Observable {\n constructor(element, options) {\n super();\n let that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n const eventMap = getEventMap(navigator.userAgent);\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n captureNext() {\n this.capture = true;\n }\n\n cancelCapture() {\n this.capture = false;\n }\n\n _press(e) {\n let that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n }\n\n _release(e) {\n let that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n}\n\nexport class PaneDimension extends Observable {\n constructor(options) {\n super();\n let that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n makeVirtual() {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n }\n\n virtualSize(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n }\n\n outOfBounds(offset) {\n return offset > this.max || offset < this.min;\n }\n\n forceEnabled() {\n this.forcedEnabled = true;\n }\n\n getSize() {\n return this.container[this.measure];\n }\n\n getTotal() {\n return this.element[this.scrollSize];\n }\n\n rescale(scale) {\n this.scale = scale;\n }\n\n update(silent) {\n let that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n}\n\nexport class PaneDimensions extends Observable {\n constructor(options) {\n super();\n let that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n rescale(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n }\n\n centerCoordinates() {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n }\n\n refresh() {\n let that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n}\n\nexport class PaneAxis extends Observable {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n outOfBounds() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n }\n\n dragMove(delta) {\n let that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n let dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n }\n}\n\nexport class Pane extends Class {\n constructor(options) {\n super();\n\n let that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press(e) {\n const closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange(e) {\n let previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n let offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end(e) {\n e.preventDefault();\n }\n });\n }\n}\n\nlet translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport class Movable extends Observable {\n constructor(element) {\n super();\n\n let that = this;\n\n that.support = getSupportedFeatures();\n this.transformStyle = this.support.transitions.prefix + 'Transform';\n that.element = element;\n that.element.style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n const coordinates = translate(that.x, that.y, that.scale);\n that.element.style[this.transformStyle] = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n translateAxis(axis, by) {\n this[axis] += by;\n this.refresh();\n }\n\n scaleTo(scale) {\n this.scale = scale;\n this.refresh();\n }\n\n scaleWith(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n }\n\n translate(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n }\n\n moveAxis(axis, value) {\n this[axis] = value;\n this.refresh();\n }\n\n moveTo(coordinates) {\n extend(this, coordinates);\n this.refresh();\n }\n\n refresh() {\n let that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style[this.transformStyle] = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n }\n\n _saveCoordinates(coordinates) {\n this.coordinates = coordinates;\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nconst Group = d.Group;\n\nexport class ShapeLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n this.surface.bind('mouseenter', this._mouseenter.bind(this));\n }\n\n destroy() {\n super.destroy();\n\n this.surface.destroy();\n }\n\n _reset() {\n super._reset();\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n }\n\n _initRoot() {\n this._root = new Group();\n this.surface.draw(this._root);\n }\n\n _beforeReset() {\n this.surface.clear();\n this._initRoot();\n }\n\n _resize() {\n this.surface.size(this.map.size());\n }\n\n _readData() {\n const data = super._readData();\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n }\n\n _load(data) {\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n let container = new Group();\n\n for (let i = 0; i < data.length; i++) {\n let shape = this._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n }\n\n shapeCreated(shape) {\n let cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n let args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n }\n\n featureCreated(e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n }\n\n _createMarker(shape) {\n let marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n }\n\n _clearMarkers() {\n for (let i = 0; i < this._markers.length; i++) {\n this.map.markers.remove(this._markers[i]);\n }\n\n this._markers = [];\n }\n\n _pan() {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n }\n\n _panEnd(e) {\n super._panEnd(e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n }\n\n _translateSurface() {\n let map = this.map;\n let nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n }\n\n _eventArgs(e) {\n return {\n layer: this,\n layerIndex: this._layerIndex(),\n shape: e.element,\n shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n }\n\n _handler(eventName) {\n return (e) => {\n if (e.element) {\n this.map.trigger(eventName, this._eventArgs(e));\n }\n };\n }\n\n _mouseenter(e) {\n if (!e.element) {\n return;\n }\n\n this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n const shape = e.element;\n const anchor = this._tooltipAnchor(e);\n this.map._tooltip.show(anchor, this._tooltipContext(shape));\n }\n\n _tooltipContext(shape) {\n return {\n type: 'shape',\n layerIndex: this._layerIndex(),\n className: 'k-map-shape-tooltip',\n dataItem: shape.dataItem,\n location: shape.location\n };\n }\n\n _tooltipAnchor(e) {\n const cursor = this.map.eventOffset(e.originalEvent);\n return {\n top: cursor.y,\n left: cursor.x\n };\n }\n\n _activate() {\n super._activate();\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n }\n\n _deactivate() {\n super._deactivate();\n this.map.unbind('pan', this._panHandler);\n }\n}\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nclass GeoJsonLoader extends Class {\n constructor(locator, defaultStyle, observer) {\n super();\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n parse(item) {\n let root = new Group();\n let unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n }\n\n _shapeCreated(shape) {\n let cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n }\n\n _featureCreated(group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n }\n\n _loadGeometryTo(container, geometry, dataItem) {\n let coords = geometry.coordinates;\n let i;\n let path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this._loadPolygon(container, [coords[i]], dataItem);\n this._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n }\n\n _setLineFill(path) {\n let segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n }\n\n _loadShape(container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n }\n\n _loadPolygon(container, rings, dataItem) {\n let shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n shape.location = this.locator.viewToLocation(shape.bbox().center());\n return this._loadShape(container, shape);\n }\n\n _buildPolygon(rings) {\n let type = rings.length > 1 ? d.MultiPath : d.Path;\n let path = new type(this.style);\n\n for (let i = 0; i < rings.length; i++) {\n for (let j = 0; j < rings[i].length; j++) {\n let point = this.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n }\n\n _loadPoint(container, coords, dataItem) {\n let location = Location.fromLngLat(coords);\n let point = this.locator.locationToView(location);\n let circle = new g.Circle(point, 10);\n let shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n }\n}\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport class BubbleLayer extends ShapeLayer {\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n let options = this.options;\n let getValue = getter(options.valueField);\n\n let newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n let scaleType = this._scaleType();\n let scale;\n let getLocation = getter(this.options.locationField);\n\n for (let i = 0; i < newData.length; i++) {\n let dataItem = newData[i];\n let location = getLocation(dataItem);\n let value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n let center = this.map.locationToView(location);\n let size = scale.map(value);\n let symbol = this._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this._drawSymbol(symbol);\n }\n }\n }\n\n _scaleType() {\n let scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n }\n\n _createSymbol(args) {\n let symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n }\n\n _drawSymbol(shape) {\n let args = {\n layer: this,\n shape: shape\n };\n\n let cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n }\n\n _tooltipContext(shape) {\n return {\n type: 'bubble',\n layerIndex: this._layerIndex(),\n className: 'k-map-bubble-tooltip',\n dataItem: shape.dataItem,\n location: shape.location,\n value: shape.value\n };\n }\n\n _tooltipAnchor(e) {\n const shape = e.element;\n const center = shape.bbox().center();\n\n return {\n top: center.y,\n left: center.x\n };\n }\n}\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nclass SqrtScale extends Class {\n constructor(domain, range) {\n super();\n\n this._domain = domain;\n this._range = range;\n\n let domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n let outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n map(value) {\n let rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n }\n}\n\nlet Scales = {\n sqrt: SqrtScale\n};\n\nlet Symbols = {\n circle: function(args) {\n let geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n let path = new d.Path(args.style);\n let halfSize = args.size / 2;\n let center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions,\n renderIcon\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\nimport {\n proxy,\n on,\n off,\n toHyphens,\n toPixels,\n convertToHtml\n} from '../utils';\nimport TemplateService from '../../services/template-service';\n\nconst CLICK = \"click\";\nconst MOUSE_ENTER = \"mouseenter\";\nconst MOUSE_LEAVE = \"mouseleave\";\n\nconst extend = Object.assign;\nconst MARKER_CLASS_NAME = \"k-marker\";\nconst MARKER_CLASS = \".\" + MARKER_CLASS_NAME;\n\nexport class MarkerLayer extends Layer {\n constructor(map, options) {\n super(map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n destroy() {\n super.destroy();\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n }\n\n add(args) {\n if (isArray(args)) {\n for (let i = 0; i < args.length; i++) {\n this._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n }\n\n remove(marker) {\n marker.destroy();\n let index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n }\n\n clear() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].destroy();\n }\n\n this.items = [];\n }\n\n update(marker) {\n let location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n let args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n }\n\n _reset() {\n super._reset();\n\n let items = this.items;\n\n for (let i = 0; i < items.length; i++) {\n this.update(items[i]);\n }\n }\n\n bind(options, dataItem) {\n let marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n let args = {\n marker: marker,\n layer: this\n };\n\n let cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n }\n\n _addOne(arg) {\n let marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n }\n\n _readData() {\n const data = this.options.data || [];\n return data;\n }\n\n _load(data) {\n this._data = data;\n this.clear();\n\n let getLocation = getter(this.options.locationField);\n let getTitle = getter(this.options.titleField);\n\n for (let i = 0; i < data.length; i++) {\n let dataItem = data[i];\n\n this.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n }\n\n _markerClick(e) {\n const marker = e.currentTarget._kendoNode;\n\n let args = {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n }\n\n _markerMouseEnter(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n }\n\n _markerMouseLeave(e) {\n const args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n }\n\n _createMarkerEventArgs(e) {\n const marker = e.marker;\n\n let args = extend({}, {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n }\n}\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title',\n template: \"\"\n});\n\nexport class Marker extends Class {\n constructor(options) {\n super();\n this.options = options || {};\n }\n\n destroy() {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n }\n\n addTo(parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n }\n\n location(value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n }\n\n showAt(point) {\n this.render();\n\n this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n this.element.style.left = toPixels(this._anchor.left);\n this.element.style.top = toPixels(this._anchor.top);\n }\n\n hide() {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n }\n\n bindEvents() {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n }\n\n unbindEvents() {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n }\n\n render() {\n if (!this.element) {\n let options = this.options;\n let layer = this.layer;\n let element = document.createElement('span');\n addClass(element, MARKER_CLASS_NAME);\n\n if (this.options.template) {\n const templateFn = this._compileTemplate(this.options.template);\n const templateHtml = templateFn(this.dataItem);\n const templateElement = convertToHtml(templateHtml);\n element.appendChild(templateElement);\n } else if (options.svgIcon) {\n renderIcon(element, { icon: options.svgIcon, iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: \"svg\" });\n } else {\n let iconOptions = { icon: \"map-marker\", iconClass: \"k-icon-xxl\", svgIcons: this.options.icons.svgIcons, type: this.options.icons.type };\n\n if (options.shape) {\n if (options.shape === \"pinTarget\") {\n iconOptions.icon = \"map-marker-target\";\n renderIcon(element, iconOptions);\n } else if (options.shape === \"pin\") {\n renderIcon(element, iconOptions);\n } else {\n addClass(element, 'k-icon k-icon-xxl k-i-marker-' + toHyphens(options.shape || 'pin'));\n }\n } else {\n renderIcon(element, iconOptions);\n }\n }\n\n if (options.title) {\n element.setAttribute(\"title\", options.title);\n }\n\n const attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttribute(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n }\n }\n\n _mouseEnter(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n\n this.layer.map._tooltip.show({\n top: this._anchor.top - this.element.offsetHeight,\n left: this._anchor.left\n }, this._tooltipContext());\n }\n\n _tooltipContext() {\n return {\n type: 'marker',\n layerIndex: this.layer._layerIndex(),\n className: 'k-map-marker-tooltip',\n dataItem: this.dataItem,\n title: this.options.title,\n location: this.location()\n };\n }\n\n _mouseLeave(e) {\n const args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n }\n\n _createEventArgs(e) {\n let args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n }\n\n _compileTemplate(template) {\n return TemplateService.compile(template, {\n paramName: \"dataItem\",\n useWithBlock: false\n });\n }\n\n static create(arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n }\n}\n","import {\n Class\n} from '../../common';\n\nimport {\n proxy,\n now\n} from '../utils';\n\nconst extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport class Animation extends Class {\n constructor() {\n super();\n let that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n tick() { }\n done() { }\n onEnd() { }\n onCancel() { }\n\n start() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n }\n\n enabled() {\n return true;\n }\n\n cancel() {\n this._started = false;\n this.onCancel();\n }\n\n _tick() {\n let that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n}\n\nexport class Transition extends Animation {\n constructor(options) {\n super();\n extend(this, options);\n }\n\n done() {\n return this.timePassed() >= this.duration;\n }\n\n timePassed() {\n return Math.min(this.duration, now() - this.startDate);\n }\n\n moveTo(options) {\n let that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n }\n\n _easeProxy(ease) {\n let that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n\n static easeOutExpo(t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n // static easeOutBack(t, b, c, d) {\n // let s = 1.70158;\n // return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n // }\n}\n","import {\n Class,\n grep\n} from '../../common';\n\nimport {\n proxy,\n noop,\n applyEventMap,\n getEventMap,\n on,\n off,\n now,\n getSupportedFeatures\n} from '../utils';\n\nimport {\n Observable\n} from '../../common/observable';\n\nconst extend = Object.assign;\n\nconst preventDefault = (e) => {\n e.preventDefault();\n};\n\nlet\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nlet THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n let x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n const support = getSupportedFeatures();\n let touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget,\n idx = 0,\n length, changedTouches, touch;\n\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n\n return touches;\n}\nexport class TouchAxis extends Class {\n constructor(axis, location) {\n super();\n let that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n move(location) {\n let that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n }\n\n _updateLocationData(location) {\n let that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n }\n}\n\nexport class Touch extends Class {\n constructor(userEvents, target, touchInfo) {\n super();\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n press() {\n // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n }\n\n _tap(touchInfo) {\n let that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n }\n\n _hold() {\n this._trigger(HOLD, this.pressEvent);\n }\n\n /* eslint-disable consistent-return */\n move(touchInfo) {\n let that = this;\n let preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n }\n /* eslint-enable consistent-return */\n\n end(touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n }\n\n dispose() {\n let userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n const activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n }\n\n skip() {\n this.dispose();\n }\n\n cancel() {\n this.dispose();\n }\n\n isMoved() {\n return this._moved;\n }\n\n _start(touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n }\n\n _trigger(name, touchInfo) {\n let that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n }\n\n _withinIgnoreThreshold() {\n let xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n}\n\nfunction withEachUpEvent(callback) {\n const eventMap = getEventMap(navigator.userAgent);\n let downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nexport class UserEvents extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n let filter;\n\n const support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n const enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n extend(that, {\n element: element,\n surface: options.global && enableGlobalSurface ?\n element.ownerDocument.documentElement :\n options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = proxy(this._move, this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = proxy(this._end, this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = proxy(this._start, this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n if (that.useClickAsTap) {\n this._elementClickHandler = proxy(this._click, this);\n on(element, applyEventMap('click'), filter, this._elementClickHandler);\n }\n\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n let defaultAction = 'pinch-zoom double-tap-zoom';\n\n element.style['-ms-touch-action'] =\n options.touchAction && options.touchAction !== 'none' ?\n defaultAction + ' ' + options.touchAction :\n defaultAction;\n\n } else {\n element.style['touch-action'] = options.touchAction || 'none';\n }\n }\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = proxy(this._select, this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved && support.eventCapture) {\n let surfaceElement = that.surface,\n preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n preventIfMoving(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n }\n\n destroy() {\n let that = this;\n const options = this.options;\n const element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && this.support.eventCapture) {\n let surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (that.useClickAsTap) {\n off(element, applyEventMap('click'), this._elementClickHandler);\n }\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n }\n\n capture() {\n UserEvents.current = this;\n }\n\n cancel() {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n\n notify(event, data) {\n let that = this,\n touches = that.touches;\n let eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n }\n\n press(x, y, target) {\n this._apiCall('_start', x, y, target);\n }\n\n move(x, y) {\n this._apiCall('_move', x, y);\n }\n\n end(x, y) {\n this._apiCall('_end', x, y);\n }\n\n _isMultiTouch() {\n return this.touches.length > 1;\n }\n\n _maxTouchesReached() {\n return this.touches.length >= this._maxTouches;\n }\n\n _disposeAll() {\n let touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n }\n\n _isMoved() {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n }\n\n _select(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n }\n\n _start(e) {\n let that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = touch.currentTarget;\n } else {\n target = that.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n }\n\n _move(e) {\n this._eachTouch('move', e);\n }\n\n _end(e) {\n this._eachTouch('end', e);\n }\n\n _click(e) {\n let data = {\n touch: {\n initialTouch: e.target,\n target: e.currentTarget,\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: e.currentTarget,\n event: e,\n type: 'tap'\n };\n\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n }\n\n _eachTouch(methodName, e) {\n let that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n\n _apiCall(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n }\n\n static defaultThreshold(value) {\n DEFAULT_THRESHOLD = value;\n }\n\n static minHold(value) {\n DEFAULT_MIN_HOLD = value;\n }\n}\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n isFunction,\n setDefaultOptions\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n contains,\n hasNativeScrolling,\n on,\n off,\n proxy,\n wheelDeltaY,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nimport {\n UserEvents\n} from './user-events';\n\nimport {\n Observable\n} from '../../common/observable';\n\nlet\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nclass ZoomSnapBack extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n enabled() {\n return this.movable.scale < this.dimensions.minScale;\n }\n\n done() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n }\n\n tick() {\n let movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n }\n\n onEnd() {\n let movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n}\n\nclass DragInertia extends Animation {\n constructor(options) {\n super();\n let that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n onCancel() {\n this.transition.cancel();\n }\n\n freeze(location) {\n let that = this;\n that.cancel();\n that._moveTo(location);\n }\n\n onEnd() {\n let that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n }\n\n done() {\n return abs(this.velocity) < 1;\n }\n\n start(e) {\n let that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n super.start();\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n super.start();\n }\n }\n\n tick() {\n let that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n }\n\n _end() {\n this.tapCapture.cancelCapture();\n this.end();\n }\n\n _snapBack() {\n let that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n }\n\n _moveTo(location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n}\n\nclass AnimatedScroller extends Animation {\n constructor(options) {\n super(options);\n let that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n tick() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n }\n\n done() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n }\n\n onEnd() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n }\n\n setCoordinates(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n }\n\n /* eslint-disable no-param-reassign */\n setCallback(callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n }\n /* eslint-enable no-param-reassign */\n\n _updateCoordinates() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n}\n\nclass ScrollBar extends Class {\n constructor(options) {\n super();\n let that = this,\n horizontal = options.axis === 'x';\n\n const orientation = (horizontal ? 'horizontal' : 'vertical');\n const element = convertToHtml('
');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n refresh() {\n let that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n }\n\n show() {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n }\n\n hide() {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n }\n}\n\n// export class Scroller extends Class {\nexport class Scroller extends Observable {\n constructor(element, options) {\n super();\n let that = this;\n this.element = element;\n\n this._initOptions(options);\n\n const hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n const scrollHeader = convertToHtml('
');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n const scrollContainer = convertToHtml('
');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n let inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start(e) {\n dimensions.refresh();\n let velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'wheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _wheelScroll(e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n let delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n }\n\n makeVirtual() {\n this.dimensions.y.makeVirtual();\n }\n\n virtualSize(min, max) {\n this.dimensions.y.virtualSize(min, max);\n }\n\n height() {\n return this.dimensions.y.size;\n }\n\n scrollHeight() {\n return this.scrollElement.scrollHeight;\n }\n\n scrollWidth() {\n return this.scrollElement.scrollWidth;\n }\n\n _resize() {\n if (!this._native) {\n this.contentResized();\n }\n }\n\n setOptions(options) {\n let that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n reset() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n }\n\n contentResized() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n }\n\n zoomOut() {\n let dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n }\n\n enable() {\n this.enabled = true;\n }\n\n disable() {\n this.enabled = false;\n }\n\n scrollTo(x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n }\n\n animatedScrollTo(x, y, callback) {\n let from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n }\n\n // kept for API compatibility, not used\n pullHandled() {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n }\n\n destroy() {\n const element = this.element;\n\n off(element, 'wheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n }\n\n _scale(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n }\n\n _initPullToRefresh() {\n }\n\n // kept for API compatibility, not used\n _dragEnd() {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n }\n\n // kept for API compatibility, not used\n _paneChange() {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n }\n\n _initAxis(axis) {\n let that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n}\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray,\n round\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n setDefaultEvents,\n proxy,\n now,\n on,\n off,\n getSupportedFeatures,\n convertToHtml,\n renderPos\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport {\n Observable\n} from '../common/observable';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nlet math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'wheel',\n MOUSEWHEEL_THROTTLE = 50,\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nconst layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer,\n [MARKER]: MarkerLayer\n};\n\nclass Map extends Observable {\n constructor(element, options = {}, themeOptions = {}, context = {}) {\n super();\n\n this._init(element, options, themeOptions, context);\n }\n\n destroy() {\n this.scroller.destroy();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(markerLayer => {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (let i = 0; i < this.layers.length; i++) {\n this.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n super.destroy();\n }\n\n // eslint-disable-next-line no-unused-vars\n _init(element, options = {}, themeOptions = {}, context = {}) {\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n this._notifyObserver(INIT);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._tooltip = this._createTooltip();\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n const mousewheelThrottled = throttle(this._mousewheel.bind(this), MOUSEWHEEL_THROTTLE);\n this._mousewheelHandler = (e) => {\n e.preventDefault();\n mousewheelThrottled(e);\n };\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n }\n\n _initOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n\n _initElement(element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n const div = convertToHtml(\"
\");\n this.element.appendChild(div);\n }\n\n initServices(context = {}) {\n this.widgetService = new MapService(this, context);\n }\n\n initObserver(context = {}) {\n this.observers = [];\n this.addObserver(context.observer);\n }\n\n addObserver(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n }\n\n requiresHandlers(eventNames) {\n const observers = this.observers;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n }\n\n trigger(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n super.trigger(name, args);\n }\n\n return isDefaultPrevented;\n }\n\n _notifyObserver(name, args = {}) {\n args.sender = this;\n\n const observers = this.observers;\n let isDefaultPrevented = false;\n\n for (let idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n }\n\n zoom(level) {\n let options = this.options;\n let result;\n\n if (defined(level)) {\n const zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n }\n\n center(center) {\n let result;\n\n if (center) {\n const current = Location.create(center);\n const previous = Location.create(this.options.center);\n if (!current.equals(previous)) {\n this.options.center = current.toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n this._reset();\n }\n\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n }\n\n extent(extent) {\n let result;\n\n if (extent) {\n this._setExtent(extent);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n }\n\n setOptions(options = {}) {\n const element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n }\n\n locationToLayer(location, zoom) {\n let clamp = !this.options.wraparound;\n const locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n }\n\n layerToLocation(point, zoom) {\n let clamp = !this.options.wraparound;\n const pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n }\n\n locationToView(location) {\n const locationObject = Location.create(location);\n let origin = this.locationToLayer(this._viewOrigin);\n let point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n }\n\n viewToLocation(point, zoom) {\n const origin = this.locationToLayer(this._getOrigin(), zoom);\n const pointObject = Point.create(point);\n const pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n }\n\n eventOffset(e) {\n let x;\n let y;\n let offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n let event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n const point = new g.Point(x, y);\n\n return point;\n }\n\n eventToView(e) {\n let cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n }\n\n eventToLayer(e) {\n return this.locationToLayer(this.eventToLocation(e));\n }\n\n eventToLocation(e) {\n let cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n }\n\n viewSize() {\n let element = this.element;\n let scale = this._layerSize();\n let width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n }\n\n exportVisual() {\n this._reset();\n return false;\n }\n\n hideTooltip() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n }\n\n _setOrigin(origin, zoom) {\n let size = this.viewSize(),\n topLeft;\n\n const originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n return this;\n }\n\n _getOrigin(invalidate) {\n let size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n }\n\n _setExtent(newExtent) {\n let raw = Extent.create(newExtent);\n let se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n const extent = new Extent(raw.nw, se);\n this.center(extent.center());\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n let zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n let topLeft = this.locationToLayer(extent.nw, zoom);\n let bottomRight = this.locationToLayer(extent.se, zoom);\n let layerWidth = math.abs(bottomRight.x - topLeft.x);\n let layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n }\n\n _getExtent() {\n let nw = this._getOrigin();\n let bottomRight = this.locationToLayer(nw);\n let size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n let se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n }\n\n _zoomAround(pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n }\n\n _initControls() {\n let controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n }\n\n _createControlElement(options, defaultPosition) {\n let pos = options.position || defaultPosition;\n let posSelector = '.' + renderPos(pos).replace(' ', '.');\n let wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n let div = document.createElement(\"div\");\n addClass(div, 'k-map-controls ' + renderPos(pos));\n wrap = div;\n this.element.appendChild(wrap);\n }\n\n let div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n }\n\n _createAttribution(options) {\n let element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n }\n\n _createNavigator(options) {\n let element = this._createControlElement(options, 'topLeft');\n let navigator = this.navigator = new Navigator(element, deepExtend({}, options, { icons: this.options.icons }));\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n }\n\n _navigatorPan(e) {\n let scroller = this.scroller;\n let x = scroller.scrollLeft + e.x;\n let y = scroller.scrollTop - e.y;\n let bounds = this._virtualSize;\n let width = this.element.clientWidth;\n let height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n }\n\n _navigatorCenter() {\n this.center(this.options.center);\n }\n\n _createZoomControl(options) {\n let element = this._createControlElement(options, 'topLeft');\n let zoomControl = this.zoomControl = new ZoomControl(element, options, this.options.icons);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n }\n\n _zoomControlChange(e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n\n _initScroller() {\n let friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n let zoomable = this.options.zoomable !== false;\n let scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n }\n\n _initLayers() {\n let defs = this.options.layers,\n layers = this.layers = [];\n\n for (let i = 0; i < defs.length; i++) {\n let options = defs[i];\n\n const layer = this._createLayer(options);\n layers.push(layer);\n }\n }\n\n _createLayer(options) {\n let type = options.type || 'shape';\n let layerDefaults = this.options.layerDefaults[type];\n let layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options, { icons: this.options.icons }) :\n deepExtend({}, layerDefaults, options);\n\n let layerConstructor = layersMap[type];\n let layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n }\n\n _createTooltip() {\n return new Tooltip(this.widgetService, this.options.tooltip);\n }\n\n /* eslint-disable arrow-body-style */\n _initMarkers() {\n const markerLayers = (this.options.layers || []).filter(x => {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, deepExtend({}, this.options.markerDefaults, { icons: this.options.icons }));\n this.markers.add(this.options.markers);\n }\n /* eslint-enable arrow-body-style */\n\n _scroll(e) {\n let origin = this.locationToLayer(this._viewOrigin).round();\n let movable = e.sender.movable;\n let offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._tooltip.offset = offset;\n this.hideTooltip();\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _scrollEnd(e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n }\n\n _panComplete() {\n return now() - (this._panEndTimestamp || 0) > 50;\n }\n\n _scaleStart(e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n let touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n }\n\n _scale(e) {\n let scale = this.scroller.movable.scale;\n let zoom = this._scaleToZoom(scale);\n let gestureCenter = new g.Point(e.center.x, e.center.y);\n let centerLocation = this.viewToLocation(gestureCenter, zoom);\n let centerPoint = this.locationToLayer(centerLocation, zoom);\n let originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n\n _scaleToZoom(scaleDelta) {\n let scale = this._layerSize() * scaleDelta;\n let tiles = scale / this.options.minSize;\n let zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n }\n\n _reset() {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n this.hideTooltip();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n }\n\n _resetScroller() {\n let scroller = this.scroller;\n let x = scroller.dimensions.x;\n let y = scroller.dimensions.y;\n let scale = this._layerSize();\n let nw = this.extent().nw;\n let topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n let zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n let xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n let yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n let viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n }\n\n // kept for API compatibility, not used\n _renderLayers() {\n }\n\n _layerSize(zoom) {\n const newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n }\n\n _tap(e) {\n if (!this._panComplete()) {\n return;\n }\n\n let cursor = this.eventOffset(e);\n this.hideTooltip();\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n }\n\n _doubleTap(e) {\n let options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n\n _mousewheel(e) {\n let delta = mousewheelDelta(e) > 0 ? -1 : 1;\n let options = this.options;\n let fromZoom = this.zoom();\n let toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n let cursor = this.eventOffset(e);\n let location = this.viewToLocation(cursor);\n let postZoom = this.locationToLayer(location, toZoom);\n let origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n }\n\n _toDocumentCoordinates(point) {\n const offset = elementOffset(this.element);\n\n return {\n left: round(point.x + offset.left),\n top: round(point.y + offset.top)\n };\n }\n}\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n icons: {\n type: \"font\",\n svgIcons: {}\n },\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","class MapService {\n constructor(widget, context = {}) {\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n }\n\n notify(name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n }\n}\n\nexport default MapService;\n","import { deepExtend } from '../common';\n\nconst max = (array, mapFn) => Math.max.apply(null, array.map(mapFn));\nconst min = (array, mapFn) => Math.min.apply(null, array.map(mapFn));\nconst sum = (array, mapFn) => array.map(mapFn).reduce((acc, curr) => (acc + curr), 0);\nconst sortAsc = (a, b) => a.y0 - b.y0;\nconst sortSource = (a, b) => sortAsc(a.source, b.source);\nconst sortTarget = (a, b) => sortAsc(a.target, b.target);\nconst value = (node) => node.value;\n\nfunction sortLinks(nodes) {\n nodes.forEach((node) => {\n const { sourceLinks, targetLinks } = node;\n sourceLinks.sort(sortTarget);\n targetLinks.sort(sortSource);\n });\n}\n\nclass Sankey {\n constructor(options) {\n const offset = options.nodesOptions.offset || {};\n this.data = {\n nodes: options.nodes.map((node) => deepExtend({}, { offset }, node)),\n links: options.links.map((link) => deepExtend({}, link))\n };\n\n this.width = options.width;\n this.height = options.height;\n this.offsetX = options.offsetX || 0;\n this.offsetY = options.offsetY || 0;\n this.nodeWidth = options.nodesOptions.width;\n this.nodePadding = options.nodesOptions.padding;\n }\n\n calculate() {\n const { nodes, links } = this.data;\n this.connectLinksToNodes(nodes, links);\n this.calculateNodeValues(nodes);\n this.calculateNodeDepths(nodes);\n\n const columns = this.calculateNodeColumns(nodes);\n this.calculateNodeBreadths(columns);\n this.applyNodesOffset(nodes);\n this.calculateLinkBreadths(nodes);\n\n return this.data;\n }\n\n connectLinksToNodes(nodes, links) {\n const nodesMap = new Map();\n\n nodes.forEach((node) => {\n node.sourceLinks = [];\n node.targetLinks = [];\n node.id = node.id !== undefined ? node.id : node.label.text;\n nodesMap.set(node.id, node);\n });\n\n links.forEach((link) => {\n link.source = nodesMap.get(link.sourceId);\n link.target = nodesMap.get(link.targetId);\n link.source.sourceLinks.push(link);\n link.target.targetLinks.push(link);\n });\n }\n\n calculateNodeValues(nodes) {\n nodes.forEach((node) => {\n node.value = Math.max(\n sum(node.sourceLinks, value),\n sum(node.targetLinks, value)\n );\n });\n }\n\n calculateNodeDepths(nodes) {\n let current = new Set(nodes);\n let next = new Set();\n let currDepth = 0;\n while (current.size) {\n const currentNodes = Array.from(current);\n for (let n = 0; n < currentNodes.length; n++) {\n const node = currentNodes[n];\n node.depth = currDepth;\n for (let l = 0; l < node.sourceLinks.length; l++) {\n const link = node.sourceLinks[l];\n next.add(link.target);\n }\n }\n currDepth++;\n current = next;\n next = new Set();\n }\n }\n\n calculateNodeColumns(nodes) {\n const maxDepth = max(nodes, (d) => d.depth);\n const columnWidth = (this.width - this.offsetX - this.nodeWidth) / maxDepth;\n const columns = new Array(maxDepth + 1);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const depth = Math.max(0, Math.min(maxDepth, node.sourceLinks.length ? node.depth : maxDepth));\n node.x0 = this.offsetX + depth * columnWidth;\n node.x1 = node.x0 + this.nodeWidth;\n columns[depth] = columns[depth] || [];\n columns[depth].push(node);\n }\n\n return columns;\n }\n\n calculateNodeBreadths(columns) {\n const kSize = min(columns, (c) => (this.height - this.offsetY - (c.length - 1) * this.nodePadding) / sum(c, value));\n\n for (let c = 0; c < columns.length; c++) {\n const nodes = columns[c];\n let y = this.offsetY;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n node.y0 = y;\n node.y1 = y + node.value * kSize;\n y = node.y1 + this.nodePadding;\n for (let l = 0; l < node.sourceLinks.length; l++) {\n const link = node.sourceLinks[l];\n link.width = link.value * kSize;\n }\n }\n\n y = (this.height - y + this.nodePadding) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n }\n\n for (let c = 0; c < columns.length; c++) {\n sortLinks(columns[c]);\n }\n }\n\n applyNodesOffset(nodes) {\n nodes.forEach((node) => {\n const offsetX = (node.offset ? node.offset.left : 0) || 0;\n const offsetY = (node.offset ? node.offset.top : 0) || 0;\n node.x0 += offsetX;\n node.x1 += offsetX;\n node.y0 += offsetY;\n node.y1 += offsetY;\n });\n }\n\n calculateLinkBreadths(nodes) {\n nodes.forEach((node) => {\n const { sourceLinks, targetLinks } = node;\n let y = node.y0;\n let y1 = y;\n sourceLinks.forEach((link) => {\n link.y0 = y + link.width / 2;\n y += link.width;\n });\n targetLinks.forEach((link) => {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n });\n });\n }\n}\n\nexport const calculateSankey = (options) => new Sankey(options).calculate();\n","import {\n Class,\n deepExtend\n} from '../common';\n\nexport class SankeyElement extends Class {\n constructor(options) {\n super();\n this.options = deepExtend({}, this.options, options);\n this.createVisual();\n }\n\n createVisual() {\n this.visual = this.createElement();\n }\n\n exportVisual() {\n return this.visual;\n }\n\n createElement() {\n const customVisual = this.options.visual;\n let visual;\n\n if (customVisual) {\n visual = customVisual({\n sender: this.getSender(),\n options: this.visualOptions(),\n createVisual: () => this.getElement()\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n }\n\n getSender() {\n return this;\n }\n}\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { SankeyElement } from './element';\nimport { deepExtend } from '../common';\n\nexport class Node extends SankeyElement {\n getElement() {\n const options = this.options;\n const node = options.node;\n const rect = new geometry.Rect([node.x0, node.y0], [node.x1 - node.x0, node.y1 - node.y0]);\n\n return drawing.Path.fromRect(rect, this.visualOptions());\n }\n\n visualOptions() {\n const options = deepExtend({}, this.options, this.options.node);\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: { width: 0 },\n };\n }\n}\n\nexport const nodeColor = (node, nodesColors, index) => node.color || nodesColors[index % nodesColors.length];\n\nexport const resolveNodeOptions = (node, options, nodesColors, index) => {\n const nodeOptions = deepExtend({}, options, options.node);\n return deepExtend({},\n { color: nodeColor(node, nodesColors, index) },\n nodeOptions,\n { node },\n {\n visual: node.visual,\n opacity: node.opacity,\n offset: node.offset,\n color: node.color\n }\n );\n};\n","import { drawing } from '@progress/kendo-drawing';\nimport { SankeyElement } from './element';\nimport { deepExtend } from '../common';\nimport { defined } from '../drawing-utils';\n\nexport class Link extends SankeyElement {\n getElement() {\n const link = this.options.link;\n const { source, target, y0, y1 } = link;\n const xC = (source.x0 + target.x1) / 2;\n\n return new drawing.Path(this.visualOptions())\n .moveTo(source.x1, y0).curveTo([xC, y0], [xC, y1], [target.x0, y1]);\n }\n\n visualOptions() {\n const options = this.options;\n const link = this.options.link;\n return {\n stroke: {\n width: options.link.width,\n color: link.color || options.color,\n opacity: defined(link.opacity) ? link.opacity : options.opacity\n }\n };\n }\n}\n\nexport const resolveLinkOptions = (link, options, sourceNode, targetNode) => {\n const linkOptions = deepExtend({},\n options,\n {\n link,\n opacity: link.opacity,\n color: link.color,\n colorType: link.colorType,\n visual: link.visual,\n highlight: link.highlight\n }\n );\n\n if (linkOptions.colorType === 'source') {\n linkOptions.color = sourceNode.options.fill.color;\n } else if (linkOptions.colorType === 'target') {\n linkOptions.color = targetNode.options.fill.color;\n }\n\n return linkOptions;\n};\n","import { setDefaultOptions, deepExtend } from '../common';\nimport { SankeyElement } from './element';\nimport { Box, TextBox } from '../core';\nconst INSIDE = 'inside';\nconst BEFORE = 'before';\nconst AFTER = 'after';\n\nexport class Label extends SankeyElement {\n getElement() {\n const options = deepExtend({}, this.options, this.options.node.label);\n const { node, totalWidth, position, text, offset } = options;\n\n if (!options.visible || !text) {\n return null;\n }\n\n const nodeBox = new Box(node.x0, node.y0, node.x1, node.y1);\n const visualOptions = this.visualOptions();\n const textbox = new TextBox(text, visualOptions);\n textbox.reflow(new Box());\n const textSizeBox = textbox.box;\n\n const goesOutside = node.x1 + textSizeBox.width() > totalWidth;\n const textY = nodeBox.center().y - (textSizeBox.height() / 2);\n const side = position === BEFORE || (position === INSIDE && goesOutside) ? BEFORE : AFTER;\n const textOrigin = [side === BEFORE ? node.x0 - textSizeBox.width() : node.x1, textY];\n\n const textRect = new Box(textOrigin[0], textOrigin[1], textOrigin[0] + textSizeBox.width(), textOrigin[1] + textSizeBox.height());\n textRect.translate(offset.left || 0, offset.top || 0);\n textbox.reflow(textRect);\n\n textbox.renderVisual();\n\n return textbox.visual;\n }\n\n visualOptions() {\n const options = deepExtend({}, this.options, this.options.node.label);\n return {\n color: options.color,\n opacity: options.opacity,\n font: options.font,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n align: options.align,\n };\n }\n}\n\nsetDefaultOptions(Label, {\n position: INSIDE, // inside, before, after\n});\n\nexport const resolveLabelOptions = (node, options, totalWidth) => deepExtend({},\n options,\n {\n node,\n totalWidth,\n visual: node.label.visual,\n visible: node.label.visible,\n margin: node.label.margin,\n padding: node.label.padding,\n border: node.label.border,\n align: node.label.align,\n opacity: node.label.opacity,\n offset: node.label.offset\n }\n);\n","import { Title as ChartTitle } from \"../core\";\nimport { SankeyElement } from \"./element\";\nimport { setDefaultOptions, getSpacing } from '../common';\nimport { CENTER, TOP } from \"../common/constants\";\n\nexport class Title extends SankeyElement {\n getElement() {\n const options = this.options;\n const { drawingRect, text } = options;\n\n if (options.visible === false || !text) {\n return null;\n }\n\n const title = ChartTitle.buildTitle(text, options);\n\n title.reflow(drawingRect);\n\n title.renderVisual();\n return title.visual;\n }\n\n createElement() {\n return this.getElement();\n }\n}\n\nsetDefaultOptions(Title, {\n position: TOP, // 'top', 'bottom'\n align: CENTER, // 'left', 'right', 'center'\n opacity: 1,\n border: {\n width: 0\n },\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n","import { default as ChartLegend } from \"../chart/legend/legend\";\nimport { SankeyElement } from \"./element\";\nimport { setDefaultOptions } from '../common';\nimport { nodeColor } from \"./node\";\nimport { BOTTOM, CENTER, POINTER } from \"../common/constants\";\nimport { AREA } from \"../chart/constants\";\n\nexport class Legend extends SankeyElement {\n getElement() {\n const options = this.options;\n const { drawingRect, nodes = [], colors = [] } = options;\n\n if (options.visible === false || !nodes.length) {\n return null;\n }\n\n const data = nodes.map((node, index) => ({\n text: (node.label && node.label.text) || '',\n area: { background: nodeColor(node, colors, index), opacity: node.opacity },\n node: node,\n }));\n\n const legend = new ChartLegend(Object.assign({}, options, {data}));\n legend.reflow(drawingRect);\n\n legend.renderVisual();\n return legend.visual;\n }\n\n createElement() {\n return this.getElement();\n }\n}\n\nsetDefaultOptions(Legend, {\n markers: { visible: false },\n item: {\n type: AREA,\n cursor: POINTER,\n opacity: 1\n },\n position: BOTTOM,\n align: CENTER,\n border: {\n width: 0\n }\n});\n","import { drawing } from '@progress/kendo-drawing';\nimport { deepExtend, addClass, setDefaultOptions } from '../common';\nimport { calculateSankey } from './calculation';\nimport { Node, resolveNodeOptions } from './node';\nimport { Link, resolveLinkOptions } from './link';\nimport { Label, resolveLabelOptions } from './label';\nimport { Title } from './title';\nimport { BOTTOM, LEFT, RIGHT, TOP } from '../common/constants';\nimport Box from '../core/box';\nimport rectToBox from '../core/utils/rect-to-box';\nimport { Observable } from '../common/observable';\nimport { Legend } from './legend';\n\nconst LINK = 'link';\nconst NODE = 'node';\n\nexport class Sankey extends Observable {\n constructor(element, options, theme) {\n super();\n\n this._initElement(element);\n this._initTheme(theme);\n this._setOptions(options);\n this._initSurface();\n\n if (options && options.data) {\n this._redraw();\n }\n\n this._initResizeObserver();\n }\n\n destroy() {\n this.unbind();\n this._destroySurface();\n this._destroyResizeObserver();\n }\n\n _initElement(element) {\n this.element = element;\n addClass(this.element, [ \"k-chart\", \"k-sankey\" ]);\n }\n\n _initSurface() {\n if (!this.surface) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n }\n\n _initResizeObserver() {\n const observer = new ResizeObserver((entries) => {\n entries.forEach(entry => {\n const { width, height } = entry.contentRect;\n if (entry.target !== this.element ||\n (this.size.width === width && this.size.height === height)) {\n return;\n }\n this.size = { width, height };\n this.surface.setSize(this.size);\n this._redraw();\n });\n });\n this._resizeObserver = observer;\n observer.observe(this.element);\n }\n\n _createSurface() {\n return drawing.Surface.create(this.surfaceElement, {\n mouseenter: this._mouseenter.bind(this),\n mouseleave: this._mouseleave.bind(this)\n });\n }\n\n _initTheme(theme) {\n let currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n this.options = deepExtend({}, currentTheme, this.options);\n }\n\n setLinksOpacity(opacity) {\n this.linksVisuals.forEach(link => {\n this.setOpacity(link, opacity);\n });\n }\n\n setOpacity(link, opacity) {\n link.options.set('stroke', Object.assign({}, link.options.stroke, {opacity}));\n }\n\n trigger(name, ev) {\n ev.type = name;\n return super.trigger(name, ev);\n }\n\n _mouseenter(ev) {\n const element = ev.element;\n const isLink = element.type === LINK;\n const isNode = element.type === NODE;\n const isLegendItem = Boolean(element.chartElement && element.chartElement.options.node);\n\n if ((isLink && this.trigger('linkEnter', ev)) ||\n (isNode && this.trigger('nodeEnter', ev))) {\n return;\n }\n\n const { highlight } = this.options.links;\n if (isLink) {\n this.setLinksOpacity(highlight.inactiveOpacity);\n this.setOpacity(element, highlight.opacity);\n } else if (isNode) {\n this.highlightLinks(element, highlight);\n } else if (isLegendItem) {\n const nodeVisual = this.nodesVisuals.get(element.chartElement.options.node.id);\n this.highlightLinks(nodeVisual, highlight);\n }\n }\n\n _mouseleave(ev) {\n const element = ev.element;\n const isLink = element.type === LINK;\n const isNode = element.type === NODE;\n const isLegendItem = Boolean(element.chartElement && element.chartElement.options.node);\n const target = ev.originalEvent.relatedTarget;\n\n if (isLink && target && target.nodeName === 'text') {\n return;\n }\n\n if ((isLink && this.trigger('linkLeave', ev)) ||\n (isNode && this.trigger('nodeLeave', ev))) {\n return;\n }\n\n if (isLink || isNode || isLegendItem) {\n this.setLinksOpacity(this.options.links.opacity);\n }\n }\n\n highlightLinks(node, highlight) {\n if (node) {\n this.setLinksOpacity(highlight.inactiveOpacity);\n node.links.forEach(link => {\n this.setOpacity(link, highlight.opacity);\n });\n }\n }\n\n _destroySurface() {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n }\n\n _destroyResizeObserver() {\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = null;\n }\n }\n\n _initSurfaceElement() {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n }\n\n _destroySurfaceElement() {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n }\n\n setOptions(options, theme) {\n this._setOptions(options);\n this._initTheme(theme);\n this._initSurface();\n this._redraw();\n }\n\n _redraw() {\n this.surface.clear();\n\n const { width, height } = this._getSize();\n this.size = { width, height };\n this.surface.setSize(this.size);\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n }\n\n _getSize() {\n return this.element.getBoundingClientRect();\n }\n\n createVisual() {\n this.visual = this._render();\n }\n\n titleBox(title, drawingRect) {\n if (!title || title.visible === false || !title.text) {\n return null;\n }\n\n const titleElement = new Title(Object.assign({}, {drawingRect}, title));\n const titleVisual = titleElement.exportVisual();\n return titleVisual.chartElement.box;\n }\n\n legendBox(options, nodes, drawingRect) {\n if (!options || options.visible === false) {\n return null;\n }\n\n const legend = new Legend(Object.assign({}, {nodes}, options, {drawingRect}));\n const legendVisual = legend.exportVisual();\n\n return legendVisual.chartElement.box;\n }\n\n calculateSankey(options) {\n const { title, legend, data } = this.options;\n const { nodes, labels, nodesColors } = this.options;\n\n const sankeyBox = new Box(0, 0, options.width, options.height);\n const titleBox = this.titleBox(title, sankeyBox);\n\n let legendArea = sankeyBox.clone();\n\n if (titleBox) {\n const titleHeight = titleBox.height();\n if (title.position === TOP) {\n sankeyBox.unpad({ top: titleHeight });\n legendArea = new Box(0, titleHeight, options.width, options.height);\n } else {\n sankeyBox.shrink(0, titleHeight);\n legendArea = new Box(0, 0, options.width, options.height - titleHeight);\n }\n }\n\n const legendBox = this.legendBox(legend, data.nodes, legendArea);\n\n if (legendBox) {\n if (legend.position === LEFT) {\n sankeyBox.unpad({ left: legendBox.width() });\n }\n\n if (legend.position === RIGHT) {\n sankeyBox.shrink(legendBox.width(), 0);\n }\n\n if (legend.position === TOP) {\n sankeyBox.unpad({ top: legendBox.height() });\n }\n\n if (legend.position === BOTTOM) {\n sankeyBox.shrink(0, legendBox.height());\n }\n }\n\n const calculatedNodes = calculateSankey(Object.assign({}, options, {offsetX: sankeyBox.x1, offsetY: sankeyBox.y1, width: sankeyBox.x2, height: sankeyBox.y2})).nodes;\n const box = new Box();\n\n calculatedNodes.forEach((nodeEl, i) => {\n const nodeOps = resolveNodeOptions(nodeEl, nodes, nodesColors, i);\n const nodeInstance = new Node(nodeOps);\n box.wrap(rectToBox(nodeInstance.exportVisual().rawBBox()));\n\n const labelInstance = new Label(deepExtend({ node: nodeEl, totalWidth: options.width }, labels));\n const labelVisual = labelInstance.exportVisual();\n if (labelVisual) {\n box.wrap(rectToBox(labelVisual.rawBBox()));\n }\n });\n\n let offsetX = (box.x1 < 0 ? -box.x1 : 0) + sankeyBox.x1;\n let offsetY = (box.y1 < 0 ? -box.y1 : 0) + sankeyBox.y1;\n\n let width = box.width() > sankeyBox.x2 ? offsetX + sankeyBox.x2 - (box.width() - sankeyBox.x2) : sankeyBox.x2;\n let height = box.height() > sankeyBox.y2 ? offsetY + sankeyBox.y2 - (box.height() - sankeyBox.y2) : sankeyBox.y2;\n\n return {\n sankey: calculateSankey(Object.assign({}, options, {offsetX, offsetY, width, height})),\n legendBox,\n titleBox\n };\n }\n\n _render() {\n const { data, labels: labelOptions, nodes: nodesOptions, links: linkOptions, nodesColors, title, legend } = this.options;\n const { width, height } = this.size;\n const calcOptions = Object.assign({}, data, {width, height, nodesOptions, title, legend});\n const { sankey, titleBox, legendBox } = this.calculateSankey(calcOptions);\n const { nodes, links } = sankey;\n\n const visual = new drawing.Group();\n\n if (titleBox) {\n const titleElement = new Title(Object.assign({}, title, {drawingRect: titleBox}));\n const titleVisual = titleElement.exportVisual();\n visual.append(titleVisual);\n }\n\n if (legendBox) {\n const legendElement = new Legend(Object.assign({}, legend, {drawingRect: legendBox, nodes, colors: nodesColors}));\n const legendVisual = legendElement.exportVisual();\n visual.append(legendVisual);\n }\n\n const visualNodes = new Map();\n\n nodes.forEach((node, i) => {\n const nodeOps = resolveNodeOptions(node, nodesOptions, nodesColors, i);\n\n const nodeInstance = new Node(nodeOps);\n const nodeVisual = nodeInstance.exportVisual();\n nodeVisual.links = [];\n nodeVisual.type = NODE;\n visualNodes.set(node.id, nodeVisual);\n\n visual.append(nodeVisual);\n });\n\n const sortedLinks = links.slice().sort((a, b) => b.value - a.value);\n\n const linksVisuals = [];\n\n sortedLinks.forEach(link => {\n const { source, target } = link;\n const sourceNode = visualNodes.get(source.id);\n const targetNode = visualNodes.get(target.id);\n const linkOps = resolveLinkOptions(link, linkOptions, sourceNode, targetNode);\n const linkInstance = new Link(linkOps);\n const linkVisual = linkInstance.exportVisual();\n\n linkVisual.type = LINK;\n linksVisuals.push(linkVisual);\n\n sourceNode.links.push(linkVisual);\n targetNode.links.push(linkVisual);\n\n visual.append(linkVisual);\n });\n\n this.linksVisuals = linksVisuals;\n this.nodesVisuals = visualNodes;\n\n nodes.forEach((node) => {\n const textOps = resolveLabelOptions(node, labelOptions, width);\n const labelInstance = new Label(textOps);\n const labelVisual = labelInstance.exportVisual();\n\n if (labelVisual) {\n visual.append(labelVisual);\n }\n });\n\n return visual;\n }\n\n exportVisual() {\n return this._render();\n }\n\n _setOptions(options) {\n this.options = deepExtend({}, this.options, options);\n }\n}\n\nsetDefaultOptions(Sankey, {\n labels: {\n visible: true,\n margin: {\n left: 8,\n right: 8\n },\n padding: 0,\n border: {\n width: 0\n },\n align: LEFT,\n opacity: 1,\n offset: { left: 0, top: 0 }\n },\n nodes: {\n width: 24,\n padding: 16,\n opacity: 1,\n offset: { left: 0, top: 0 }\n },\n links: {\n colorType: 'static', // 'source', 'target', 'static'\n opacity: 0.4,\n highlight: {\n opacity: 0.8,\n inactiveOpacity: 0.2\n }\n }\n});\n","import { AREA, LINE } from './constants';\nimport { INHERIT } from '../common/constants';\n\nconst BAR_GAP = 1.5;\nconst BAR_SPACING = 0.4;\nconst BLACK = '#000';\nconst SANS = 'Arial, Helvetica, sans-serif';\nconst SANS11 = \"11px \" + SANS;\nconst SANS12 = '12px ' + SANS;\nconst SANS16 = '16px ' + SANS;\nconst TRANSPARENT = 'transparent';\nconst WHITE = '#fff';\n\nconst lineSeriesLegendItem = {\n type: LINE\n};\n\nconst areaSeriesLegendItem = {\n type: AREA\n};\n\nconst areaNoMarkersSeriesLegendItem = Object.assign({}, areaSeriesLegendItem,\n {markers: {\n visible: false\n },\n highlight: {\n visible: false\n }});\n\nconst notes = () => ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n visible: true\n});\n\nconst axisDefaults = () => ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n});\n\nconst areaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n});\n\nconst rangeAreaSeries = () => ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.4\n});\n\nconst barSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem,\n});\n\nconst boxPlotSeries = () => ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n});\n\nconst bubbleSeries = () => ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n opacity: 0.6\n});\n\nconst bulletSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n },\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst candlestickSeries = () => ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n});\n\nconst columnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst radarColumnSeries = () => ({\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst polarScatterSeries = () => ({\n legendItem: lineSeriesLegendItem\n});\n\nconst scatterSeries = () => ({\n legendItem: lineSeriesLegendItem\n});\n\nconst donutSeries = () => ({\n margin: 1,\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst lineSeries = () => ({\n width: 2,\n legendItem: lineSeriesLegendItem\n});\n\nconst ohlcSeries = () => ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: 0.3\n});\n\nconst radarAreaSeries = () => ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n legendItem: areaSeriesLegendItem,\n opacity: 0.5\n});\n\nconst radarLineSeries = () => ({\n markers: {\n visible: false\n },\n legendItem: lineSeriesLegendItem,\n width: 2\n});\n\nconst rangeBarSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst rangeColumnSeries = () => ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst scatterLineSeries = () => ({\n width: 1,\n legendItem: lineSeriesLegendItem\n});\n\nconst waterfallSeries = () => ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n legendItem: areaNoMarkersSeriesLegendItem,\n spacing: BAR_SPACING\n});\n\nconst pieSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst funnelSeries = () => ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst pyramidSeries = funnelSeries;\n\nconst heatmapSeries = () => ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n },\n legendItem: areaNoMarkersSeriesLegendItem\n});\n\nconst trendlineSeriesDefaults = (options) => Object.assign({\n color: INHERIT,\n trendline: {},\n markers: {\n visible: false\n },\n width: 1,\n dashType: 'longDash',\n legendItem: lineSeriesLegendItem\n}, options);\n\nconst seriesDefaults = (options) => ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n pyramid: pyramidSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n radarColumn: radarColumnSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n polarScatter: polarScatterSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatter: scatterSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries(),\n linearTrendline: trendlineSeriesDefaults(),\n exponentialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n logarithmicTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n polynomialTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n powerTrendline: trendlineSeriesDefaults({ style: 'smooth' }),\n movingAverageTrendline: trendlineSeriesDefaults()\n});\n\nconst title = () => ({\n font: SANS16\n});\n\nconst subtitle = () => ({\n font: SANS12\n});\n\nconst legend = () => ({\n labels: {\n font: SANS12\n }\n});\n\nexport const baseTheme = (options = {}) => ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n});\n\n","/**\n * @hidden\n */\nexport const isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n","/* tslint:disable:object-literal-sort-keys max-line-length */\nimport { isWindowAvailable } from './util';\nconst agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)(\\.(\\d+(\\.\\d+)?))?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n};\nconst osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n};\nconst desktopBrowserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\nconst mobileBrowserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n};\nconst testRx = (agent, rxs, dflt) => {\n for (let rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n};\n/**\n * A function that detects the mobile browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.3 Chrome/61.0.3163.81 Mobile Safari/537.36';\n * detectMobileOS(userAgent); // { android: true };\n * ```\n */\nexport const detectMobileOS = (ua) => {\n let minorVersion;\n let match = [];\n for (let agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (!match) {\n continue;\n }\n if (agent === 'windows' && 'plugins' in window.navigator) {\n return null;\n } // Break if not Metro/Mobile Windows\n const os = {};\n os.device = agent;\n os.browser = testRx(ua, mobileBrowserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3] ? match[3].replace('_', '.') : '.0';\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion +\n (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0'));\n os.cordova = typeof window.PhoneGap !== undefined\n || typeof window.cordova !== undefined; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone\n || (/file|local|wmapp/).test(window.location.protocol)\n || os.cordova; // Use file protocol to detect appModes.\n return os;\n }\n }\n return null;\n};\n/**\n * A function that detects the desktop browser based on the given UserAgent.\n *\n * @param ua - The user agent string.\n * @returns - A browser info object containing the browser type and version.\n *\n * @example\n * ```ts-no-run\n * const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19';\n * detectDesktopBrowser(userAgent); // { chrome: true, webkit: true };\n * ```\n */\nexport const detectDesktopBrowser = (ua) => {\n let browserInfo = null;\n let match = [];\n for (let agent in desktopBrowserRxs) {\n if (desktopBrowserRxs.hasOwnProperty(agent)) {\n match = ua.match(desktopBrowserRxs[agent]);\n if (match) {\n browserInfo = {};\n browserInfo[agent] = true;\n browserInfo[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browserInfo.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browserInfo;\n};\nconst userAgent = isWindowAvailable() && window.navigator ? window.navigator.userAgent : null;\n/**\n * A constant holding the desktop browser info. The variable persists the result of the detectDesktopBrowser(window.navigator.userAgent) call.\n * If no desktop browser is detected, the constant will be `null`.\n */\nexport const browser = userAgent ? detectDesktopBrowser(userAgent) : null;\n/**\n * A constant holding the mobile OS info. The variable persists the result of the detectMobileOS(window.navigator.userAgent) call.\n * If no mobile OS is detected, the constant will be `null`.\n */\nexport const mobileOS = userAgent ? detectMobileOS(userAgent) : null;\n/**\n * A constant reporting the browser `touch` events support.\n */\nexport const touch = isWindowAvailable() && 'ontouchstart' in window;\n/**\n * @hidden\n * A constant reporting the browser `msPointers` events support.\n */\nexport const msPointers = browser && !browser.chrome && window.MSPointerEvent;\n/**\n * A constant reporting the browser `pointers` events support.\n */\nexport const pointers = browser && !browser.chrome && window.PointerEvent;\n/**\n * A constant reporting whether the browser is touch enabled.\n */\nexport const touchEnabled = mobileOS && (touch || msPointers || pointers);\n","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n/**\n * @hidden\n */\nexport function fieldList(field) {\n const fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","import { fieldList } from './field-list';\nconst getterCache = {};\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = fieldList(field);\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","import { fieldList } from './field-list';\nconst setterCache = {};\n// tslint:disable-next-line:no-string-literal\nsetterCache['undefined'] = obj => obj;\nconst defaultValue = (nextField, options) => options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n/**\n * @hidden\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n const fields = fieldList(field);\n setterCache[field] = (obj, value, options) => {\n let root = obj;\n const depth = fields.length - 1;\n for (let idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","/**\n * @hidden\n */\nexport const isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nexport const isBlank = (value) => value === null || value === undefined;\n/**\n * @hidden\n */\nexport const isArray = (value) => Array.isArray(value);\n/**\n * @hidden\n */\nexport const isFunction = (value) => typeof value === 'function';\n/**\n * @hidden\n */\nexport const isString = (value) => typeof value === 'string';\n/**\n * @hidden\n */\nexport const isTruthy = (value) => !!value;\n/**\n * @hidden\n */\nexport const isNullOrEmptyString = (value) => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nexport const isNotNullOrEmptyString = (value) => !isNullOrEmptyString(value);\n/**\n * @hidden\n */\nexport const isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * @hidden\n */\nexport const isDate = (value) => value && value.getTime;\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport const isCompositeFilterDescriptor = (source) => {\n return isPresent(source.filters);\n};\n","/**\n * @hidden\n */\nexport const ifElse = (predicate, right, left) => value => predicate(value) ? right(value) : left(value);\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport const compose = (...args) => (data) => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nexport const constant = x => () => x;\n/**\n * @hidden\n */\nexport const identity = x => x;\n","import { isPresent } from './utils';\nconst getterCache = {};\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport const getter = (field, safe) => {\n const key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = obj => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nconst serializeSort = (orderby) => {\n const str = orderby\n .filter(sort => isPresent(sort.dir))\n .map(sort => {\n const order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? `$orderby=${str}` : str;\n};\nconst emptyString = constant('');\nconst concat = a => b => a + b;\nconst serializeKey = (strings, val) => ifElse(isPresent, concat(strings[0]), emptyString)(val);\nconst rules = (settings, state) => (key) => ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey `$skip=${state.skip}`,\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey `$top=${state.take}`\n}[key]);\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport const toODataString = (state, settings = {}) => (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n","import { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nconst toQueryString = values => values.reduce((acc, [key, value]) => [...acc, `${key}=${value}`], []);\nconst toObject = values => values.reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [key]: value })), {});\nconst pairwise = key => value => [key, value];\nconst empty = () => null;\nconst isNotEmptyArray = value => isPresent(value) && isArray(value) && value.length > 0;\nconst has = accessor => value => isPresent(accessor(value));\nconst isNotEmpty = accessor => value => isNotEmptyArray(accessor(value));\nconst runOrEmpty = (predicate, fn) => ifElse(predicate, fn, empty);\nconst calcPage = ({ skip, take }) => Math.floor((skip || 0) / take) + 1;\nconst formatDescriptors = (accessor, formatter) => state => (accessor(state).map(formatter).join(\"~\"));\nconst removeAfter = (what) => (str) => str.slice(0, str.indexOf(what));\nconst replace = (patterns) => compose(...patterns.map(([left, right]) => (s) => s.replace(new RegExp(left, \"g\"), right)));\nconst sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nconst removeAfterDot = removeAfter(\".\");\nconst directionFormatter = ({ field, dir = \"asc\" }) => `${field}-${dir}`;\nconst aggregateFormatter = ({ field, aggregate }) => `${field}-${aggregate}`;\nconst take = getter(\"take\");\nconst aggregates = getter(\"aggregates\");\nconst skip = getter(\"skip\");\nconst group = getter(\"group\");\nconst sort = getter(\"sort\", true);\nconst formatSort = formatDescriptors(sort, directionFormatter);\nconst formatGroup = formatDescriptors(group, directionFormatter);\nconst formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nconst prefixDateValue = value => `datetime'${value}'`;\nconst formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nconst formatDate = ({ field, value, ignoreCase, operator }) => ({\n value: formatDateValue(value),\n field,\n ignoreCase,\n operator\n});\nconst normalizeSort = (state) => Object.assign({}, state, {\n sort: (sort(state) || []).filter(({ dir }) => isNotNullOrEmptyString(dir))\n});\nconst transformSkip = compose(pairwise('page'), calcPage);\nconst transformTake = compose(pairwise('pageSize'), take);\nconst transformGroup = compose(pairwise('group'), formatGroup);\nconst transformSort = compose(pairwise('sort'), formatSort);\nconst transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nconst serializePage = runOrEmpty(has(skip), transformSkip);\nconst serializePageSize = runOrEmpty(has(take), transformTake);\nconst serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nconst serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nconst serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nconst hasField = ({ field }) => isNotNullOrEmptyString(field);\nconst filterFormatter = ({ field, operator, value }) => `${field}~${operator}~${value}`;\nconst dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nconst typedFormatter = encode => runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\nconst join = ({ logic }) => `~${logic}~`;\nconst serialize = encode => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter), join);\nconst serializeFilter = ({ filter }, encode) => {\n if (filter && filter.filters) {\n const filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nconst rules = (state, encode = true) => key => ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n}[key]);\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport const toDataSourceRequestString = (state) => (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&'));\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport const toDataSourceRequest = (state) => (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent)));\n","import { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport const wrapIf = predicate => (str, ...args) => predicate() ? `${str[0]}${args[0]}${str[1]}` : args[0];\n/**\n * @hidden\n */\nexport const toUTC = (date) => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n/**\n * @hidden\n */\nexport const quote = ({ field, value, ignoreCase, operator }) => ({\n value: `'${value.replace(/'/g, \"''\")}'`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const encodeValue = ({ field, value, ignoreCase, operator }) => ({\n value: `${encodeURIComponent(value)}`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const toLower = ({ field, value, ignoreCase, operator }) => ({\n field: wrapIf(() => ignoreCase) `tolower(${field})`,\n value,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const normalizeField = ({ field, value, ignoreCase, operator }) => ({\n value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const isStringValue = x => isString(x.value);\n/**\n * @hidden\n */\nexport const isDateValue = x => isDate(x.value);\n/**\n * @hidden\n */\nexport const serializeFilters = (map, join) => (filter) => {\n const brackets = wrapIf(() => filter.filters.length > 1);\n return brackets `(${filter.filters\n .map(map)\n .join(join(filter))})`;\n};\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nconst set = (field, target, value) => {\n target[field] = value;\n return target;\n};\nconst toCamelCase = str => str.replace(/(^[A-Z])/g, (_, g1) => g1.toLowerCase());\nconst prop = (fieldName) => (obj) => {\n const value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n};\nconst member = prop(\"Member\");\nconst aggregateMethodName = prop(\"AggregateMethodName\");\nconst value = prop(\"Value\");\nconst convert = mapper => values => Object.keys(values).reduce(mapper.bind(null, values), {});\nconst translateAggregate = convert((source, acc, field) => set(field.toLowerCase(), acc, source[field]));\nconst translateAggregates = convert((source, acc, field) => set(field, acc, translateAggregate(source[field])));\nconst valueOrDefault = (value, defaultValue) => isPresent(value) ? value : defaultValue;\nconst normalizeGroup = group => ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n});\nconst translateGroup = compose(({ field, hasSubgroups, value, aggregates, items }) => ({\n aggregates: translateAggregates(aggregates),\n field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value\n}), normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport const translateDataSourceResultGroups = (data) => data.map(translateGroup);\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport const translateAggregateResults = (data) => ((data || []).reduce((acc, x) => set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))), {}));\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nconst compare = (a, b) => {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nconst compareDesc = (a, b) => compare(b, a);\nconst descriptorAsFunc = (descriptor) => {\n if (typeof descriptor.compare === 'function') {\n return descriptor.compare;\n }\n const prop = getter(descriptor.field, true);\n return (a, b) => (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b));\n};\nconst initial = (_a, _b) => 0;\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport const composeSortDescriptors = (descriptors) => (descriptors\n .filter(x => isPresent(x.dir) || isPresent(x.compare))\n .map((descriptor) => descriptorAsFunc(descriptor))\n .reduce((acc, curr) => (a, b) => acc(a, b) || curr(a, b), initial));\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nconst valueToString = (value) => {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport const groupCombinator = (field) => {\n const prop = getter(field, true);\n let position = 0;\n return (agg, value) => {\n agg[field] = agg[field] || {};\n const groupValue = prop(value);\n const key = valueToString(groupValue);\n const values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport const expandAggregates = (result = {}) => {\n Object.keys(result).forEach(field => {\n const aggregates = result[field];\n Object.keys(aggregates).forEach(aggregate => {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nconst aggregatesFuncs = (name) => ({\n average: () => {\n let value = 0;\n let count = 0;\n return {\n calc: (curr) => {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: () => isNumeric(value) ? value / count : value\n };\n },\n count: () => {\n let state = 0;\n return {\n calc: () => state++,\n result: () => state\n };\n },\n max: () => {\n let state = Number.NEGATIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n min: () => {\n let state = Number.POSITIVE_INFINITY;\n return {\n calc: (value) => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n sum: () => {\n let state = 0;\n return {\n calc: (value) => {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: () => state\n };\n }\n}[name]());\n/**\n * @hidden\n */\nexport const aggregatesCombinator = (descriptors) => {\n const functions = descriptors.map(descriptor => {\n const fieldAccessor = getter(descriptor.field, true);\n const aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n const aggregateAccessor = getter(aggregateName, true);\n return (state, value) => {\n const fieldAggregates = state[descriptor.field] || {};\n const aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return (state, value) => functions.reduce((agg, calc) => calc(agg, value), state);\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport const concat = (arr, value) => {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport const map = (transform) => ((reduce) => ((acc, curr, index) => reduce(acc, transform(curr, index))));\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport const filter = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : acc));\n/**\n * @hidden\n */\nexport const isTransformerResult = (source) => {\n return isPresent(source.__value);\n};\nconst reduced = (x) => {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const take = (count) => ((reduce) => ((acc, curr) => count-- > 0 ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const takeWhile = (predicate) => ((reduce) => ((acc, curr) => predicate(curr) ? reduce(acc, curr) : reduced(acc)));\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport const skip = (count) => ((reduce) => ((acc, curr) => count-- <= 0 ? reduce(acc, curr) : acc));\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport const exec = (transform, initialValue, data) => {\n let result = initialValue;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nconst identity = map(x => x);\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport const aggregateBy = (data, descriptors = [], transformers = identity) => {\n const initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n const result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nconst operatorMap = (key) => ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key);\nconst normalizeOperator = (descriptor) => {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(filter => {\n const result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nconst normalizeDescriptor = (descriptor) => {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport const normalizeFilters = (descriptor) => {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nconst logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n};\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: (a) => a === '',\n isnotempty: (a) => a !== '',\n isnotnull: (a) => isPresent(a),\n isnull: (a) => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0\n};\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst convertValue = (value, ignoreCase) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nconst typedGetter = (prop, value, ignoreCase) => {\n if (!isPresent(value)) {\n return prop;\n }\n let acc = prop;\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return a => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nconst transformFilter = ({ field, ignoreCase, value, operator }) => {\n field = !isPresent(field) ? a => a : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n const itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n return a => op(itemProp(a), value, ignoreCase);\n};\n/**\n * @hidden\n */\nexport const transformCompositeFilter = (filter) => {\n const combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(x => isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x))\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport const compileFilter = (descriptor) => {\n if (!descriptor || descriptor.filters.length === 0) {\n return () => true;\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport const filterBy = (data, descriptor) => {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport const normalizeGroups = (descriptors) => {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(x => Object.assign({ dir: \"asc\" }, x));\n};\nconst identity = map(x => x);\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport const groupBy = (data, descriptors = [], transformers = identity, originalData = data) => {\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n const descriptor = descriptors[0];\n const initialValue = {};\n const view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n const result = [];\n Object.keys(view).forEach(field => {\n Object.keys(view[field]).forEach(value => {\n const group = view[field][value];\n let aggregateResult = {};\n let filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport const orderBy = (data, descriptors) => {\n if (descriptors.some(x => isPresent(x.dir) || isPresent(x.compare))) {\n data = data.slice(0);\n const comparer = composeSortDescriptors(descriptors);\n data.sort(comparer);\n }\n return data;\n};\nconst defaultComparer = (a, b) => a === b;\nconst normalizeComparer = (comparer) => {\n if (isString(comparer)) {\n const accessor = getter(comparer);\n comparer = (a, b) => accessor(a) === accessor(b);\n }\n return comparer;\n};\nconst _distinct = (data, comparer) => data.filter((x, idx, xs) => xs.findIndex(comparer.bind(null, x)) === idx);\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport const distinct = (data, comparer = defaultComparer) => _distinct(data, normalizeComparer(comparer));\n/**\n * @hidden\n */\nexport const count = (data, predicate) => {\n let counter = 0;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport const limit = (data, predicate) => {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport const process = (data, state) => {\n const { skip: skipCount, take: takeCount, filter: filterDescriptor, sort, group } = state;\n const sortDescriptors = [...normalizeGroups(group || []), ...sort || []];\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n const hasFilters = isPresent(filterDescriptor) && filter.length;\n const hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n let total;\n const transformers = [];\n let predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n const transform = compose(...transformers);\n const result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","const proxy = (a, b) => (e) => b(a(e));\n\nconst bind = (el, event, callback) =>\n el.addEventListener && el.addEventListener(event, callback);\n\nconst unbind = (el, event, callback) =>\n el && el.removeEventListener && el.removeEventListener(event, callback);\n\nconst noop = () => { /* empty */ };\n\nconst preventDefault = e => e.preventDefault();\n\nconst touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nconst IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport class Draggable {\n static supportPointerEvent() {\n return (typeof window !== 'undefined') && window.PointerEvent;\n }\n\n get document() {\n return this._element\n ? this._element.ownerDocument\n : document;\n }\n\n constructor({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = (e) => {\n if (e.touches.length === 1) {\n this._pressHandler(e);\n }\n };\n\n this._touchmove = (e) => {\n if (e.touches.length === 1) {\n this._dragHandler(e);\n }\n };\n\n this._touchend = (e) => {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this._releaseHandler(e);\n this._ignoreMouse = true;\n setTimeout(this._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = () => {\n this._ignoreMouse = false;\n };\n\n this._mousedown = (e) => {\n const { which } = e;\n\n if ((which && which > 1) || this._ignoreMouse) {\n return;\n }\n\n bind(this.document, \"mousemove\", this._mousemove);\n bind(this.document, \"mouseup\", this._mouseup);\n this._pressHandler(e);\n };\n\n this._mousemove = (e) => {\n this._dragHandler(e);\n };\n\n this._mouseup = (e) => {\n unbind(this.document, \"mousemove\", this._mousemove);\n unbind(this.document, \"mouseup\", this._mouseup);\n this._releaseHandler(e);\n };\n\n this._pointerdown = (e) => {\n if (e.isPrimary && e.button === 0) {\n bind(this.document, \"pointermove\", this._pointermove);\n bind(this.document, \"pointerup\", this._pointerup);\n bind(this.document, \"pointercancel\", this._pointerup);\n bind(this.document, \"contextmenu\", preventDefault);\n\n this._pressHandler(e);\n }\n };\n\n this._pointermove = (e) => {\n if (e.isPrimary) {\n this._dragHandler(e);\n }\n };\n\n this._pointerup = (e) => {\n if (e.isPrimary) {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n\n this._releaseHandler(e);\n }\n };\n }\n\n cancelDrag() {\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"pointercancel\", this._pointerup);\n }\n\n bindTo(element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n }\n\n _bindToCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n }\n\n _unbindFromCurrent() {\n const element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(this.document, \"pointermove\", this._pointermove);\n unbind(this.document, \"pointerup\", this._pointerup);\n unbind(this.document, \"contextmenu\", preventDefault);\n unbind(this.document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n }\n\n _usePointers() {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n }\n\n update({ press = noop, drag = noop, release = noop, mouseOnly = false }) {\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._mouseOnly = mouseOnly;\n }\n\n destroy() {\n this._unbindFromCurrent();\n this._element = null;\n }\n}\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport { defined } from '../util';\n\nclass Node extends BaseNode {\n constructor(srcElement) {\n super(srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n initClip() {\n const clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n }\n\n clear() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n super.clear();\n }\n\n clearClip() {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n }\n\n setClip(ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n const clipNode = new NODE_MAP[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n }\n\n optionsChange(e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n super.optionsChange(e);\n }\n\n setTransform(ctx) {\n if (this.srcElement) {\n const transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n }\n\n loadElements(elements, pos, cors) {\n for (let i = 0; i < elements.length; i++) {\n let srcElement = elements[i];\n let children = srcElement.children;\n\n let childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n }\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n }\n\n setOpacity(ctx) {\n if (this.srcElement) {\n const opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n }\n\n globalAlpha(ctx, value) {\n let opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n }\n\n visible() {\n const src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n }\n}\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nclass GroupNode extends traversable(Node, \"childNodes\") {\n renderTo(ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n const childNodes = this.childNodes;\n for (let i = 0; i < childNodes.length; i++) {\n let child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n }\n}\n\nexport default GroupNode;\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nconst FRAME_DELAY = 1000 / 60;\n\nclass RootNode extends traversable(GroupNode, \"childNodes\") {\n constructor(canvas, size) {\n super();\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n const invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(() => {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n destroy() {\n super.destroy();\n this.canvas = null;\n this.ctx = null;\n }\n\n load(elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n }\n\n _rescale(scale) {\n const { canvas, size } = this;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n }\n\n _devicePixelRatio() {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n }\n\n _invalidate(options) {\n if (!this.ctx) {\n return;\n }\n\n const fixedScale = options && options.fixedScale;\n const scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n }\n}\n\nexport default RootNode;\n","import { Class } from '../common';\n\nclass QuadRoot extends Class {\n constructor() {\n super();\n\n this.shapes = [];\n }\n\n _add(shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n }\n\n pointShapes(point) {\n const shapes = this.shapes;\n const length = shapes.length;\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n }\n\n insert(shape, bbox) {\n this._add(shape, bbox);\n }\n\n remove(shape) {\n const shapes = this.shapes;\n const length = shapes.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n }\n}\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nclass QuadNode extends QuadRoot {\n constructor(rect) {\n super();\n this.children = [];\n this.rect = rect;\n }\n\n inBounds(rect) {\n const nodeRect = this.rect;\n const nodeBottomRight = nodeRect.bottomRight();\n const bottomRight = rect.bottomRight();\n const inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n }\n\n pointShapes(point) {\n const children = this.children;\n const length = children.length;\n const result = super.pointShapes(point);\n for (let idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n }\n\n insert(shape, bbox) {\n const children = this.children;\n let inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n }\n\n _initChildren() {\n const { rect, children } = this;\n const center = rect.center();\n const halfWidth = rect.width() / 2;\n const halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n }\n}\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nconst ROOT_SIZE = 3000;\nconst LEVEL_STEP = 10000;\nconst MAX_LEVEL = 75;\n\nclass ShapesQuadTree extends Class {\n\n constructor() {\n super();\n\n this.initRoots();\n }\n\n initRoots() {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n }\n\n clear() {\n const rootElements = this.rootElements;\n for (let idx = 0; idx < rootElements.length; idx++) {\n this.remove(rootElements[idx]);\n }\n this.initRoots();\n }\n\n pointShape(point) {\n const sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n let result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (let idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n }\n\n assignZindex(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n let element = elements[idx];\n let zIndex = 0;\n let levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n let parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n }\n\n optionsChange(e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n }\n\n geometryChange(e) {\n this.bboxChange(e.element);\n }\n\n bboxChange(element) {\n if (element.nodeType === \"Group\") {\n for (let idx = 0; idx < element.children.length; idx++) {\n this.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n }\n\n add(elements) {\n const elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n }\n\n childrenChange(e) {\n if (e.action === \"remove\") {\n for (let idx = 0; idx < e.items.length; idx++) {\n this.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n }\n\n _insert(elements) {\n let element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this._insertShape(element);\n }\n }\n }\n\n _insertShape(shape) {\n const bbox = shape.bbox();\n if (bbox) {\n const sectors = this.getSectors(bbox);\n const x = sectors[0][0];\n const y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n const rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n }\n\n remove(element) {\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n const children = element.children;\n for (let idx = 0; idx < children.length; idx++) {\n this.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n }\n\n inRoot(sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n }\n\n getSectors(rect) {\n const bottomRight = rect.bottomRight();\n const bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n const bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n const sectors = [ [], [] ];\n for (let x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (let y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n }\n}\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","\nexport default function renderPath(ctx, path) {\n const segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n let segment = segments[0];\n let anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (let i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n let prevSeg = segments[i - 1];\n let prevOut = prevSeg.controlOut();\n let controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (let idx = 0; idx < stops.length; idx++) {\n let stop = stops[idx];\n let color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nclass PathNode extends Node {\n\n renderTo(ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n }\n\n setFill(ctx) {\n const fill = this.srcElement.options.fill;\n let hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n }\n\n setGradientFill(ctx, fill) {\n const bbox = this.srcElement.rawBBox();\n let gradient;\n\n if (fill instanceof LinearGradient) {\n let start = fill.start();\n let end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n let center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n }\n\n setStroke(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n ctx.lineJoin = valueOrDefault(stroke.lineJoin, ctx.lineJoin);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n }\n\n dashType() {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n }\n\n setLineDash(ctx) {\n const dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n const dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n }\n\n setLineCap(ctx) {\n const dashType = this.dashType();\n const stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n }\n\n setLineJoin(ctx) {\n const stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n }\n\n renderPoints(ctx, path) {\n renderPath(ctx, path);\n }\n}\n\nexport default PathNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nclass Surface extends BaseSurface {\n get type() {\n return \"canvas\";\n }\n\n constructor(element, options) {\n super(element, options);\n\n this.element.innerHTML = this._template(this);\n\n const canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n const size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n destroy() {\n super.destroy();\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n draw(element) {\n super.draw(element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n }\n\n clear() {\n super.clear();\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n }\n\n eventTarget(e) {\n if (this._searchTree) {\n const point = this._surfacePoint(e);\n const shape = this._searchTree.pointShape(point);\n return shape;\n }\n }\n\n image() {\n const { _root: root, _rootElement: rootElement } = this;\n const loadingStates = [];\n\n root.traverse((childNode) => {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n const promise = createPromise();\n const resolveDataURL = () => {\n root._invalidate({ fixedScale: true });\n\n try {\n const data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n }\n\n suspendTracking() {\n super.suspendTracking();\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n }\n\n resumeTracking() {\n super.resumeTracking();\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n const childNodes = this._root.childNodes;\n const rootElements = [];\n for (let idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n }\n\n _resize() {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n }\n\n _template() {\n return \"\";\n }\n\n _enableTracking() {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n super._enableTracking();\n }\n\n _trackMouse(e) {\n if (this._suspendedTracking) {\n return;\n }\n\n const shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n const currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n }\n}\n\nexport default Surface;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass ArcNode extends PathNode {\n renderPoints(ctx) {\n const path = this.srcElement.toPath();\n renderPath(ctx, path);\n }\n}\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nclass CircleNode extends PathNode {\n renderPoints(ctx) {\n const { center, radius } = this.srcElement.geometry();\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n }\n}\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nclass ImageNode extends PathNode {\n constructor(srcElement, cors) {\n super(srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n const img = this.img = new Image();\n const src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n renderTo(ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n }\n\n optionsChange(e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n super.optionsChange(e);\n }\n }\n\n onLoad() {\n this.loading.resolve();\n this.invalidate();\n }\n\n onError() {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n }\n\n drawImage(ctx) {\n const rect = this.srcElement.rect();\n const topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n }\n}\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nclass MultiPathNode extends PathNode {\n renderPoints(ctx) {\n const paths = this.srcElement.paths;\n for (let i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n }\n}\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nclass RectNode extends PathNode {\n renderPoints(ctx) {\n const geometry = this.srcElement.geometry();\n const [ rx, ry ] = geometry.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n const { origin, size } = geometry;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n super.renderPoints(ctx, Path.fromRect(geometry));\n }\n }\n}\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nclass TextNode extends PathNode {\n renderTo(ctx) {\n const text = this.srcElement;\n const pos = text.position();\n const size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (text.options.paintOrder === 'stroke') {\n this.stroke(ctx, text, pos, size);\n this.fill(ctx, text, pos, size);\n } else {\n this.fill(ctx, text, pos, size);\n this.stroke(ctx, text, pos, size);\n }\n\n ctx.restore();\n }\n\n stroke(ctx, text, pos, size) {\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n }\n\n fill(ctx, text, pos, size) {\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n }\n}\n\n\nexport default TextNode;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { defined } from '../util';\n\nclass SurfaceCursor {\n\n constructor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n }\n\n clear() {\n this._resetCursor();\n }\n\n destroy() {\n this._resetCursor();\n delete this.element;\n }\n\n _mouseenter(e) {\n const cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n }\n\n _mouseleave() {\n this._resetCursor();\n }\n\n _shapeCursor(e) {\n let shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n }\n\n _getCursor() {\n if (this.element) {\n return this.element.style.cursor;\n }\n }\n\n _setCursor(cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n }\n\n _resetCursor() {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n }\n}\n\nexport default SurfaceCursor;\n\n","let animationFrameProxy = (callback) => {\n const wnd = typeof window !== \"undefined\" ? window : {};\n const animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = callback => animationFrame.call(wnd, callback);\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","export default class Class {\n // Empty base class needed for compatibility with Kendo UI for jQuery\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nconst DARK_TRESHOLD = 180;\n\nclass Color extends Class {\n constructor(value) {\n super();\n\n if (arguments.length === 1) {\n const formats = Color.formats;\n const resolvedColor = this.resolveColor(value);\n\n for (let idx = 0; idx < formats.length; idx++) {\n const formatRegex = formats[idx].re;\n const processor = formats[idx].process;\n const parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n const channels = processor(parts);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n toHex() {\n const pad = this.padDigit;\n const r = this.r.toString(16);\n const g = this.g.toString(16);\n const b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n }\n\n resolveColor(value) {\n let color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n }\n\n normalizeByte(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n }\n\n padDigit(value) {\n return (value.length === 1) ? \"0\" + value : value;\n }\n\n brightness(value) {\n const round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n }\n\n percBrightness() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n }\n\n isDark() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n\n static fromBytes(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n }\n\n static fromRGB(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n }\n\n static fromHSV(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n }\n\n static fromHSL(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n }\n}\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","const namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nconst browser = support.browser;\n\nlet matchNamedColor = (color) => {\n const colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n const regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = (color) => regexp.exec(color);\n\n return regexp.exec(color);\n};\n\nclass BaseColor extends Class {\n constructor() { super(); }\n toHSV() { return this; }\n\n toRGB() { return this; }\n\n toHex(options) { return this.toBytes().toHex(options); }\n\n toBytes() { return this; }\n\n toCss(options) { return \"#\" + this.toHex(options); }\n\n toCssRgba() {\n const rgb = this.toBytes();\n return `rgba(${ rgb.r }, ${ rgb.g }, ${ rgb.b }, ${ parseFloat((Number(this.a)).toFixed(3)) })`;\n }\n\n toDisplay() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n }\n\n equals(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n }\n\n diff(other) {\n if (other === null) {\n return NaN;\n }\n\n const c1 = this.toBytes();\n const c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n }\n\n clone() {\n let c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n}\n\nclass RGB extends BaseColor {\n constructor(r, g, b, a) {\n super();\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n toHSV() {\n const { r, g, b } = this;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n const v = max;\n let h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n }\n\n toHSL() {\n const { r, g, b } = this;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n }\n\n toBytes() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n}\n\nclass Bytes extends RGB {\n constructor(r, g, b, a) {\n super(Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n toRGB() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toHex(options) {\n let value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n }\n\n toBytes() {\n return this;\n }\n}\n\nfunction hex(n, width, pad = \"0\") {\n let result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nclass HSV extends BaseColor {\n constructor(h, s, v, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n toRGB() {\n let { h, s, v } = this;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n const i = Math.floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSL() {\n return this.toRGB().toHSL();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nclass HSL extends BaseColor {\n constructor(h, s, l, a) {\n super();\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n toRGB() {\n let h = this.h / 360;\n let s = this.s / 100;\n let l = this.l / 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n }\n\n toHSV() {\n return this.toRGB().toHSV();\n }\n\n toBytes() {\n return this.toRGB().toBytes();\n }\n}\n\nfunction hue2rgb(p, q, s) {\n let t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n let m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n let color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","function matchUserAgent(userAgent) {\n const browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n let browser = {};\n\n for (let agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n const match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nlet browser = null;\n\nconst support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n let lastExecTime = 0;\n let timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n const throttled = function() {\n const elapsed = now() - lastExecTime;\n const args = arguments;\n\n const exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import { Class } from '../common';\n\nclass BaseNode extends Class {\n constructor(srcElement) {\n super();\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n destroy() {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.childNodes[i].destroy();\n }\n\n this.parent = null;\n }\n\n load() {}\n\n observe() {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n }\n\n append(node) {\n this.childNodes.push(node);\n node.parent = this;\n }\n\n insertAt(node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n }\n\n remove(index, count) {\n const end = index + count;\n for (let i = index; i < end; i++) {\n this.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n }\n\n removeSelf() {\n this.clear();\n this.destroy();\n }\n\n clear() {\n this.remove(0, this.childNodes.length);\n }\n\n invalidate() {\n if (this.parent) {\n this.parent.invalidate();\n }\n }\n\n geometryChange() {\n this.invalidate();\n }\n\n optionsChange() {\n this.invalidate();\n }\n\n childrenChange(e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n }\n}\n\nexport default BaseNode;","const DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nconst SOLID = \"solid\";\nconst BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };\n","import { Class } from '../common';\n\nclass HasObservers extends Class {\n observers() {\n this._observers = this._observers || [];\n return this._observers;\n }\n\n addObserver(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n }\n\n removeObserver(element) {\n const observers = this.observers();\n const index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n }\n\n trigger(methodName, event) {\n const observers = this._observers;\n\n if (observers && !this._suspended) {\n for (let idx = 0; idx < observers.length; idx++) {\n let observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n }\n\n optionsChange(e = {}) {\n e.element = this;\n this.trigger(\"optionsChange\", e);\n }\n\n geometryChange() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n\n suspend() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n }\n\n resume() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n }\n\n _observerField(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n}\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nconst toString = {}.toString;\n\nclass OptionsStore extends HasObservers {\n constructor(options, prefix = \"\") {\n super();\n\n this.prefix = prefix;\n\n for (let field in options) {\n let member = options[field];\n member = this._wrap(member, field);\n this[field] = member;\n }\n }\n\n get(field) {\n const parts = field.split(\".\");\n let result = this;\n\n while (parts.length && result) {\n let part = parts.shift();\n result = result[part];\n }\n\n return result;\n }\n\n set(field, value) {\n const current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n }\n\n _set(field, value) {\n const composite = field.indexOf(\".\") >= 0;\n let parentObj = this;\n let fieldName = field;\n\n if (composite) {\n const parts = fieldName.split(\".\");\n let prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n let obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n }\n\n _clear(field) {\n const current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n }\n\n _wrap(object, field) {\n const type = toString.call(object);\n let wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n }\n}\n\nexport default OptionsStore;\n","import Class from './class';\n\nclass Observable extends Class {\n constructor() {\n super();\n\n this._events = {};\n }\n\n bind(eventName, handlers, one) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n const length = eventNames.length;\n\n if (handlers === undefined) {\n for (let field in eventName) {\n this.bind(field, eventName[field]);\n }\n return this;\n }\n\n for (let idx = 0; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n let handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n const original = handler;\n handler = () => { // eslint-disable-line no-loop-func\n this.unbind(eventName, handler);\n original.apply(this, arguments);\n };\n handler.original = original;\n }\n let events = this._events[eventName] = this._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return this;\n }\n\n one(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n }\n\n first(eventName, handlers) {\n const eventNames = getArray(eventName);\n const handlersIsFunction = isFunction(handlers);\n\n for (let idx = 0, length = eventNames.length; idx < length; idx++) {\n const eventName = eventNames[idx];\n\n const handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n const events = this._events[eventName] = this._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n }\n\n trigger(eventName, e = {}) {\n let events = this._events[eventName];\n\n if (events) {\n const length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (let idx = 0; idx < length; idx++) {\n events[idx].call(this, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n }\n\n unbind(eventName, handler) {\n const events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (let idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n }\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Matrix from '../geometry/matrix';\n\nconst matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n const match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n const members = match[1].split(',').map(x => parseFloat(x));\n return new Matrix(...members);\n}\n\nfunction transformMatrix(element) {\n const transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n let matrix = transformMatrix(element);\n let parent = element.parentElement;\n while (parent) {\n const parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nconst events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nclass Surface extends Observable {\n constructor(element, options) {\n super();\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n draw(element) {\n this._visual.children.push(element);\n }\n\n clear() {\n this._visual.children = [];\n }\n\n destroy() {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n }\n\n eventTarget(e) {\n let domNode = eventElement(e);\n let node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n }\n\n exportVisual() {\n return this._visual;\n }\n\n getSize() {\n return elementSize(this.element);\n }\n\n currentSize(size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n }\n\n setSize(size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n }\n\n resize(force) {\n const size = this.getSize();\n const currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n }\n\n size(value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n }\n\n suspendTracking() {\n this._suspendedTracking = true;\n }\n\n resumeTracking() {\n this._suspendedTracking = false;\n }\n\n _enableTracking() {}\n\n _resize() {}\n\n _handler(eventName) {\n return (e) => {\n const node = this.eventTarget(e);\n if (node && !this._suspendedTracking) {\n this.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n }\n\n _elementOffset() {\n const element = this.element;\n const padding = elementPadding(element);\n const { left, top } = elementOffset(element);\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n }\n\n _surfacePoint(e) {\n const offset = this._elementOffset();\n const coord = eventCoordinates(e);\n const x = coord.x - offset.left;\n const y = coord.y - offset.top;\n\n const inverseTransform = elementScale(this.element).invert();\n const point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n }\n}\n\nexport default Surface;\n","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n const { paddingLeft, paddingTop } = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nconst MAX_INTERVAL = 45;\nconst pow = Math.pow;\nconst accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nclass Arc extends withAccessors(HasObservers, accessors) {\n constructor(center = new Point(), options = {}) {\n super();\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n clone() {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n pointAt(angle) {\n const center = this.center;\n const radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n }\n\n curvePoints() {\n const startAngle = this.startAngle;\n const dir = this.anticlockwise ? -1 : 1;\n const curvePoints = [ this.pointAt(startAngle) ];\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n const subIntervalAngle = intervalAngle / subIntervalsCount;\n let currentAngle = startAngle;\n let transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (let i = 1; i <= subIntervalsCount; i++) {\n const nextAngle = currentAngle + dir * subIntervalAngle;\n const points = this._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n }\n\n bbox(matrix) {\n const interval = this._arcInterval();\n const startAngle = interval.startAngle;\n const endAngle = interval.endAngle;\n const extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n const extremeX = deg(extremeAngles.x);\n const extremeY = deg(extremeAngles.y);\n const endPoint = this.pointAt(endAngle).transformCopy(matrix);\n let currentAngleX = bboxStartAngle(extremeX, startAngle);\n let currentAngleY = bboxStartAngle(extremeY, startAngle);\n let currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n let minPoint = Point.min(currentPoint, endPoint);\n let maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n let currentPointX;\n if (currentAngleX < endAngle) {\n currentPointX = this.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n let currentPointY;\n if (currentAngleY < endAngle) {\n currentPointY = this.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _arcInterval() {\n let { startAngle, endAngle, anticlockwise } = this;\n\n if (anticlockwise) {\n let oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n\n _intervalCurvePoints(startAngle, endAngle, transformation) {\n const p1 = this.pointAt(startAngle);\n const p2 = this.pointAt(endAngle);\n const p1Derivative = this._derivativeAt(startAngle);\n const p2Derivative = this._derivativeAt(endAngle);\n const t = (rad(endAngle) - rad(startAngle)) / 3;\n const cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n const cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n }\n\n _derivativeAt(angle) {\n const radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n }\n\n containsPoint(point) {\n const interval = this._arcInterval();\n const intervalAngle = interval.endAngle - interval.startAngle;\n const { center, radiusX, radiusY } = this;\n const distance = center.distanceTo(point);\n const angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n const pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n const startPoint = this.pointAt(this.startAngle).round(PRECISION);\n const endPoint = this.pointAt(this.endAngle).round(PRECISION);\n const intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n let containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n let angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n let inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n }\n\n _isOnPath(point, width) {\n const interval = this._arcInterval();\n const center = this.center;\n let angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n const inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n }\n\n static fromPoints(start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n const arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n }\n}\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n const cos = round((x - cx) / rx, 3);\n const sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n let { x1, y1, x2, y2, rx, ry, largeArc, swipe, rotation = 0 } = parameters;\n\n const radians = rad(rotation);\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n const xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n const yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n const sign = largeArc !== swipe ? 1 : -1;\n\n const xt2 = Math.pow(xT, 2);\n const yt2 = Math.pow(yT, 2);\n let rx2 = Math.pow(rx, 2);\n let ry2 = Math.pow(ry, 2);\n\n let delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n let constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n const cxT = constT * (rx * yT) / ry;\n const cyT = - constT * (ry * xT) / rx;\n\n const cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n const cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n const uX = (xT - cxT) / rx;\n const uY = (yT - cyT) / ry;\n const vX = -(xT + cxT) / rx;\n const vY = -(yT + cyT) / ry;\n\n const startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n const angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n let angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n let endAngle = startAngle + angle;\n const signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n let startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n const s1x = p1.x - p0.x;\n const s2x = p3.x - p2.x;\n const s1y = p1.y - p0.y;\n const s2y = p3.y - p2.y;\n const nx = p0.x - p2.x;\n const ny = p0.y - p2.y;\n const d = s1x * s2y - s2x * s1y;\n const s = (s1x * ny - s1y * nx) / d;\n const t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nconst PI_DIV_2 = Math.PI / 2;\n\nclass Circle extends withAccessors(HasObservers, [ \"radius\" ]) {\n constructor(center = new Point(), radius = 0) {\n super();\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n setCenter(value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getCenter() {\n return this.center;\n }\n\n equals(other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n }\n\n clone() {\n return new Circle(this.center.clone(), this.radius);\n }\n\n pointAt(angle) {\n return this._pointAt(rad(angle));\n }\n\n bbox(matrix) {\n const extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n let minPoint = Point.maxPoint();\n let maxPoint = Point.minPoint();\n\n for (let i = 0; i < 4; i++) {\n let currentPointX = this._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n let currentPointY = this._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n let currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n }\n\n _pointAt(angle) {\n const { center, radius } = this;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n }\n\n containsPoint(point) {\n const { center, radius } = this;\n const inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n }\n\n _isOnPath(point, width) {\n const { center, radius } = this;\n const pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n }\n}\n\nexport default Circle;\n","const PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance = PRECISION) {\n return round(Math.abs(a - b), tolerance) === 0;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n let extremeX = 0;\n let extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","export default function lineIntersectionsCount(a, b, point) {\n let intersects;\n if (a.x !== b.x) {\n const minX = Math.min(a.x, b.x);\n const maxX = Math.max(a.x, b.x);\n const minY = Math.min(a.y, b.y);\n const maxY = Math.max(a.y, b.y);\n const inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nclass Matrix extends Class {\n\n constructor(a = 0, b = 0, c = 0, d = 0, e = 0, f = 0) {\n super();\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n multiplyCopy(matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n }\n\n invert() {\n const { a, b, c: d, d: e, e: g, f: h } = this;\n const det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n }\n\n clone() {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n }\n\n equals(other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n }\n\n round(precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n }\n\n toArray(precision) {\n const result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (let i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n }\n\n toString(precision, separator = \",\") {\n return this.toArray(precision).join(separator);\n }\n\n static translate(x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n }\n\n static unit() {\n return new Matrix(1, 0, 0, 1, 0, 0);\n }\n\n static rotate(angle, x, y) {\n const matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n }\n\n static scale(scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n }\n}\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nclass Point extends withAccessors(HasObservers, [ \"x\", \"y\" ]) {\n constructor(x, y) {\n super();\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n equals(other) {\n return other && other.x === this.x && other.y === this.y;\n }\n\n clone() {\n return new Point(this.x, this.y);\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n }\n\n translate(x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n }\n\n translateWith(point) {\n return this.translate(point.x, point.y);\n }\n\n move(x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n }\n\n scale(scaleX, scaleY = scaleX) {\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n }\n\n scaleCopy(scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n }\n\n transform(transformation) {\n const matrix = toMatrix(transformation);\n const { x, y } = this;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n }\n\n transformCopy(transformation) {\n const point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n }\n\n distanceTo(point) {\n const dx = this.x - point.x;\n const dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n round(digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const x = doRound ? round(this.x, digits) : this.x;\n const y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n }\n\n toString(digits, separator = \" \") {\n let { x, y } = this;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n }\n\n static min() {\n let minX = MAX_NUM;\n let minY = MAX_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n let point = arguments[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n }\n\n static max() {\n let maxX = MIN_NUM;\n let maxY = MIN_NUM;\n\n for (let i = 0; i < arguments.length; i++) {\n const point = arguments[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n }\n\n static minPoint() {\n return new Point(MIN_NUM, MIN_NUM);\n }\n\n static maxPoint() {\n return new Point(MAX_NUM, MAX_NUM);\n }\n\n static get ZERO() {\n return new Point(0, 0);\n }\n}\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nclass Rect extends HasObservers {\n constructor(origin = new Point(), size = new Size(), cornerRadius = 0) {\n super();\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n clone() {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n }\n\n equals(other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n }\n\n setOrigin(value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n }\n\n getOrigin() {\n return this.origin;\n }\n\n setCornerRadius(radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n }\n\n getCornerRadius() {\n return this.cornerRadius;\n }\n\n setSize(value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n }\n\n getSize() {\n return this.size;\n }\n\n width() {\n return this.size.width;\n }\n\n height() {\n return this.size.height;\n }\n\n topLeft() {\n return this.origin.clone();\n }\n\n bottomRight() {\n return this.origin.clone().translate(this.width(), this.height());\n }\n\n topRight() {\n return this.origin.clone().translate(this.width(), 0);\n }\n\n bottomLeft() {\n return this.origin.clone().translate(0, this.height());\n }\n\n center() {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n }\n\n bbox(matrix) {\n const tl = this.topLeft().transformCopy(matrix);\n const tr = this.topRight().transformCopy(matrix);\n const br = this.bottomRight().transformCopy(matrix);\n const bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n }\n\n transformCopy(m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n }\n\n expand(x, y = x) {\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n }\n\n expandCopy(x, y) {\n return this.clone().expand(x, y);\n }\n\n containsPoint(point) {\n const origin = this.origin;\n const bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n }\n\n _isOnPath(point, width) {\n const rectOuter = this.expandCopy(width, width);\n const rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n }\n\n static fromPoints() {\n const topLeft = Point.min.apply(null, arguments);\n const bottomRight = Point.max.apply(null, arguments);\n const size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n }\n\n static union(a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n }\n\n static intersect(a, b) {\n const rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n const rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n }\n}\n\nexport default Rect;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n const angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n const rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n const t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nclass ComplexNumber extends Class {\n\n constructor(real = 0, img = 0) {\n super();\n\n this.real = real;\n this.img = img;\n }\n\n add(cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n }\n\n addConstant(value) {\n return new ComplexNumber(this.real + value, this.img);\n }\n\n negate() {\n return new ComplexNumber(-this.real, -this.img);\n }\n\n multiply(cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n }\n\n multiplyConstant(value) {\n return new ComplexNumber(this.real * value, this.img * value);\n }\n\n nthRoot(n) {\n const rad = Math.atan2(this.img, this.real);\n const r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n const nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n }\n\n equals(cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n }\n\n isReal() {\n return this.img === 0;\n }\n}\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n const squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n const p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n const q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n const Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n const i = new ComplexNumber(0,1);\n const b3a = -b / (3 * a);\n let x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n const result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n const polynomial = toCubicPolynomial(points, rootField);\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n let intersection;\n\n for (let idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nconst points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nclass Segment extends withPoints(HasObservers, points) {\n constructor(anchor, controlIn, controlOut) {\n super();\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n bboxTo(toSegment, matrix) {\n const segmentAnchor = this.anchor().transformCopy(matrix);\n const toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n let rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n }\n\n _lineBoundingBox(p1, p2) {\n return Rect.fromPoints(p1, p2);\n }\n\n _curveBoundingBox(p1, cp1, cp2, p2) {\n const points = [ p1, cp1, cp2, p2 ];\n const extremesX = this._curveExtremesFor(points, \"x\");\n const extremesY = this._curveExtremesFor(points, \"y\");\n const xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n const yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n }\n\n _curveExtremesFor(points, field) {\n const extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n }\n\n _curveExtremes(x1, x2, x3, x4) {\n const a = x1 - 3 * x2 + 3 * x3 - x4;\n const b = - 2 * (x1 - 2 * x2 + x3);\n const c = x1 - x2;\n const sqrt = Math.sqrt(b * b - 4 * a * c);\n let t1 = 0;\n let t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n let min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n let max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n _intersectionsTo(segment, point) {\n let intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n }\n\n _isOnCurveTo(segment, point, width, endSegment) {\n const bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n const p1 = this.anchor();\n const p2 = this.controlOut();\n const p3 = segment.controlIn();\n const p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n const points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n const rotation = transform().rotate(45, point);\n const rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n }\n\n _isOnLineTo(segment, point, width) {\n const p1 = this.anchor();\n const p2 = segment.anchor();\n const angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n const rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n }\n\n _isOnPathTo(segment, point, width, endSegment) {\n let isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n }\n}\n\nfunction arrayLimits(arr) {\n let length = arr.length;\n let min = MAX_NUM;\n let max = MIN_NUM;\n\n for (let i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n const polynomial = toCubicPolynomial(points, \"x\");\n const roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n let rayIntersection, intersectsRay;\n let count = 0;\n for (let i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nclass Size extends withAccessors(HasObservers, [ \"width\", \"height\" ]) {\n constructor(width, height) {\n super();\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n equals(other) {\n return other && other.width === this.width && other.height === this.height;\n }\n\n clone() {\n return new Size(this.width, this.height);\n }\n\n toArray(digits) {\n const doRound = defined(digits);\n const width = doRound ? round(this.width, digits) : this.width;\n const height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n }\n\n static create(arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n }\n\n static get ZERO() {\n return new Size(0, 0);\n }\n}\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nclass Transformation extends HasObservers {\n constructor(matrix = Matrix.unit()) {\n super();\n\n this._matrix = matrix;\n }\n\n clone() {\n return new Transformation(\n this._matrix.clone()\n );\n }\n\n equals(other) {\n return other &&\n other._matrix.equals(this._matrix);\n }\n\n translate(x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n }\n\n scale(scaleX, scaleY = scaleX, origin = null) {\n let originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n }\n\n rotate(angle, origin) {\n const originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n }\n\n multiply(transformation) {\n const matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n }\n\n matrix(value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n }\n\n _optionsChange() {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n }\n}\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import ElementsArray from '../shapes/elements-array';\n\nclass StopsArray extends ElementsArray {\n _change() {\n this.optionsChange({\n field: \"stops\"\n });\n }\n}\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nconst withOptions = (TBase, names) => {\n const result = class extends TBase {};\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nconst options = [ \"offset\", \"color\", \"opacity\" ];\n\nclass GradientStop extends withOptions(HasObservers, options) {\n constructor(offset, color, opacity) {\n super();\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n static create(arg) {\n if (defined(arg)) {\n let stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n }\n}\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nclass Gradient extends HasObservers {\n get nodeType() {\n return \"Gradient\";\n }\n\n constructor(options = {}) {\n super();\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n userSpace(value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n }\n\n _createStops(stops = []) {\n const result = [];\n for (let idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n }\n\n addStop(offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n }\n\n removeStop(stop) {\n const index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n }\n\n optionsChange(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n }\n\n geometryChange() {\n this.optionsChange();\n }\n}\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nconst points = [ \"start\", \"end\" ];\n\nclass LinearGradient extends withPoints(Gradient, points) {\n constructor(options = {}) {\n super(options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n}\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nclass RadialGradient extends withPoints(Gradient, [ \"center\" ]) {\n constructor(options = {}) {\n super(options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n radius(value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n }\n\n fallbackFill(value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n }\n}\n\nexport default RadialGradient;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nconst IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nconst measurable = TBase => (\n class extends TBase {\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n const matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n let bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n const strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n }\n\n geometryChange() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n }\n);\n\nexport default measurable;","import { defined } from '../util';\n\nconst GRADIENT = \"Gradient\";\n\nconst paintable = TBase => (\n class extends TBase {\n fill(color, opacity) {\n const options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n const newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n }\n\n stroke(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n }\n);\n\nexport default paintable;\n","const traversable = (TBase, childrenField) => (\n class extends TBase {\n traverse(callback) {\n const children = this[childrenField];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n }\n }\n);\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i];\n let capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nconst withAccessors = (TBase, names) => {\n const result = class extends TBase {};\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nconst withGeometry = (TBase, names = [ \"geometry\" ]) => {\n const result = class extends TBase {};\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n const fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (let i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nconst withPoints = (TBase, names) => {\n const result = class extends TBase {};\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nconst DEFAULT_STROKE = \"#000\";\n\nclass Circle extends paintable(measurable(withGeometry(Element))) {\n get nodeType() {\n return \"Circle\";\n }\n\n constructor(geometry = new GeometryCircle(), options = {}) {\n super(options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n rawBBox() {\n return this._geometry.bbox();\n }\n\n _bbox(matrix) {\n return this._geometry.bbox(matrix);\n }\n\n _containsPoint(point) {\n return this.geometry().containsPoint(point);\n }\n\n _isOnPath(point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n }\n}\n\nexport default Circle;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nclass Element extends HasObservers {\n get nodeType() {\n return \"Rect\";\n }\n\n constructor(options) {\n super();\n\n this._initOptions(options);\n }\n\n _initOptions(options = {}) {\n const { clip, transform } = options;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n }\n\n transform(value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n }\n\n parentTransform() {\n let element = this;\n let parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n let transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n }\n\n currentTransform(parentTransform = this.parentTransform()) {\n const elementTransform = this.transform();\n const elementMatrix = toMatrix(elementTransform);\n\n let parentMatrix = toMatrix(parentTransform);\n let combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n }\n\n visible(value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n }\n\n clip(value) {\n const options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n }\n\n opacity(value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n }\n\n className(value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n }\n\n clippedBBox(transformation) {\n const bbox = this._clippedBBox(transformation);\n if (bbox) {\n const clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const transform = this.currentTransform(parentTransform);\n let transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n }\n\n _hasFill() {\n const fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n }\n\n _hasStroke() {\n const stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n }\n\n _clippedBBox(transformation) {\n return this.bbox(transformation);\n }\n}\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nconst push = [].push;\nconst pop = [].pop;\nconst splice = [].splice;\nconst shift = [].shift;\nconst slice = [].slice;\nconst unshift = [].unshift;\n\nclass ElementsArray extends HasObservers {\n constructor(array = []) {\n super();\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n elements(value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n }\n\n push() {\n const elements = arguments;\n const result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n slice() {\n return slice.call(this);\n }\n\n pop() {\n const length = this.length;\n const result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n splice(index, howMany) {\n const elements = slice.call(arguments, 2);\n const result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n }\n\n shift() {\n const length = this.length;\n const result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n }\n\n unshift() {\n const elements = arguments;\n const result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n }\n\n indexOf(element) {\n const length = this.length;\n\n for (let idx = 0; idx < length; idx++) {\n if (this[idx] === element) {\n return idx;\n }\n }\n return -1;\n }\n\n _splice(index, howMany, elements) {\n const result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n }\n\n _add(elements) {\n this._setObserver(elements);\n this._change();\n }\n\n _remove(elements) {\n this._clearObserver(elements);\n this._change();\n }\n\n _setObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this);\n }\n }\n\n _clearObserver(elements) {\n for (let idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this);\n }\n }\n\n _change() {}\n}\n\nexport default ElementsArray;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nclass Group extends traversable(Element, \"children\") {\n get nodeType() {\n return \"Group\";\n }\n\n constructor(options) {\n super(options);\n this.children = [];\n }\n\n childrenChange(action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n }\n\n append() {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n }\n\n insert(index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n }\n\n insertAt(element, index) {\n return this.insert(index, element);\n }\n\n remove(element) {\n const index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n removeAt(index) {\n if (0 <= index && index < this.children.length) {\n let element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n }\n\n clear() {\n const items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n }\n\n bbox(transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n }\n\n rawBBox() {\n return elementsBoundingBox(this.children, false);\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n }\n\n currentTransform(transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n }\n\n containsPoint(point, parentTransform) {\n if (this.visible()) {\n const children = this.children;\n const transform = this.currentTransform(parentTransform);\n for (let idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _reparent(elements, newParent) {\n for (let i = 0; i < elements.length; i++) {\n const child = elements[i];\n const parent = child.parent;\n if (parent && parent !== this && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n }\n}\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nclass Image extends withGeometry(Element, [ \"rect\" ]) {\n get nodeType() {\n return \"Image\";\n }\n\n constructor(src, rect = new Rect(), options = {}) {\n super(options);\n\n this.src(src);\n this.rect(rect);\n }\n\n src(value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this._rect.bbox();\n }\n\n _containsPoint(point) {\n return this._rect.containsPoint(point);\n }\n\n _hasFill() {\n return this.src();\n }\n}\n\nexport default Image;","import ElementsArray from './elements-array';\n\nclass GeometryElementsArray extends ElementsArray {\n _change() {\n this.geometryChange();\n }\n}\n\nexport default GeometryElementsArray;","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nconst WEIGHT = 0.333;\nconst EXTREMUM_ALLOWED_DEVIATION = 0.01;\nconst X = \"x\";\nconst Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n const points = pointsIn.slice(0);\n const segments = [];\n let length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n let p0 = points[0];\n let p1 = points[1];\n let p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n const tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n let initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n const controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n const tangent = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent, p0, p1, X, Y);\n }\n\n let cp0 = initialControlPoint;\n for (let idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n const controlPoints = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints[1];\n\n const cp1 = controlPoints[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n const controlPoints = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints[0]\n ));\n\n last(segments).controlOut(controlPoints[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n const tangent = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n let invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n const fn = lineFunction(p0,p1);\n const y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n const fn = lineFunction(p0, p1);\n const y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n const a = (p2.y - p1.y) / (p2.x - p1.x);\n const b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n let xField = X;\n let yField = Y;\n let restrict = false;\n let switchOrientation = false;\n let tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n const monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n let sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n const secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n const oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n const firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n const x = p1[xField] - p0[xField];\n const y = p1[yField] - p0[yField];\n let tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n const t1 = p0[xField];\n const t2 = p3[xField];\n const distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n const controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n const length = fn.length;\n let result = 0;\n\n for (let i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nconst ShapeMap = {\n l: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 2) {\n let point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 6) {\n let controlOut = new Point(parameters[i], parameters[i + 1]);\n let controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n let point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n const value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n const value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 7) {\n const radiusX = parameters[i];\n const radiusY = parameters[i + 1];\n const rotation = parameters[i + 2];\n const largeArc = parameters[i + 3];\n const swipe = parameters[i + 4];\n const endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlIn = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n let controlOut;\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n const { parameters, position } = options;\n\n for (let i = 0; i < parameters.length; i += 4) {\n let controlPoint = new Point(parameters[i], parameters[i + 1]);\n let endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n const { parameters, position, previousCommand } = options;\n let controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n let lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (let i = 0; i < parameters.length; i += 2) {\n let endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n let cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n const insertPosition = isVertical ? 0 : 1;\n\n for (let i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nconst third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n const scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nconst SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nconst SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nconst MOVE = \"m\";\nconst CLOSE = \"z\";\n\nfunction parseParameters(str) {\n const parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n const position = new Point();\n let previousCommand;\n\n str.replace(SEGMENT_REGEX, (match, element, params, closePath) => {\n let command = element.toLowerCase();\n const isRelative = command === element;\n const parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nconst SPACE = ' ';\nconst printPoints = (precision) => (...points) => points.map(p => p.toString(precision)).join(SPACE);\nconst segmentType = (segmentStart, segmentEnd) => segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L';\n\nexport class Path extends paintable(measurable(Element)) {\n get nodeType() {\n return 'Path';\n }\n\n constructor(options) {\n super(options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n moveTo(x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n }\n\n lineTo(x, y) {\n const point = defined(y) ? new Point(x, y) : x;\n const segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const start = rad(startAngle);\n const center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n const arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n const lastSegment = last(this.segments);\n const anchor = lastSegment.anchor();\n const arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n }\n\n _addArcSegments(arc) {\n this.suspend();\n\n const curvePoints = arc.curvePoints();\n\n for (let i = 1; i < curvePoints.length; i += 3) {\n this.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n }\n\n close() {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n }\n\n rawBBox() {\n return this._bbox();\n }\n\n toString(digits) {\n let output = '';\n\n const segments = this.segments;\n const length = segments.length;\n if (length > 0) {\n const parts = [];\n const print = printPoints(digits);\n let currentType;\n\n for (let i = 1; i < length; i++) {\n let type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n }\n\n _containsPoint(point) {\n const segments = this.segments;\n const length = segments.length;\n let intersectionsCount = 0;\n let previous, current;\n\n for (let idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n }\n\n _isOnPath(point, width) {\n const segments = this.segments;\n const length = segments.length;\n const pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (let idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n }\n\n _bbox(matrix) {\n const segments = this.segments;\n const length = segments.length;\n let boundingBox;\n\n if (length === 1) {\n let anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (let i = 1; i < length; i++) {\n let segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n }\n\n static parse(str, options) {\n return MultiPath.parse(str, options);\n }\n\n static fromRect(rect, options) {\n const path = new Path(options);\n let [ rx, ry ] = rect.cornerRadius;\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n const origin = rect.origin;\n const { x, y } = origin;\n const width = rect.width();\n const height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n }\n\n static fromPoints(points, options) {\n if (points) {\n const path = new Path(options);\n\n for (let i = 0; i < points.length; i++) {\n let point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n }\n\n static curveFromPoints(points, options) {\n if (points) {\n const segments = pointsToCurve(points);\n const path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n }\n\n static fromArc(arc, options) {\n const path = new Path(options);\n const startAngle = arc.startAngle;\n const start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n }\n}\n\nexport class MultiPath extends paintable(measurable(Element)) {\n static parse(str, options) {\n const instance = new MultiPath(options);\n return parsePath(instance, str);\n }\n\n toString(digits) {\n const paths = this.paths;\n let output = '';\n\n if (paths.length > 0) {\n const result = [];\n\n for (let i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n }\n\n get nodeType() {\n return 'MultiPath';\n }\n\n constructor(options) {\n super(options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n moveTo(x, y) {\n const path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n }\n\n lineTo(x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n }\n\n curveTo(controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n }\n\n arc(startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n }\n\n arcTo(end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n }\n\n close() {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n }\n\n _bbox(matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n }\n\n rawBBox() {\n return elementsBoundingBox(this.paths, false);\n }\n\n _containsPoint(point) {\n const paths = this.paths;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n }\n\n _isOnPath(point) {\n const paths = this.paths;\n const width = this.options.stroke.width;\n\n for (let idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n }\n\n _clippedBBox(transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n }\n}\n\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nconst DEFAULT_FONT = \"12px sans-serif\";\nconst DEFAULT_FILL = \"#000\";\n\nclass Text extends paintable(withPoints(Element, [ \"position\" ])) {\n get nodeType() {\n return \"Text\";\n }\n\n constructor(content, position = new Point(), options = {}) {\n super(options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n content(value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n }\n\n measure() {\n const metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n }\n\n rect() {\n const size = this.measure();\n const pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n }\n\n bbox(transformation) {\n const combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n }\n\n rawBBox() {\n return this.rect().bbox();\n }\n\n _containsPoint(point) {\n return this.rect().containsPoint(point);\n }\n}\n\nexport default Text;\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n let boundingBox;\n\n for (let i = 0; i < elements.length; i++) {\n let element = elements[i];\n if (element.visible()) {\n let elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","const SVG_NS = \"http://www.w3.org/2000/svg\";\nconst NONE = \"none\";\nconst POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","const NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nconst TRANSFORM = \"transform\";\nconst DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n const base = document.getElementsByTagName(\"base\")[0];\n let href = document.location.href;\n let url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n const hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nclass Node extends BaseNode {\n\n constructor(srcElement, options) {\n super(srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n destroy() {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n super.destroy();\n }\n\n load(elements, pos) {\n for (let i = 0; i < elements.length; i++) {\n const srcElement = elements[i];\n const children = srcElement.children;\n\n const childNode = new NODE_MAP[srcElement.nodeType](srcElement, this.options);\n\n if (defined(pos)) {\n this.insertAt(childNode, pos);\n } else {\n this.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n const element = this.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n }\n\n root() {\n let root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n }\n\n attachTo(domElement, pos) {\n const container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n const element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n }\n\n setElement(element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n const nodes = this.childNodes;\n for (let i = 0; i < nodes.length; i++) {\n let childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n }\n\n clear() {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n const children = this.childNodes;\n for (let i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n }\n\n removeSelf() {\n if (this.element) {\n const parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n super.removeSelf();\n }\n\n template() {\n return this.renderChildren();\n }\n\n render() {\n return this.template();\n }\n\n renderChildren() {\n const nodes = this.childNodes;\n let output = \"\";\n\n for (let i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n }\n\n optionsChange(e) {\n const { field, value } = e;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n super.optionsChange(e);\n }\n\n accessibilityOptionsChange(e) {\n const { field, value } = e;\n \n \n if (field === \"role\") {\n if (value) {\n this.attr(\"role\", value);\n } else {\n this.removeAttr(\"role\");\n }\n } else if (field === \"ariaLabel\") {\n if (value) {\n this.attr(\"aria-label\", value);\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", value);\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n }\n\n attr(name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n }\n\n allAttr(attrs) {\n for (let i = 0; i < attrs.length; i++) {\n this.attr(attrs[i][0], attrs[i][1]);\n }\n }\n\n toggleAttr(name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n }\n\n css(name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n }\n\n allCss(styles) {\n for (let i = 0; i < styles.length; i++) {\n this.css(styles[i][0], styles[i][1]);\n }\n }\n\n className(value) {\n if (this.element) {\n this.element.classList.remove(...this.element.classList);\n value.split(\" \").forEach((item) => {\n this.element.classList.add(item);\n }); \n }\n }\n\n removeAttr(name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n }\n\n mapTransform(transform) {\n const attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n }\n\n renderTransform() {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n }\n\n transformChange(value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n }\n\n mapStyle() {\n const options = this.srcElement.options;\n const style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n }\n\n renderStyle() {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n }\n\n renderOpacity() {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n }\n\n renderId() {\n return renderAttr(\"id\", this.srcElement.options.id);\n }\n\n renderClassName() {\n return renderAttr(\"class\", this.srcElement.options.className);\n }\n\n renderRole() {\n return renderAttr(\"role\", this.srcElement.options.role);\n }\n\n renderAriaLabel() {\n return renderAttr(\"aria-label\", this.srcElement.options.ariaLabel);\n }\n\n renderAriaRoleDescription() {\n return renderAttr(\"aria-roledescription\", this.srcElement.options.ariaRoleDescription);\n }\n\n renderAriaChecked() {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n }\n\n createDefinitions() {\n const srcElement = this.srcElement;\n const definitions = this.definitions;\n if (srcElement) {\n const options = srcElement.options;\n let hasDefinitions;\n\n for (let field in DefinitionMap) {\n let definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n }\n\n definitionChange(e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n }\n\n updateDefinition(type, value) {\n const definitions = this.definitions;\n const current = definitions[type];\n const attr = DefinitionMap[type];\n const definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n }\n\n clearDefinitions() {\n const definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n }\n\n renderDefinitions() {\n return renderAllAttr(this.mapDefinitions());\n }\n\n mapDefinitions() {\n const definitions = this.definitions;\n const attrs = [];\n\n for (let field in definitions) {\n attrs.push([ DefinitionMap[field], this.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n }\n\n refUrl(id) {\n const skipBaseHref = (this.options || {}).skipBaseHref;\n const baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n const base = skipBaseHref ? '' : baseHref;\n return `url(${ base }#${ id })`;\n }\n\n baseUrl() {\n return baseUrl();\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass GradientStopNode extends Node {\n template() {\n return ``;\n }\n\n renderOffset() {\n return renderAttr(\"offset\", this.srcElement.offset());\n }\n\n mapStyle() {\n const srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n }\n\n optionsChange(e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n }\n}\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nclass GradientNode extends Node {\n constructor(srcElement) {\n super(srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n loadStops() {\n const stops = this.srcElement.stops;\n const element = this.element;\n\n for (let idx = 0; idx < stops.length; idx++) {\n let stopNode = new GradientStopNode(stops[idx]);\n this.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n }\n\n optionsChange(e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n }\n\n renderCoordinates() {\n return renderAllAttr(this.mapCoordinates());\n }\n\n mapSpace() {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n }\n}\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nclass LinearGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const start = srcElement.start();\n const end = srcElement.end();\n const attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n }\n}\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nclass RadialGradientNode extends GradientNode {\n template() {\n return `${ this.renderChildren() }`;\n }\n\n mapCoordinates() {\n const srcElement = this.srcElement;\n const center = srcElement.center();\n const radius = srcElement.radius();\n const attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n }\n}\n\nexport default RadialGradientNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nclass ClipNode extends Node {\n constructor(srcElement) {\n super();\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n renderClipRule() {\n return renderAttr(\"clip-rule\", \"evenodd\");\n }\n template() {\n return `${ this.renderChildren() }`;\n }\n}\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nclass DefinitionNode extends Node {\n constructor() {\n super();\n this.definitionMap = {};\n }\n\n attachTo(domElement) {\n this.element = domElement;\n }\n\n template() {\n return `${ this.renderChildren() }`;\n }\n\n definitionChange(e) {\n const { definitions, action } = e;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n }\n\n createDefinition(type, item) {\n let nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n }\n\n addDefinitions(definitions) {\n for (let field in definitions) {\n this.addDefinition(field, definitions[field]);\n }\n }\n\n addDefinition(type, srcElement) {\n const { element, definitionMap } = this;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n if (!mapItem) {\n const node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n }\n\n removeDefinitions(definitions) {\n for (let field in definitions) {\n this.removeDefinition(definitions[field]);\n }\n }\n\n removeDefinition(srcElement) {\n const definitionMap = this.definitionMap;\n const id = srcElement.id;\n const mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n }\n}\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nclass RootNode extends Node {\n constructor(options) {\n super();\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n attachTo(domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n }\n\n clear() {\n BaseNode.prototype.clear.call(this);\n }\n\n template() {\n return this.defs.render() + this.renderChildren();\n }\n\n definitionChange(e) {\n this.defs.definitionChange(e);\n }\n}\n\nexport default RootNode;","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? ` ${ name }=\"${ value }\" ` : \"\";\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n let output = \"\";\n for (let i = 0; i < attrs.length; i++) {\n let value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","import { SVG_NS } from '../constants';\n\nconst applyStyle = (styleString, element) =>\n styleString.split(';').filter(s => s !== '').forEach(s => {\n const parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n });\n\nconst styleAttr = 'data-style';\nconst replaceStyleAttr = (html) => html.replace(/\\sstyle=/g, ' ' + styleAttr + '=');\nconst restoreStyleAttr = (container) => {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach((element) => {\n const styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n};\n\nlet renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n};\n\nif (typeof document !== \"undefined\") {\n const testFragment = \"\";\n const testContainer = document.createElement(\"div\");\n const hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n const parser = new DOMParser();\n const chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n const importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;\n","import { Class } from '../common';\n\nclass LRUCache extends Class {\n constructor(size) {\n super();\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n put(key, value) {\n const map = this._map;\n const entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n }\n\n get(key) {\n const entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n}\n\nexport default LRUCache;","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nconst DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nlet defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nclass TextMetrics extends Class {\n constructor(options) {\n super();\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n measure(text, style, options = {}) {\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n const styleKey = objectKey(style);\n const cacheKey = hashKey(text + styleKey);\n const cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n const size = zeroSize();\n const measureBox = options.box || defaultMeasureBox;\n const baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (let key in style) {\n let value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n const textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n }\n\n _baselineMarker() {\n const marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n}\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","const REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nconst SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n const parts = [];\n for (let key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n let hash = 0x811C9DC5;\n\n for (let i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","export default function bindEvents(element, events) {\n for (let eventName in events) {\n const eventNames = eventName.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","const DEG_TO_RAD = Math.PI / 180;\nconst MAX_NUM = Number.MAX_VALUE;\nconst MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = (data) => {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = (data) => {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = () => promise._state;\n\n return promise;\n}\n","const UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","let defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","export default function elementOffset(element) {\n const box = element.getBoundingClientRect();\n\n const documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n const { width, height } = size;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n const size = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size.width, 10),\n height: parseInt(size.height, 10)\n };\n }\n}","export default function elementStyles(element, styles) {\n const result = {};\n const style = window.getComputedStyle(element) || {};\n const stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (let idx = 0; idx < stylesArray.length; idx++) {\n let field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import { encodeUTF8 } from './encode-utf';\n\nconst KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n let output = \"\";\n let i = 0;\n\n const utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n let chr1 = utfInput.charCodeAt(i++);\n let chr2 = utfInput.charCodeAt(i++);\n let chr3 = utfInput.charCodeAt(i++);\n\n let enc1 = chr1 >> 2;\n let enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n let enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n let enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","const fromCharCode = String.fromCharCode;\n\nexport const BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n let output = \"\";\n\n for (let i = 0; i < input.length; i++) {\n let code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n const hi = code;\n const low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n let output = '';\n\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n const lead = ((c - 0x10000) >> 10) + 0xD800;\n const trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e = {}) {\n return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","const now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n const power = pow(precision);\n return Math.round(value * power) / power;\n}","export default function unbindEvents(element, events = {}) {\n for (let name in events) {\n const eventNames = name.trim().split(\" \");\n for (let idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\n\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","export default function isString(value) {\n return typeof value === \"string\";\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\n\nclass IntlError {\n constructor({ name, message }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n }\n\n formatMessage(...values) {\n const flattenValues = flatten(values);\n\n const formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return `${this.name}: ${formattedMessage}`;\n }\n\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\n\nconst flatten = function(arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\n\nconst toIntlErrors = function(errors) {\n const predicate = function(prev, name) {\n prev[name] = new IntlError({ name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nconst errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport const cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _unicodeVersion: \"14.0.0\",\n _cldrVersion: \"41\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n approximatelySign: \"~\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"M/d/y GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisecond\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\n\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\n\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\n\nexport const POINT = \".\";\nexport const EMPTY = \"\";\n\nexport const DEFAULT_LOCALE = \"en\";\n\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\n\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nconst datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n\n for (let field in fields) {\n const [ fieldName, formatType = 'wide' ] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[ pathIdx ];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n const length = parts.length;\n\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n const name = info.name;\n const identity = info.identity;\n let territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","const MILLISECOND = 'duration-millisecond';\nconst UNIT_PATTERN_ONE = 'unitPattern-count-one';\nconst UNIT_PATTERN_OTHER = 'unitPattern-count-other';\nconst placeholderPattern = /\\{0\\}\\s?/;\n\nfunction extractUnit(unit) {\n const value = unit[UNIT_PATTERN_ONE] || unit[UNIT_PATTERN_OTHER];\n return value.replace(placeholderPattern, '');\n}\n\nexport default function loadUnits(localeInfo, units) {\n localeInfo.calendar.dateFields.millisecond = {\n narrow: extractUnit(units.narrow[MILLISECOND]),\n short: extractUnit(units.short[MILLISECOND]),\n wide: extractUnit(units.long[MILLISECOND])\n };\n}\n","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\nimport loadUnits from './load-units';\n\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n\n if (info.units) {\n loadUnits(localeInfo, info.units);\n } else {\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n }\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n const fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n const { type, nameType, standAlone, lower } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\n\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\n\nconst GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n const currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n const displays = [ currency ];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n const { value, currency, currencyDisplay = SYMBOL } = options;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL] || currency;\n } else {\n if (typeof value === \"undefined\" || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n const regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n const currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport const DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport const DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData, NoFirstDay } = errors;\n\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nconst { NoWeekData } = errors;\n\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n const display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","const MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\n\nconst trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n let { minimumFractionDigits, maximumFractionDigits, style } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${ NUMBER_PLACEHOLDER }`);\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const { style } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n let value = number;\n let symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n const { minimumFractionDigits, maximumFractionDigits } = fractionOptions(options);\n\n value = round(value, maximumFractionDigits);\n\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n\n const parts = value.split(POINT);\n\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n let pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n const result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nconst SHARP = \"#\";\nconst ZERO = \"0\";\n\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${ lastZero }}[1-9]*)0+$`, 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n let { number, format } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n let precision = fraction.length;\n let trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n let { number, format } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n let end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n const { start, end, negative, negativeZero, format, decimalIndex, lastZeroIndex, hasNegativeFormat, hasGroup } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n\n let style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n const info = localeInfo(locale);\n const options = formatOptions(format);\n\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nconst exponentRegExp = /[eE][-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n\n const currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nfunction divideBy100(number) {\n const strNumber = String(number);\n const pointIndex = strNumber.indexOf(POINT);\n const zeroesCount = 2;\n let result = number / Math.pow(10, zeroesCount);\n\n if (pointIndex === -1 || String(result).length <= strNumber.length + zeroesCount) {\n return result;\n }\n\n const fractionDigits = strNumber.length - pointIndex + 1 + zeroesCount;\n return parseFloat(result.toFixed(fractionDigits));\n}\n\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n const { negative: negativeCurrency, number: currencyNumber } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n let isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number = divideBy100(number);\n }\n\n return number;\n}\n","const formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n const values = arguments;\n\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\n\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\n\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nconst DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nconst specifiersRegex = {};\nconst resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\n\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n const { shortHours, optionalMinutes, separator, localizedName, zZeroOffset } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nconst formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n let formatLength = match.length;\n let result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n const toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nconst timeZoneOffsetRegExp = /([+|-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\n\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\n\nconst standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nconst FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nconst TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n let { format, idx } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n let regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n const { gmtFormat, gmtZeroFormat } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n const { shortHours, noSeparator, optionalMinutes, localizedName, zLiteral } = options;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nconst parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n const pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n let hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n const count = lookAhead(\"z\", state);\n\n const shortFormat = count < 4;\n\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n const count = lookAhead(\"Z\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n const count = lookAhead(\"x\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n const count = lookAhead(\"X\", state);\n\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n let { year, month, day, hours, minutes, seconds, milliseconds, pmHour, UTC, hoursOffset, minutesOffset } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return `${ leadingSpaces }${ value }${ trailingSpaces }`;\n}\n\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n let result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n const length = parseFormats.length;\n\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nconst LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n let value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n const names = NAME_TYPES[type];\n\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nconst formatRegExp = /\\{(\\d+)(:[^}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\n\nconst support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n\n get blob() {\n return blob();\n }\n};\n\nlet blob = function() {\n let supported;\n\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n const buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([ buffer ], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n\n blob = () => supported;\n return supported;\n};\n\n/* eslint-disable */\n\n// private property\nconst _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nconst encode = function(input) {\n let output = [];\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0, len = input.length, remainingBytes = len;\n\n let isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nconst decode = function(input) {\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0, resultIndex = 0;\n\n let dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n let totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n let output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n\n/* eslint-disable */\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nconst newBlob = function(part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nlet fromCharCodeSupportsTypedArrays = () => {\n let supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n\n fromCharCodeSupportsTypedArrays = () => supported;\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\n\nconst applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n }\n },\n\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nconst transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nconst getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nconst checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nconst MAX_VALUE_16BITS = 65535;\nconst MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nconst pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nconst delay = function(callback, args, self) {\n setTimeout(function() {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nconst extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nconst prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n\n\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/* eslint-disable */\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nclass GenericWorker {\n constructor(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n }\n\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push(chunk) {\n this.emit(\"data\", chunk);\n }\n\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end() {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n }\n\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error(e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n }\n\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on(name, listener) {\n this._listeners[name].push(listener);\n return this;\n }\n\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp() {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n }\n\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit(name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n }\n\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe(next) {\n return next.registerPrevious(this);\n }\n\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious(previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause() {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n }\n\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume() {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n }\n\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush() {}\n\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk(chunk) {\n this.push(chunk);\n }\n\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo(key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n }\n\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo() {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n }\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock() {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n }\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString() {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nlet utf8len = function(c) {\n const _utf8len = new Array(256);\n for (let i = 0; i < 256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function(c) {\n return _utf8len[c];\n };\n\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nconst utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nconst utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nclass Utf8DecodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk (chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : utf8decode(usableData),\n meta : chunk.meta\n });\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data : utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n }\n}\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nclass Utf8EncodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 encode\");\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nclass ConvertWorker extends GenericWorker {\n constructor(destType) {\n super(\"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/* eslint-disable */\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return encode(content);\n default :\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nclass StreamHelper {\n constructor (worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n }\n\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate(updateCb) {\n return accumulate(this, updateCb);\n }\n\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on(evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n }\n\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume() {\n delay(this._worker.resume, [], this._worker);\n return this;\n }\n\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause() {\n this._worker.pause();\n return this;\n }\n}\n\nconst base64 = false;\nconst binary = false;\nconst dir = false;\nconst createFolders = true;\nconst date = null;\nconst compression = null;\nconst compressionOptions = null;\nconst comment = null;\nconst unixPermissions = null;\nconst dosPermissions = null;\n\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n dir: dir,\n createFolders: createFolders,\n date: date,\n compression: compression,\n compressionOptions: compressionOptions,\n comment: comment,\n unixPermissions: unixPermissions,\n dosPermissions: dosPermissions\n});\n\n/* eslint-disable */\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nconst DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nclass DataWorker extends GenericWorker {\n constructor(dataP) {\n super(\"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this.data = null;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n }\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n _tickAndRepeat() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n };\n\n /**\n * Read and push a chunk.\n */\n _tick() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n }\n}\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nclass DataLengthProbe extends GenericWorker {\n constructor(propName) {\n super(\"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n if (chunk) {\n const length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n super.processChunk(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nlet makeTable = function() {\n // Use ordinary array, since untyped makes no boost here\n const table = [];\n\n for (let n =0; n < 256; n++){\n let c = n;\n for(let k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function() {\n return table;\n };\n\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n const t = makeTable();\n let end = pos + len;\n\n crc = crc ^ (-1);\n\n for (let i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n const isArray = getTypeOf(input) !== \"string\";\n\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nclass Crc32Probe extends GenericWorker {\n constructor() {\n super(\"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nclass CompressedObject {\n constructor(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n }\n\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker() {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n }\n\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker() {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n\n /**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\n static createWorkerFrom(uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n }\n}\n\n/* eslint-disable */\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nclass ZipObject {\n constructor(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n }\n\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream(type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n }\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async(type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n }\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker(compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n }\n\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker() {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n}\n\nlet arrayType = function() {\n const useTypedArray = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n const resolved = useTypedArray ? \"uint8array\" : \"array\";\n\n arrayType = function() {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nclass FlateWorker extends GenericWorker {\n constructor(action, options) {\n super(\"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n super.flush();\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n }\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this._pako = null;\n }\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n _createPako() {\n const params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = (data) => {\n this.push({\n data: data,\n meta: this.meta\n });\n };\n }\n}\n\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function(compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n\n uncompressWorker: function() {\n return new FlateWorker(\"Inflate\", {});\n }\n};\n\nconst STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function() {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function() {\n return new GenericWorker(\"STORE decompression\");\n }\n};\n\nvar compressions = {\n STORE,\n DEFLATE\n};\n\nconst LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nconst CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nconst CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nconst ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nconst ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nconst DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/* eslint-disable */\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nclass ZipFileWorker extends GenericWorker {\n constructor(streamFiles, comment, platform, encodeFileName) {\n super(\"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n\n this._sources = [];\n }\n\n /**\n * @see GenericWorker.push\n */\n push(chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n super.push({\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n }\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n openedSource(streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n }\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n closedSource(streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n }\n\n /**\n * Prepare the next source to be read.\n */\n prepareNextSource() {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n }\n\n /**\n * @see GenericWorker.registerPrevious\n */\n registerPrevious(previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if(!super.resume()) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n }\n\n /**\n * @see GenericWorker.error\n */\n error(e) {\n var sources = this._sources;\n if(!super.error(e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n }\n\n /**\n * @see GenericWorker.lock\n */\n lock() {\n super.lock();\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nconst generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n\n/* eslint-disable */\n\nclass DataReader {\n constructor(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n }\n\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset(offset) {\n this.checkIndex(this.index + offset);\n }\n\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n }\n\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n }\n\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip(n) {\n this.setIndex(this.index + n);\n }\n\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt(i) {\n // see implementations\n }\n\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n }\n\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString(size) {\n return transformTo(\"string\", this.readData(size));\n }\n\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData(size) {\n // see implementations\n }\n\n /**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\n lastIndexOfSignature(sig) {\n // see implementations\n }\n\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature(sig) {\n // see implementations\n }\n\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n}\n\n/* eslint-disable */\n\nclass ArrayReader extends DataReader {\n constructor(data) {\n super(data);\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data[this.zero + i];\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\nclass StringReader extends DataReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data.charCodeAt(this.zero + i);\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n const data = this.readData(4);\n return sig === data;\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n const result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/* eslint-disable */\n\nclass Uint8ArrayReader extends ArrayReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n const type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\n/* eslint-disable */\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntry {\n constructor(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n }\n\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n }\n\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n }\n\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n }\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes() {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n }\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n }\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n }\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n}\n\n/* eslint-disable */\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntries {\n constructor(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n }\n\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n }\n\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n }\n\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n }\n\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n }\n\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n }\n\n /**\n * Read the central directory.\n */\n readCentralDir() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n }\n\n /**\n * Read the end of central directory.\n */\n readEndOfCentral() {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ; else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n }\n\n prepareReader(data) {\n this.reader = readerFor(data);\n }\n\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n}\n\n/* eslint-disable */\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n}\n\n/* eslint-disable */\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders$1) {\n createFolders$1 = (typeof createFolders$1 !== 'undefined') ? createFolders$1 : createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nclass JSZip {\n constructor() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n const newObj = new JSZip();\n for (const i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n }\n\n /**\n * @see loadAsync\n */\n load() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n }\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n }\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n }\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n }\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n }\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream(options) {\n var worker, opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n }\n\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n }\n\n loadAsync(data, options) {\n return load.apply(this, [data, options]);\n }\n\n static loadAsync(content, options) {\n return new JSZip().loadAsync(content, options);\n }\n \n static get support() {\n return support;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get version() {\n return \"3.2.2-esm\";\n }\n\n static get external() {\n return external;\n }\n}\n\nexport { JSZip as default };\n","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return ((1461 * (y + 4800 + ((m - 13) / 12 | 0))) / 4 | 0) +\n ((367 * (m - 1 - 12 * ((m - 13) / 12 | 0))) / 12 | 0) -\n ((3 * (((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0))) / 4 | 0) +\n d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nconst BASE_DATE = dateToJulianDays(1900, 0, -1);\n\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\n\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\n\nexport default function dateToSerial(date) {\n const time = packTime(date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds());\n const serial = packDate(date.getFullYear(),\n date.getMonth(),\n date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}\n","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\n\nconst MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nconst DATA_URL_PREFIX = `data:${MIME_TYPE};base64,`;\nconst DATA_URL_OPTIONS = { compression: \"DEFLATE\", type: \"base64\" };\nconst BLOB_OPTIONS = { compression: \"DEFLATE\", type: \"blob\" };\nconst ARRAYBUFFER_OPTIONS = { compression: \"DEFLATE\", type: \"arraybuffer\" };\n\n/* eslint-disable key-spacing, no-confusing-arrow, no-constant-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\n\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\n\nconst parseJSON = JSON.parse.bind(JSON);\n\nfunction ESC(val) {\n return String(val)\n .replace(/&/g, \"&\")\n .replace(//g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/\\'/g, \"'\");\n}\n\nfunction repeat(count, func) {\n let str = \"\";\n for (let i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\n\nfunction foreach(arr, func) {\n let str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach((key, i) => {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\n\nconst XMLHEAD = '\\r';\n\nconst RELS = `${XMLHEAD}\n \n \n \n \n `;\n\nconst CORE = ({ creator, lastModifiedBy, created, modified }) => `${XMLHEAD}\n \n ${ESC(creator)}\n ${ESC(lastModifiedBy)}\n ${ESC(created)}\n ${ESC(modified)}\n`;\n\nconst APP = ({ sheets }) => `${XMLHEAD}\n\n Microsoft Excel\n 0\n false\n \n \n \n Worksheets\n \n \n ${sheets.length}\n \n \n \n \n ${\n foreach(sheets, (sheet, i) =>\n sheet.options.title\n ? `${ESC(sheet.options.title)}`\n : `Sheet${i + 1}`\n )\n }\n \n false\n false\n false\n 14.0300\n`;\n\nconst CONTENT_TYPES = ({ sheetCount, commentFiles, drawingFiles }) => `${XMLHEAD}\n\n \n \n \n \n \n \n \n \n \n ${repeat(sheetCount, idx =>\n ``)}\n ${foreach(commentFiles, filename =>\n ``)}\n ${foreach(drawingFiles, filename =>\n ``)}\n \n \n`;\n\nconst WORKBOOK = ({ sheets, filterNames, userNames }) => `${XMLHEAD}\n\n \n \n \n \n \n \n ${foreach(sheets, ({ options }, i) => {\n const name = options.name || options.title || `Sheet${i + 1}`;\n const state = options.state || 'visible';\n return ``;\n })}\n \n ${filterNames.length || userNames.length ? `\n \n ${foreach(filterNames, (f) => `\n `)}\n ${foreach(userNames, (f) => `\n `)}\n ` : ''}\n \n`;\n\nconst WORKSHEET = ({\n frozenColumns,\n frozenRows,\n columns,\n defaults,\n data,\n index,\n mergeCells,\n autoFilter,\n filter,\n showGridLines,\n hyperlinks,\n validations,\n defaultCellStyleId,\n rtl,\n legacyDrawing,\n drawing,\n lastRow,\n lastCol,\n hasDisabledCells,\n}) => `${XMLHEAD}\n\n ${lastRow && lastCol ? `` : \"\"}\n\n \n \n ${frozenRows || frozenColumns ? `\n ` : ''}\n \n \n\n \n\n ${defaultCellStyleId != null || (columns && columns.length > 0) ? `\n \n ${!columns || !columns.length ? `\n ` : ''}\n ${foreach(columns, (column, ci) => {\n const columnIndex = typeof column.index === \"number\" ? column.index + 1 : (ci + 1);\n if (column.width === 0) {\n return ``;\n }\n return ``;\n })}\n ` : ''}\n\n \n ${foreach(data, (row, ri) => {\n const rowIndex = typeof row.index === \"number\" ? row.index + 1 : (ri + 1);\n return `\n \n ${foreach(row.data, (cell) => `\n \n ${cell.formula != null ? writeFormula(cell.formula) : ''}\n ${cell.value != null ? `${ESC(cell.value)}` : ''}\n `)}\n \n `;})}\n \n\n ${hasDisabledCells ? `` : ''}\n\n ${autoFilter ? ``\n : filter ? spreadsheetFilters(filter) : ''}\n\n ${mergeCells.length ? `\n \n ${foreach(mergeCells, (ref) => ``)}\n ` : ''}\n\n ${validations.length ? `\n \n ${foreach(validations, (val) => `\n \n ${val.formula1 ? `${ESC(val.formula1)}` : ''}\n ${val.formula2 ? `${ESC(val.formula2)}` : ''}\n `)}\n ` : ''}\n\n ${hyperlinks.length ? `\n \n ${foreach(hyperlinks, (link) => `\n `)}\n ` : ''}\n\n \n ${drawing ? `` : ''}\n ${legacyDrawing ? `` : ''}\n`;\n\nconst WORKBOOK_RELS = ({ count }) => `${XMLHEAD}\n\n ${repeat(count, (idx) => `\n `)}\n \n \n`;\n\nconst WORKSHEET_RELS = ({ hyperlinks, comments, sheetIndex, drawings }) => `${XMLHEAD}\n\n ${foreach(hyperlinks, (link) => `\n `)}\n ${!comments.length ? '' : `\n \n `}\n ${!drawings.length ? '' : `\n `}\n`;\n\nconst COMMENTS_XML = ({ comments }) => `${XMLHEAD}\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n \n \n \n \n ${ESC(comment.text)}\n \n \n `)}\n \n`;\n\nconst LEGACY_DRAWING = ({ comments }) => `\\\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n ${comment.anchor}\n False\n ${comment.row}\n ${comment.col}\n \n `)}\n`;\n\nconst DRAWINGS_XML = (drawings) => `${XMLHEAD}\n\n ${foreach(drawings, (drawing, index) => `\n \n \n ${drawing.col}\n ${drawing.colOffset}\n ${drawing.row}\n ${drawing.rowOffset}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `)}\n`;\n\nconst DRAWINGS_RELS_XML = (rels) => `${XMLHEAD}\n\n ${foreach(rels, rel => `\n `)}\n`;\n\nconst SHARED_STRINGS = ({ count, uniqueCount, indexes }) => `${XMLHEAD}\n\n ${foreach(Object.keys(indexes), (index) => `\n ${ESC(index.substring(1))}`)}\n`;\n\nconst STYLES = ({\n formats,\n fonts,\n fills,\n borders,\n styles\n}) => `${XMLHEAD}\n\n \n ${foreach(formats, (format, fi) => `\n `)}\n \n \n \n \n \n \n \n \n \n ${foreach(fonts, (font) => `\n \n ${font.bold ? '' : ''}\n ${font.italic ? '' : ''}\n ${font.underline ? '' : ''}\n \n ${font.color ? `` : ''}\n ${font.fontFamily ? `\n \n \n ` : `\n \n \n \n `}\n `)}\n \n \n \n \n ${foreach(fills, (fill) => `\n ${fill.background ? `\n \n \n \n \n \n ` : ''}`)}\n \n \n \n ${foreach(borders, borderTemplate)}\n \n \n \n \n \n \n ${foreach(styles, (style) => `\n \n ${style.textAlign || style.verticalAlign || style.wrap ? `\n \n ` : ''}\n ${style.disabled != null ? `\n \n ` : ''}\n \n `)}\n \n \n \n \n \n \n`;\n\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return `${ESC(formula)}`;\n }\n // array formulas\n return `${ESC(formula.src)}`;\n}\n\nfunction numChar(colIndex) {\n const letter = Math.floor(colIndex / 26) - 1;\n\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + (colIndex % 26));\n}\n\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\n\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\n\nfunction filterRowIndex(options) {\n const frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\n\nfunction toWidth(px) {\n const maximumDigitWidth = 7;\n return (px / maximumDigitWidth) - (Math.floor(128 / maximumDigitWidth) / 256);\n}\n\nfunction toHeight(px) {\n return px * 0.75;\n}\n\nfunction stripFunnyChars(value) {\n return String(value)\n .replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\n\nclass Worksheet {\n\n constructor(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map(\n (link, i) => Object.assign({}, link, { rId: `link${i}` }));\n }\n\n relsToXML() {\n const hyperlinks = this._hyperlinks;\n const comments = this._comments;\n const drawings = this._drawings;\n\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks : hyperlinks,\n comments : comments,\n sheetIndex : this.options.sheetIndex,\n drawings : drawings\n });\n }\n }\n\n toXML(index) {\n const mergeCells = this.options.mergedCells || [];\n const rows = this.options.rows || [];\n const data = inflate(rows, mergeCells);\n\n this._readCells(data);\n\n let autoFilter = this.options.filter;\n let filter;\n if (autoFilter && (typeof autoFilter.from === \"number\") && (typeof autoFilter.to === \"number\")) {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n\n const validations = [];\n for (let i in this._validations) {\n if (Object.prototype.hasOwnProperty.call(this._validations, i)) {\n validations.push(this._validations[i]);\n }\n }\n\n let defaultCellStyleId = null;\n let defaultCellStyle = this.options.defaultCellStyle;\n if (this._hasDisabledCells) {\n if (!defaultCellStyle) {\n defaultCellStyle = { disabled: false };\n } else {\n defaultCellStyle = Object.assign({ disabled: false }, defaultCellStyle);\n }\n }\n if (defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(defaultCellStyle);\n }\n\n const freezePane = this.options.freezePane || {};\n const defaults = this.options.defaults || {};\n const lastRow = this.options.rows ? this._getLastRow() : 1;\n const lastCol = this.options.rows ? this._getLastCol() : 1;\n\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? `vml${this.options.sheetIndex}` : null,\n drawing: this._drawings.length ? `drw${this.options.sheetIndex}` : null,\n lastRow: lastRow,\n lastCol: lastCol,\n hasDisabledCells: this._hasDisabledCells,\n });\n }\n\n commentsXML() {\n if (this._comments.length) {\n return COMMENTS_XML({ comments: this._comments });\n }\n }\n\n drawingsXML(images) {\n if (this._drawings.length) {\n let rels = {};\n let main = this._drawings.map(drw => {\n let ref = parseRef(drw.topLeftCell);\n let img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: `img${drw.image}`,\n target: images[drw.image].target\n };\n }\n return {\n col : ref.col,\n colOffset : pixelsToExcel(drw.offsetX),\n row : ref.row,\n rowOffset : pixelsToExcel(drw.offsetY),\n width : pixelsToExcel(drw.width),\n height : pixelsToExcel(drw.height),\n imageId : img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n }\n\n legacyDrawing() {\n if (this._comments.length) {\n return LEGACY_DRAWING({ comments: this._comments });\n }\n }\n\n _lookupString(value) {\n const key = \"$\" + value;\n const index = this._strings.indexes[key];\n let result;\n\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount ++;\n }\n\n this._strings.count ++;\n\n return result;\n }\n\n _lookupStyle(style) {\n const json = JSON.stringify(style);\n\n if (json === \"{}\") {\n return 0;\n }\n\n let index = indexOf(json, this._styles);\n\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n }\n\n _lookupBorder(border) {\n const json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n\n let index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n }\n\n _readCells(rowData) {\n for (let i = 0; i < rowData.length; i++) {\n const row = rowData[i];\n const cells = row.cells;\n\n row.data = [];\n\n for (let j = 0; j < cells.length; j++) {\n const cellData = this._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n }\n\n _cell(data, rowIndex, cellIndex) {\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n\n let value = data.value;\n\n let border = {};\n\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n\n if (data.dBorders) {\n border.diagonal = data.dBorders;\n }\n\n border = this._lookupBorder(border);\n\n const defStyle = this.options.defaultCellStyle || {};\n let style = { borderId: border };\n\n (add => {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) { add(\"fontName\", \"fontFamily\"); }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) { add(\"hAlign\", \"textAlign\"); }\n if (!add(\"verticalAlign\")) { add(\"vAlign\", \"verticalAlign\"); }\n add(\"wrap\");\n add(\"indent\");\n if (!add(\"disabled\")) {\n if (add(\"enable\")) {\n style.disabled = !style.enable;\n delete style.enable;\n }\n }\n if (style.disabled) {\n this._hasDisabledCells = true;\n }\n })((prop, target) => {\n let val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n });\n\n const columns = this.options.columns || [];\n\n const column = columns[cellIndex];\n let type = typeof value;\n\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n let displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n\n style = this._lookupStyle(style);\n\n const cellName = ref(rowIndex, cellIndex);\n\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n\n if (data.comment) {\n let anchor = [\n cellIndex + 1, // start column\n 15, // start column offset\n rowIndex, // start row\n 10, // start row offset\n cellIndex + 3, // end column\n 15, // end column offset\n rowIndex + 3, // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref : cellName,\n text : data.comment,\n row : rowIndex,\n col : cellIndex,\n anchor : anchor.join(\", \")\n });\n }\n\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n }\n\n _addValidation(v, ref) {\n const tmp = {\n showErrorMessage : v.type === \"reject\" ? 1 : 0,\n formula1 : v.from,\n formula2 : v.to,\n type : MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator : MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank : v.allowNulls ? 1 : 0,\n showDropDown : v.showButton ? 0 : 1, // LOL, Excel!\n error : v.messageTemplate,\n errorTitle : v.titleTemplate\n };\n const json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n }\n\n _getLastRow() {\n return countData(this.options.rows);\n }\n\n _getLastCol() {\n let last = 0;\n this.options.rows.forEach(function(row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n }\n}\n\nfunction countData(data) {\n let last = data.length;\n data.forEach(function(el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\n\nconst MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo : \"greaterThanOrEqual\",\n lessThanOrEqualTo : \"lessThanOrEqual\"\n};\n\nconst MAP_EXCEL_TYPE = {\n // eslint-disable-next-line id-denylist\n number: \"decimal\"\n};\n\nconst defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\n\nfunction maybeRGB(value) {\n function hex(val) {\n let x = parseInt(val, 10).toString(16);\n return x.length < 2 ? \"0\" + x : x;\n }\n\n let m = /^rgba?\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+)\\s*)?\\)/i.exec(value.trim());\n if (m) {\n let opacity = (m[4] ? parseFloat(m[4]) : 1) * 255 | 0;\n return \"#\" + hex(opacity) + hex(m[1]) + hex(m[2]) + hex(m[3]);\n }\n return value;\n}\n\nfunction convertColor(value) {\n let color = maybeRGB(value);\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function($0, $1) {\n return $1 + $1;\n });\n }\n\n color = color.substring(1).toUpperCase();\n\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n\n return color;\n}\n\nclass Workbook {\n\n constructor(options) {\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n\n this._sheets = map(this.options.sheets || [], (options, i) => {\n options.defaults = this.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this._strings, this._styles, this._borders);\n });\n }\n\n imageFilename(mimeType) {\n const id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return `image${id}.jpg`;\n case \"image/png\":\n return `image${id}.png`;\n case \"image/gif\":\n return `image${id}.gif`;\n default:\n return `image${id}.bin`; // XXX: anything better to do here?\n }\n }\n\n toZIP() {\n const zip = createZip();\n\n const docProps = zip.folder(\"docProps\");\n\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n\n const sheetCount = this._sheets.length;\n\n docProps.file(\"app.xml\", APP({ sheets: this._sheets }));\n\n const rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n\n const xl = zip.folder(\"xl\");\n\n const xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({ count: sheetCount }));\n\n if (this._images) {\n const media = xl.folder(\"media\");\n Object.keys(this._images).forEach(id => {\n const img = this._images[id];\n const filename = this.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = `../media/${filename}`;\n });\n }\n\n const sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function(sheet, index) {\n const options = sheet.options;\n const sheetName = (options.name || options.title || \"Sheet\" + (index + 1));\n sheetIds[sheetName.toLowerCase()] = index;\n const filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n let a = filter.ref.split(\":\");\n let from = parseRef(a[0]);\n let to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function(def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n\n const worksheets = xl.folder(\"worksheets\");\n const drawings = xl.folder(\"drawings\");\n const drawingsRels = drawings.folder(\"_rels\");\n const sheetRels = worksheets.folder(\"_rels\");\n const commentFiles = [];\n const drawingFiles = [];\n\n for (let idx = 0; idx < sheetCount; idx++) {\n const sheet = this._sheets[idx];\n const sheetName = `sheet${idx + 1}.xml`;\n const sheetXML = sheet.toXML(idx); // must be called before relsToXML\n const relsXML = sheet.relsToXML();\n const commentsXML = sheet.commentsXML();\n const legacyDrawing = sheet.legacyDrawing();\n const drawingsXML = sheet.drawingsXML(this._images);\n\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n let name = `comments${sheet.options.sheetIndex}.xml`;\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file(`vmlDrawing${sheet.options.sheetIndex}.vml`, legacyDrawing);\n }\n if (drawingsXML) {\n let name = `drawing${sheet.options.sheetIndex}.xml`;\n drawings.file(name, drawingsXML.main);\n drawingsRels.file(`${name}.rels`, drawingsXML.rels);\n drawingFiles.push(name);\n }\n\n worksheets.file(sheetName, sheetXML);\n }\n\n const borders = map(this._borders, parseJSON);\n\n const styles = map(this._styles, parseJSON);\n\n const hasFont = function(style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n\n const convertFontSize = function(value) {\n let fontInPx = Number(value);\n let fontInPt;\n\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n\n return fontInPt;\n };\n\n const fonts = map(styles, function(style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n\n if (style.color) {\n style.color = convertColor(style.color);\n }\n\n if (hasFont(style)) {\n return style;\n }\n });\n\n const formats = map(styles, function(style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n\n const fills = map(styles, function(style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function(style) {\n const result = {};\n\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n\n if (style.disabled != null) {\n result.disabled = style.disabled;\n }\n\n return result;\n })\n }));\n\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n\n return zip;\n }\n\n toDataURL() {\n const zip = this.toZIP();\n\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n }\n\n toBlob() {\n const zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([ zip.generate(ARRAYBUFFER_OPTIONS) ], { type: MIME_TYPE });\n }\n}\n\nfunction borderStyle(width) {\n let alias = \"thin\";\n\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n\n return alias;\n}\n\nfunction borderSideTemplate(name, style) {\n let result = \"\";\n\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"\";\n }\n result += \"\";\n }\n\n return result;\n}\n\nfunction borderTemplate(border) {\n let diag = border.diagonal ? border.diagonal.type : 0;\n return `\n ${borderSideTemplate(\"left\", border.left)}\n ${borderSideTemplate(\"right\", border.right)}\n ${borderSideTemplate(\"top\", border.top)}\n ${borderSideTemplate(\"bottom\", border.bottom)}\n ${borderSideTemplate(\"diagonal\", border.diagonal)}\n `;\n}\n\nconst EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n const rowData = [];\n const rowsByIndex = [];\n\n indexRows(rows, function(row, index) {\n const data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n\n const sorted = sortByIndex(rowData).slice(0);\n const ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n\n for (let i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n\n return sortByIndex(rowData);\n}\n\nfunction indexRows(rows, callback) {\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) {\n continue;\n }\n\n let index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n\n callback(row, index);\n }\n}\n\nfunction sortByIndex(items) {\n return items.sort(function(a, b) {\n return a.index - b.index;\n });\n}\n\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\n\nfunction getSpan(mergedCells, ref) {\n for (let i = 0; i < mergedCells.length; ++i) {\n const range = mergedCells[i];\n const a = range.split(\":\");\n let topLeft = a[0];\n if (topLeft === ref) {\n let bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\n\nfunction parseRef(ref) {\n function getcol(str) {\n let upperStr = str.toUpperCase();\n let col = 0;\n for (let i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n\n const m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\n\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\n\nfunction fillCells(data, ctx) {\n const row = data._source;\n const rowIndex = data.index;\n const cells = row.cells;\n const cellData = data.cells;\n\n if (!cells) {\n return;\n }\n\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i] || EMPTY_CELL;\n\n let rowSpan = cell.rowSpan || 1;\n let colSpan = cell.colSpan || 1;\n\n const cellIndex = insertCell(cellData, cell);\n const topLeftRef = ref(rowIndex, cellIndex);\n\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n const tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n\n spanCell(cell, cellData, cellIndex, colSpan);\n\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells,\n topLeftRef + \":\" + ref(rowIndex + rowSpan - 1,\n cellIndex + colSpan - 1));\n }\n\n if (rowSpan > 1) {\n for (let ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n let nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = { index: ri, cells: [] };\n ctx.rowData.push(nextRow);\n }\n\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\n\nfunction insertCell(data, cell) {\n let index;\n\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n\n return index;\n}\n\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\n\nfunction appendCell(data, cell) {\n let index = data.length;\n\n for (let i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n\n return index;\n}\n\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (let i = 1; i < colSpan; i++) {\n const tmp = {\n borderTop : cell.borderTop,\n borderRight : cell.borderRight,\n borderBottom : cell.borderBottom,\n borderLeft : cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\n\nconst SPREADSHEET_FILTERS = ({ ref, columns, generators }) => `\n\n ${foreach(columns, (col) => `\n \n ${generators[col.filter](col)}\n \n `)}\n`;\n\nconst SPREADSHEET_CUSTOM_FILTER = ({ logic, criteria }) => `\n\n${foreach(criteria, (f) => {\n let op = spreadsheetFilters.customOperator(f);\n let val = spreadsheetFilters.customValue(f);\n return ``;\n})}\n`;\n\nconst SPREADSHEET_DYNAMIC_FILTER = ({ type }) =>\n``;\n\nconst SPREADSHEET_TOP_FILTER = ({ type, value }) =>\n``;\n\nconst SPREADSHEET_VALUE_FILTER = ({ blanks, values }) =>\n `\n ${foreach(values, (value) => `\n `)}\n `;\n\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom : SPREADSHEET_CUSTOM_FILTER,\n dynamic : SPREADSHEET_DYNAMIC_FILTER,\n top : SPREADSHEET_TOP_FILTER,\n value : SPREADSHEET_VALUE_FILTER\n }\n });\n}\n\nspreadsheetFilters.customOperator = function(f) {\n return {\n eq : \"equal\",\n gt : \"greaterThan\",\n gte : \"greaterThanOrEqual\",\n lt : \"lessThan\",\n lte : \"lessThanOrEqual\",\n ne : \"notEqual\",\n\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\n\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) { // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\n\nspreadsheetFilters.customValue = function(f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n\n default:\n return f.value;\n }\n};\n\nspreadsheetFilters.dynamicFilterType = function(type) {\n return {\n quarter1 : \"Q1\",\n quarter2 : \"Q2\",\n quarter3 : \"Q3\",\n quarter4 : \"Q4\",\n january : \"M1\",\n february : \"M2\",\n march : \"M3\",\n april : \"M4\",\n may : \"M5\",\n june : \"M6\",\n july : \"M7\",\n august : \"M8\",\n september : \"M9\",\n october : \"M10\",\n november : \"M11\",\n december : \"M12\"\n }[type.toLowerCase()] || type;\n};\n\nexport {\n Workbook,\n Worksheet\n};\n","import JSZip from '@progress/jszip-esm';\n\nexport default function createZip() {\n return new JSZip();\n}\n","let current = {\n toString: (value) => value\n};\n\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n\n static toString(value, format) {\n return current.toString(value, format);\n }\n}\n\nexport default IntlService;","export default function map(array, func) {\n return array.reduce((result, el, i) => {\n const val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nconst align = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, margin = {} } = options;\n const anchorHorizontal = anchorAlign.horizontal;\n const anchorVertical = anchorAlign.vertical;\n const elementHorizontal = elementAlign.horizontal;\n const elementVertical = elementAlign.vertical;\n\n let horizontalMargin = margin.horizontal || 0;\n let verticalMargin = margin.vertical || 0;\n\n let top = anchorRect.top;\n let left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nconst getWindow = (element) => ownerDocument(element).defaultView;\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nconst getDocument = (element) => ownerDocument(element).documentElement;\n\nexport default getDocument;\n","let cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n const div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n const win = wnd(element);\n const document = getDocument(element);\n const result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import windowViewport from './window-viewport';\n\nconst boundingOffset = (element) => {\n if (!element.getBoundingClientRect) {\n const viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n const { bottom, left, right, top } = element.getBoundingClientRect();\n\n return {\n bottom,\n left,\n right,\n top\n };\n};\n\nexport default boundingOffset;\n","const rectOfHiddenElement = (element) => {\n const { display, left, position } = element.style;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n const rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nconst offset = (element) => {\n let rect = element.getBoundingClientRect();\n let { left, top } = rect;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default (element, until) => {\n const result = [];\n let next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n const documentElement = docElement(element);\n const win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","import scrollPosition from './scroll-position';\n\nexport default (element) => {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import documentElement from './document';\n\nconst offsetParent = (element) => {\n let offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default (element, parent, scale = 1) => {\n const offsetParentElement = parent ? offsetParent(parent) : null;\n const { top, left, height, width } = position(element, offsetParentElement);\n const { x, y } = offsetParentScrollPosition(offsetParentElement, element);\n const ownerDocument = element.ownerDocument;\n const positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nconst position = (element, parent) => {\n const win = wnd(element);\n const elementStyles = win.getComputedStyle(element);\n const offset = offsetRect(element);\n const parentElement = parent || offsetParent(element);\n\n const ownerDocument = element.ownerDocument;\n const useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n let parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n const parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default (offsetParentElement, element) => ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n);\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n const parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nconst fit = function(position, size, viewPortSize) {\n let output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nconst flip = function({ offset, size, anchorSize, viewPortSize, anchorAlignPoint, elementAlignPoint, margin }) {\n let output = 0;\n\n const isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n const isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n const marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n const isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nconst restrictToView = (options) => {\n const { anchorRect, anchorAlign, elementRect, elementAlign, collisions, viewPort, margin = {} } = options;\n const { top: elementTop, left: elementLeft, height: elementHeight, width: elementWidth } = elementRect;\n const { height: viewPortHeight, width: viewPortWidth } = viewPort;\n const horizontalMargin = margin.horizontal || 0;\n const verticalMargin = margin.vertical || 0;\n\n let left = 0;\n let top = 0;\n\n const isVerticalFit = collisions.vertical === collision.fit;\n const isHorizontalFit = collisions.horizontal === collision.fit;\n const isVerticalFlip = collisions.vertical === collision.flip;\n const isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n const flippedVertical = isVerticalFlip && top !== 0;\n const flippedHorizontal = isHorizontalFlip && left !== 0;\n const fittedVertical = isVerticalFit && top !== 0;\n const fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","export default (element) => {\n const result = [];\n\n let sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default (anchor, container) => {\n const parentElements = parents(anchor);\n let containerElement = container;\n let siblingElements;\n let result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n (list, p) => list.concat(siblingElements.filter(s => s === p)),\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) { return rect; }\n\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n let result;\n let called = false;\n\n return (...args) => {\n if (called) {\n return result;\n }\n\n result = fun(...args);\n called = true;\n return result;\n };\n}\n\nconst hasRelativeStackingContext = memoize((elementSource) => {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n const currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n const top = 10;\n const parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = `
child
`;\n\n currentDocument.body.appendChild(parent);\n\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nconst canUseDOM = () => Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nconst utils = {\n eitherRect,\n scaleRect,\n removeStackingOffset,\n hasRelativeStackingContext,\n canUseDOM\n};\n\nexport default utils;","const caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst infoSolidIcon = {\n name: 'info-solid',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbDownOutlineIcon = {\n name: 'thumb-down-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbDownIcon = {\n name: 'thumb-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbUpOutlineIcon = {\n name: 'thumb-up-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbUpIcon = {\n name: 'thumb-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sparklesIcon = {\n name: 'sparkles',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paragraphMarkIcon = {\n name: 'paragraph-mark',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paragraphHeightIcon = {\n name: 'paragraph-height',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nconst chartChoroplethIcon = {\n name: 'chart-choropleth',\n content: '',\n viewBox: '0 0 512 512'\n};\n\nexport { accessibilityIcon, aggregateFieldsIcon, alignBottomIcon, alignCenterIcon, alignItemsBaselineAltIcon, alignItemsBaselineIcon, alignItemsCenterAltIcon, alignItemsCenterIcon, alignItemsEndAltIcon, alignItemsEndIcon, alignItemsStartAltIcon, alignItemsStartIcon, alignItemsStretchAltIcon, alignItemsStretchIcon, alignJustifyIcon, alignLeftIcon, alignMiddleIcon, alignRemoveIcon, alignRightIcon, alignSelfCenterAltIcon, alignSelfCenterIcon, alignSelfEndAltIcon, alignSelfEndIcon, alignSelfStartAltIcon, alignSelfStartIcon, alignSelfStretchAltIcon, alignSelfStretchIcon, alignToGridIcon, alignTopIcon, allIcon, anchorIcon, applyFormatIcon, arrowDownIcon, arrowLeftIcon, arrowOverflowDownIcon, arrowRightIcon, arrowRotateCcwIcon, arrowRotateCcwSmallIcon, arrowRotateCwIcon, arrowRotateCwSmallIcon, arrowUpIcon, arrowsAxesIcon, arrowsLeftRightIcon, arrowsMoveIcon, arrowsNoChangeIcon, arrowsNoRepeatIcon, arrowsSwapIcon, arrowsTopBottomIcon, barcodeIcon, barcodeOutlineIcon, barcodeQrCodeScannerIcon, barcodeScannerIcon, behanceBoxIcon, behanceIcon, bellIcon, binocularsIcon, bloggerBoxIcon, bloggerIcon, blurIcon, boldIcon, bookIcon, borderBottomIcon, borderColorIcon, borderLeftIcon, borderRadiusBottomLeftIcon, borderRadiusBottomRightIcon, borderRadiusIcon, borderRadiusTopLeftIcon, borderRadiusTopRightIcon, borderRightIcon, borderStyleBottomIcon, borderStyleIcon, borderStyleLeftIcon, borderStyleRightIcon, borderStyleTopIcon, borderTopIcon, borderTypeIcon, bordersAllIcon, bordersInsideHorizontalIcon, bordersInsideIcon, bordersInsideVerticalIcon, bordersNoneIcon, bordersOutsideIcon, bordersShowHideIcon, boxSizingIcon, brightnessContrastIcon, bringBackwardIcon, bringForwardIcon, bringToBackIcon, bringToFrontIcon, brushIcon, buildingBlocksIcon, buttonIcon, calculatorIcon, calendarDateIcon, calendarIcon, cameraIcon, cancelCircleIcon, cancelIcon, cancelOutlineIcon, caretAltDownIcon, caretAltExpandIcon, caretAltLeftIcon, caretAltRightIcon, caretAltToBottomIcon, caretAltToLeftIcon, caretAltToRightIcon, caretAltToTopIcon, caretAltUpIcon, caretBlIcon, caretBrIcon, caretDoubleAltDownIcon, caretDoubleAltLeftIcon, caretDoubleAltRightIcon, caretDoubleAltUpIcon, caretTlIcon, caretTrIcon, cartIcon, categorizeIcon, cellSplitHorizontallyIcon, cellSplitVerticallyIcon, cellsMergeHorizontallyIcon, cellsMergeIcon, cellsMergeVerticallyIcon, changeManuallyIcon, chartAreaClusteredIcon, chartAreaRangeIcon, chartAreaStacked100Icon, chartAreaStackedIcon, chartBarClusteredIcon, chartBarRangeIcon, chartBarStacked100Icon, chartBarStackedIcon, chartBubbleIcon, chartCandlestickIcon, chartChoroplethIcon, chartColumnClusteredIcon, chartColumnRangeIcon, chartColumnStacked100Icon, chartColumnStackedIcon, chartDoughnutIcon, chartLineIcon, chartLineMarkersIcon, chartLineStacked100Icon, chartLineStacked100MarkersIcon, chartLineStackedIcon, chartLineStackedMarkersIcon, chartOhlcIcon, chartPieIcon, chartRadarFilledIcon, chartRadarIcon, chartRadarMarkersIcon, chartRoseIcon, chartScatterIcon, chartScatterSmoothLinesIcon, chartScatterSmoothLinesMarkersIcon, chartScatterStraightLinesIcon, chartScatterStraightLinesMarkersIcon, checkCircleIcon, checkIcon, checkOutlineIcon, checkboxCheckedIcon, checkboxIcon, checkboxIndeterminateIcon, checkboxNullIcon, chevronDoubleDownIcon, chevronDoubleLeftIcon, chevronDoubleRightIcon, chevronDoubleUpIcon, chevronDownIcon, chevronLeftIcon, chevronRightIcon, chevronUpIcon, circleIcon, clearCssIcon, clipboardCodeIcon, clipboardHtmlIcon, clipboardIcon, clipboardMarkdownIcon, clipboardTextIcon, clipboardWordAltIcon, clipboardWordIcon, clockArrowRotateIcon, clockIcon, closedCaptionsIcon, cloudIcon, codeIcon, codeSnippetIcon, colResizeIcon, columnFreezeIcon, columnsIcon, commentIcon, commentRemoveIcon, commentsRemoveIcon, connectorIcon, convertLowercaseIcon, convertUppercaseIcon, copyFormatIcon, copyIcon, cropIcon, crosstabIcon, crosstabWizardIcon, csIcon, csprojIcon, css3Icon, cssIcon, customFormatIcon, customIconIcon, cutIcon, dataCsvIcon, dataIcon, dataJsonIcon, dataOdsIcon, dataRestIcon, dataSdsIcon, dataSqlIcon, dataWebIcon, decimalDecreaseIcon, decimalIncreaseIcon, decreaseHorizontalSpacingIcon, decreaseVerticalSpacingIcon, deliciousBoxIcon, deliciousIcon, detailSectionIcon, diggBoxIcon, diggIcon, dimensionsIcon, displayBlockIcon, displayFlexIcon, displayInlineBlockIcon, displayInlineFlexIcon, divIcon, divideIcon, documentManagerIcon, dollarIcon, downloadIcon, downloadLightIcon, dragAndDropIcon, dribbbleBoxIcon, dribbbleIcon, dropletIcon, dropletSlashIcon, dropletSliderIcon, editToolsIcon, envelopBoxIcon, envelopIcon, envelopLinkIcon, envelopeBoxIcon, envelopeIcon, envelopeLinkIcon, equalIcon, exclamationCircleIcon, exeIcon, exportIcon, eyeIcon, eyeSlashIcon, eyedropperIcon, facebookBoxIcon, facebookIcon, fileAddIcon, fileAscxIcon, fileAudioIcon, fileBacIcon, fileConfigIcon, fileCsvIcon, fileDataIcon, fileDiscImageIcon, fileErrorIcon, fileExcelIcon, fileFlashIcon, fileFooterIcon, fileHeaderIcon, fileHorizontalIcon, fileIcon, fileImageIcon, fileMdbIcon, filePdfIcon, filePptIcon, filePresentationIcon, fileProgrammingIcon, filePsdIcon, fileReportIcon, fileTxtIcon, fileTypescriptIcon, fileVideoIcon, fileWordIcon, fileWrenchIcon, fileZipIcon, filesErrorIcon, filmIcon, filterAddExpressionIcon, filterAddGroupIcon, filterClearIcon, filterIcon, filterSmallIcon, filterSortAscSmallIcon, filterSortDescSmallIcon, flashManagerIcon, flipHorizontalIcon, flipVerticalIcon, folderAddIcon, folderIcon, folderMoreIcon, folderOpenIcon, folderUpIcon, fontFamilyIcon, fontGrowIcon, fontShrinkIcon, fontSizeIcon, foregroundColorIcon, formElementIcon, formIcon, formatCodeBlockIcon, formulaFxIcon, forwardIcon, fullscreenExitIcon, fullscreenIcon, gapColumnIcon, gapRowIcon, gaugeLinearIcon, gaugeRadialIcon, gearIcon, gearsIcon, globeIcon, globeLinkIcon, globeOutlineIcon, globeUnlinkIcon, googleBoxIcon, googleIcon, googlePlusBoxIcon, googlePlusIcon, graphIcon, grayscaleIcon, greaterOrEqualIcon, gridIcon, gridLayoutIcon, groupBoxIcon, groupCollectionIcon, groupFooterSectionIcon, groupHeaderSectionIcon, groupIcon, groupSectionIcon, h1Icon, h2Icon, h3Icon, h4Icon, h5Icon, h6Icon, handIcon, handleDragIcon, handleResizeAltIcon, handleResizeIcon, hdIcon, heartIcon, heartOutlineIcon, homeIcon, horizontalRuleIcon, html5Icon, hyperlinkOpenIcon, hyperlinkOpenSmIcon, imageAbsolutePositionIcon, imageAddIcon, imageEditIcon, imageExportIcon, imageIcon, imageMapEditorIcon, imageResizeIcon, imagesIcon, importIcon, inboxIcon, increaseHorizontalSpacingIcon, increaseVerticalSpacingIcon, indentIcon, infoCircleIcon, infoSolidIcon, inheritedIcon, insertBottomIcon, insertMiddleIcon, insertTopIcon, invertColorsIcon, italicIcon, jsIcon, justifyContentAroundAltIcon, justifyContentAroundIcon, justifyContentBetweenAltIcon, justifyContentBetweenIcon, justifyContentCenterAltIcon, justifyContentCenterIcon, justifyContentEndAltIcon, justifyContentEndIcon, justifyContentStartAltIcon, justifyContentStartIcon, kpiStatusDenyIcon, kpiStatusHoldIcon, kpiStatusOpenIcon, launchIcon, layout1By4Icon, layout2By2Icon, layoutIcon, layoutSideBySideIcon, layoutStackedIcon, lessOrEqualIcon, letterSpaceIcon, levelDownIcon, levelToTopIcon, levelUpIcon, lineHeightIcon, linkAddIcon, linkIcon, linkVerticalIcon, linkedinBoxIcon, linkedinIcon, listLatinBigIcon, listLatinSmallIcon, listOrderedIcon, listRomanBigIcon, listRomanLowerIcon, listRomanSmallIcon, listRomanUpperIcon, listUnorderedIcon, listUnorderedOutlineIcon, listUnorderedSquareIcon, lockIcon, loginIcon, logoutIcon, makeHorizontalSpacingEqualIcon, makeSameHeightIcon, makeSameSizeIcon, makeSameWidthIcon, makeVerticalSpacingEqualIcon, mapMarkerIcon, mapMarkerTargetIcon, maxHeightIcon, maxWidthIcon, mediaManagerIcon, menuIcon, minHeightIcon, minWidthIcon, minusCircleIcon, minusIcon, minusOutlineIcon, minusSmIcon, mirrorIcon, moreHorizontalIcon, moreVerticalIcon, musicNotesIcon, myspaceBoxIcon, myspaceIcon, nonRecurrenceIcon, notEqualIcon, outdentIcon, outlineOffsetIcon, outlineWidthIcon, overlapIcon, paddingBottomIcon, paddingIcon, paddingLeftIcon, paddingRightIcon, paddingTopIcon, pageFooterSectionIcon, pageHeaderSectionIcon, paletteIcon, paneFreezeIcon, paperPlaneIcon, paperclipAltIcon, paperclipIcon, paragraphAddIcon, paragraphHeightIcon, paragraphMarkIcon, parameterBooleanIcon, parameterDateTimeIcon, parameterFloatIcon, parameterIntegerIcon, parameterStringIcon, parametersByteArrayIcon, parametersIcon, parametersUnknownIcon, passwordIcon, pauseIcon, pauseSmIcon, pencilIcon, percentIcon, photosIcon, pinIcon, pinterestBoxIcon, pinterestIcon, playIcon, playSmIcon, playlistIcon, plusCircleIcon, plusIcon, plusOutlineIcon, plusSmIcon, pointerIcon, positionBottomIcon, positionLeftIcon, positionRightIcon, positionTopIcon, printIcon, puzzlePieceIcon, qrCodeIcon, qrCodeOutlineIcon, qrCodeScannerIcon, questionCircleIcon, radiobuttonCheckedIcon, radiobuttonIcon, redditBoxIcon, redditIcon, redoIcon, regularExpressionIcon, removeHorizontalSpacingIcon, removeVerticalSpacingIcon, reorderIcon, replaceAllIcon, replaceSingleIcon, reportElementIcon, rewindIcon, rightDoubleQuotesIcon, rotateIcon, rotateLeftIcon, rotateRightIcon, roundCornersIcon, rowFreezeIcon, rowsIcon, rssBoxIcon, rssIcon, saveIcon, searchIcon, selectAllIcon, selectBoxIcon, setColumnPositionIcon, shapeLineIcon, shapesIcon, shareIcon, sharpenIcon, signatureIcon, silverlightIcon, sizeToGridIcon, slidersIcon, slnIcon, snapGridIcon, snapToGridlinesIcon, snapToSnaplinesIcon, sortAscIcon, sortAscSmallIcon, sortClearIcon, sortDescIcon, sortDescSmallIcon, sparklesIcon, spellCheckerIcon, starIcon, starOutlineIcon, stickIcon, stopIcon, stopSmIcon, strikethroughIcon, stripAllFormattingIcon, stripCssFormatIcon, stripFontElementsIcon, stripSpanElementsIcon, stripWordFormattingIcon, stumbleUponBoxIcon, stumbleUponIcon, subreportIcon, subscriptIcon, sumIcon, supscriptIcon, symbolIcon, tableAddIcon, tableAlignBottomCenterIcon, tableAlignBottomLeftIcon, tableAlignBottomRightIcon, tableAlignMiddleCenterIcon, tableAlignMiddleLeftIcon, tableAlignMiddleRightIcon, tableAlignRemoveIcon, tableAlignTopCenterIcon, tableAlignTopLeftIcon, tableAlignTopRightIcon, tableBodyIcon, tableCellDeleteIcon, tableCellIcon, tableCellPropertiesIcon, tableColumnDeleteIcon, tableColumnGroupsIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableCornerIcon, tableDeleteIcon, tableIcon, tablePositionCenterIcon, tablePositionEndIcon, tablePositionStartIcon, tablePropertiesIcon, tableRowDeleteIcon, tableRowGroupsIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, tableUnmergeIcon, tableWizardIcon, tellAFriendBoxIcon, tellAFriendIcon, templateManagerIcon, textClipIcon, textOverflowIcon, textTruncateIcon, textWrapArrowIcon, textWrapIcon, textareaIcon, textboxHiddenIcon, textboxIcon, thumbDownIcon, thumbDownOutlineIcon, thumbUpIcon, thumbUpOutlineIcon, thumbnailsDownIcon, thumbnailsLeftIcon, thumbnailsRightIcon, thumbnailsUpIcon, tocSectionIcon, tocSectionLevelIcon, toggleFullScreenModeIcon, toolbarFloatIcon, trackChangesAcceptAllIcon, trackChangesAcceptIcon, trackChangesEnableIcon, trackChangesIcon, trackChangesRejectAllIcon, trackChangesRejectIcon, transparencyIcon, trashIcon, tumblrBoxIcon, tumblrIcon, twitterBoxIcon, twitterIcon, underlineIcon, undoIcon, ungroupIcon, unlinkIcon, unlinkVerticalIcon, unlockIcon, unpinIcon, unstickIcon, uploadIcon, userIcon, validationDataIcon, validationXhtmlIcon, vbIcon, vbprojIcon, videoExternalIcon, vimeoBoxIcon, vimeoIcon, volumeDownIcon, volumeMuteIcon, volumeUpIcon, warningCircleIcon, warningTriangleIcon, wholeWordIcon, windowIcon, windowMinimizeIcon, windowRestoreIcon, wrenchIcon, xCircleIcon, xIcon, xOutlineIcon, yammerBoxIcon, yammerIcon, youtubeBoxIcon, youtubeIcon, zoomActualSizeIcon, zoomBestFitIcon, zoomInIcon, zoomOutIcon };\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nlet typedOK = () => {\n const supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = () => supported;\n return supported;\n};\n\nlet arraySet = (dest, src, src_offs, len, dest_offs) => {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nlet flattenChunks = (chunks) => {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nlet Buf8 = (size) => {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nlet Buf16 = (size) => {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nlet Buf32 = (size) => {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nlet strApplyOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = () => result;\n return result;\n};\n\nlet strApplyUintOK = function() {\n let result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = () => result;\n return result;\n};\n\nlet utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = arg => table[arg];\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nlet crcTable = function() {\n const table = makeTable();\n crcTable = () => table;\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nclass Inflate {\n constructor(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nlet configurationTable = function() {\n const table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = () => table;\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n const table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nclass Deflate {\n constructor(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n push(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n }\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n onData(chunk) {\n this.chunks.push(chunk);\n }\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n onEnd(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n }\n}\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._subject = null;\n this._refCount = 0;\n this._connection = null;\n if (hasLift(source)) {\n this.lift = source.lift;\n }\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n _teardown() {\n this._refCount = 0;\n const { _connection } = this;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n const subject = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject, undefined, () => {\n this._teardown();\n subject.complete();\n }, (err) => {\n this._teardown();\n subject.error(err);\n }, () => this._teardown())));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin(...args) {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, () => remainingCompletions--, undefined, () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","const { isArray } = Array;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip(...args) {\n const resultSelector = popResultSelector(args);\n const sources = argsOrArgArray(args);\n return sources.length\n ? new Observable((subscriber) => {\n let buffers = sources.map(() => []);\n let completed = sources.map(() => false);\n subscriber.add(() => {\n buffers = completed = null;\n });\n for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n buffers[sourceIndex].push(value);\n if (buffers.every((buffer) => buffer.length)) {\n const result = buffers.map((buffer) => buffer.shift());\n subscriber.next(resultSelector ? resultSelector(...result) : result);\n if (buffers.some((buffer, i) => !buffer.length && completed[i])) {\n subscriber.complete();\n }\n }\n }, () => {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n }\n return () => {\n buffers = completed = null;\n };\n })\n : EMPTY;\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler = asyncScheduler) {\n return operate((source, subscriber) => {\n let activeTask = null;\n let lastValue = null;\n let lastTime = null;\n const emit = () => {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n const targetTime = lastTime + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = activeTask = null;\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate((source, subscriber) => {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate((source, subscriber) => {\n let connection = null;\n source._refCount++;\n const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n const sharedConnection = source._connection;\n const conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return (source, subscriber) => {\n let hasState = hasSeed;\n let state = seed;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection;\n let resetConnection;\n let subject;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate((source, subscriber) => {\n let taking = false;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value)));\n });\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler = asyncScheduler, config) {\n const duration$ = timer(duration, scheduler);\n return throttle(() => duration$, config);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate((source, subscriber) => {\n const { leading = true, trailing = false } = config !== null && config !== void 0 ? config : {};\n let hasValue = false;\n let sendValue = null;\n let throttled = null;\n let isComplete = false;\n const endThrottling = () => {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n const cleanupThrottling = () => {\n throttled = null;\n isComplete && subscriber.complete();\n };\n const startThrottle = (value) => (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n const send = () => {\n if (hasValue) {\n hasValue = false;\n const value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, () => {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n var _a;\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Subscription } from '../Subscription';\nexport const animationFrameProvider = {\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","export function not(pred, thisArg) {\n return (value, index) => !pred.call(thisArg, value, index);\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonService {\r\n private _navigationLinkListSubject: any;\r\n private _userState: any; \r\n private _organisationDetail: any;\r\n private _routeParam_entityId:any;\r\n private _routeParam_companyId:any;\r\n private _all_apps:any;\r\n private _company_details:any;\r\n private _hasDocumentAccess: boolean;\r\n\r\n constructor() { \r\n this._userState = null;\r\n this._organisationDetail = null;\r\n this._routeParam_companyId = null;\r\n this._routeParam_entityId = null;\r\n this._all_apps = null;\r\n this._company_details = null;\r\n this._navigationLinkListSubject = null;\r\n this._hasDocumentAccess = false;\r\n }\r\n\r\n userState$ = new BehaviorSubject(null);\r\n organisationDetail$ = new BehaviorSubject(null);\r\n\r\n get userState() {\r\n return this._userState;\r\n }\r\n\r\n get organisationDetail() {\r\n return this._organisationDetail;\r\n }\r\n\r\n get routeParam_companyId() {\r\n return this._routeParam_companyId;\r\n }\r\n\r\n get routeParam_entityId() {\r\n return this._routeParam_entityId;\r\n } \r\n\r\n get all_apps() {\r\n return this._all_apps;\r\n } \r\n\r\n get company_details() {\r\n return this._company_details;\r\n } \r\n\r\n get navigationLinkListSubject() {\r\n return this._navigationLinkListSubject;\r\n } \r\n\r\n set navigationLinkListSubject(value) {\r\n this._navigationLinkListSubject = value;\r\n } \r\n\r\n set company_details(value) {\r\n this._company_details = value;\r\n } \r\n\r\n set all_apps(value) {\r\n this._all_apps = value;\r\n } \r\n\r\n set userState(value) {\r\n this._userState = value;\r\n }\r\n\r\n set organisationDetail(value) {\r\n this._organisationDetail = value;\r\n }\r\n\r\n set routeParam_companyId(value) {\r\n this._routeParam_companyId = value;\r\n }\r\n\r\n set routeParam_entityId(value) {\r\n this._routeParam_entityId = value;\r\n } \r\n\r\n get hasDocumentAccess() {\r\n return this._hasDocumentAccess;\r\n } \r\n\r\n set hasDocumentAccess(value) {\r\n this._hasDocumentAccess = value;\r\n } \r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ServiceFactory } from 'hsp-portal-web-core-15';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentPublishManager {\r\n _operation;\r\n constructor(private _serviceFactory: ServiceFactory) {\r\n this._operation = this._serviceFactory.create('DocumentPublishManager', [\r\n 'getUserList',\r\n 'getSenderEmailOptionList',\r\n 'getCustomerEntityDistributionListEmailList',\r\n 'sendEmail'\r\n ]);\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n// import { SecureHttpService } from 'hsp-portal-web-core-15';\r\nimport { DocumentPublishManager } from '../Manager/documentPublishManager';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentPublishManagerService {\r\n\r\n constructor(private documenPublishManager : DocumentPublishManager) {}\r\n\r\n getUserList(requestObj: any): Promise {\r\n return this.documenPublishManager._operation['getUserList'](requestObj);\r\n } \r\n getSenderEmailOptionList(requestObj: any): Promise {\r\n return this.documenPublishManager._operation['getSenderEmailOptionList'](requestObj);\r\n }\r\n getCustomerEntityDistributionListEmailList(requestObj: any): Promise {\r\n return this.documenPublishManager._operation['getCustomerEntityDistributionListEmailList'](requestObj);\r\n }\r\n sendEmail(requestObj: any): Promise {\r\n return this.documenPublishManager._operation['sendEmail'](requestObj);\r\n } \r\n}\r\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Input, EventEmitter, Optional, Inject, SkipSelf, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/collections';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\n\n/** Used to generate unique ID for each accordion. */\nlet nextId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n constructor() {\n /** Emits when the state of the accordion changes */\n this._stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n this._openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n this.id = `cdk-accordion-${nextId$1++}`;\n this._multi = false;\n }\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n get multi() {\n return this._multi;\n }\n set multi(multi) {\n this._multi = coerceBooleanProperty(multi);\n }\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this._multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkAccordion, selector: \"cdk-accordion, [cdkAccordion]\", inputs: { multi: \"multi\" }, providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }], exportAs: [\"cdkAccordion\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }],\n }]\n }], propDecorators: { multi: [{\n type: Input\n }] } });\n\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n expanded = coerceBooleanProperty(expanded);\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = coerceBooleanProperty(disabled);\n }\n constructor(accordion, _changeDetectorRef, _expansionDispatcher) {\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /** Subscription to openAll/closeAll events. */\n this._openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n this.closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n this.opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n this.destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n this.expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n this.id = `cdk-accordion-child-${nextId++}`;\n this._expanded = false;\n this._disabled = false;\n /** Unregister function for _expansionDispatcher. */\n this._removeUniqueSelectionListener = () => { };\n this._removeUniqueSelectionListener = _expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion &&\n !this.accordion.multi &&\n this.accordion.id === accordionId &&\n this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionItem, deps: [{ token: CDK_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkAccordionItem, selector: \"cdk-accordion-item, [cdkAccordionItem]\", inputs: { expanded: \"expanded\", disabled: \"disabled\" }, outputs: { closed: \"closed\", opened: \"opened\", destroyed: \"destroyed\", expandedChange: \"expandedChange\" }, providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ], exportAs: [\"cdkAccordionItem\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ],\n }]\n }], ctorParameters: function () { return [{ type: CdkAccordion, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_ACCORDION]\n }, {\n type: SkipSelf\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }]; }, propDecorators: { closed: [{\n type: Output\n }], opened: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\nclass CdkAccordionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionModule, declarations: [CdkAccordion, CdkAccordionItem], exports: [CdkAccordion, CdkAccordionItem] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_ACCORDION, CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';\n\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a re-layout. This re-layout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * re-layout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nclass PendingCopy {\n constructor(text, _document) {\n this._document = _document;\n const textarea = (this._textarea = this._document.createElement('textarea'));\n const styles = textarea.style;\n // Hide the element for display and accessibility. Set a fixed position so the page layout\n // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n styles.position = 'fixed';\n styles.top = styles.opacity = '0';\n styles.left = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n // Making the textarea `readonly` prevents the screen from jumping on iOS Safari (see #25169).\n textarea.readOnly = true;\n // The element needs to be inserted into the fullscreen container, if the page\n // is in fullscreen mode, otherwise the browser won't execute the copy command.\n (this._document.fullscreenElement || this._document.body).appendChild(textarea);\n }\n /** Finishes copying the text. */\n copy() {\n const textarea = this._textarea;\n let successful = false;\n try {\n // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement;\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n }\n catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n return successful;\n }\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n if (textarea) {\n textarea.remove();\n this._textarea = undefined;\n }\n }\n}\n\n/**\n * A service for copying text to the clipboard.\n */\nclass Clipboard {\n constructor(document) {\n this._document = document;\n }\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text) {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n return successful;\n }\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text) {\n return new PendingCopy(text, this._document);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: Clipboard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nclass CdkCopyToClipboard {\n constructor(_clipboard, _ngZone, config) {\n this._clipboard = _clipboard;\n this._ngZone = _ngZone;\n /** Content to be copied. */\n this.text = '';\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n this.attempts = 1;\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n this.copied = new EventEmitter();\n /** Copies that are currently being attempted. */\n this._pending = new Set();\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n /** Copies the current text to the clipboard. */\n copy(attempts = this.attempts) {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n }\n else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n }\n else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCopyToClipboard, deps: [{ token: Clipboard }, { token: i0.NgZone }, { token: CDK_COPY_TO_CLIPBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkCopyToClipboard, selector: \"[cdkCopyToClipboard]\", inputs: { text: [\"cdkCopyToClipboard\", \"text\"], attempts: [\"cdkCopyToClipboardAttempts\", \"attempts\"] }, outputs: { copied: \"cdkCopyToClipboardCopied\" }, host: { listeners: { \"click\": \"copy()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCopyToClipboard, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n },\n }]\n }], ctorParameters: function () { return [{ type: Clipboard }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_COPY_TO_CLIPBOARD_CONFIG]\n }] }]; }, propDecorators: { text: [{\n type: Input,\n args: ['cdkCopyToClipboard']\n }], attempts: [{\n type: Input,\n args: ['cdkCopyToClipboardAttempts']\n }], copied: [{\n type: Output,\n args: ['cdkCopyToClipboardCopied']\n }] } });\n\nclass ClipboardModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, declarations: [CdkCopyToClipboard], exports: [CdkCopyToClipboard] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: ClipboardModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, Directive, Optional, SkipSelf, Input, EventEmitter, Self, ContentChildren, ContentChild, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceElement, coerceNumberProperty, coerceArray } from '@angular/cdk/coercion';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge } from 'rxjs';\nimport { takeUntil, map, take, startWith, tap, switchMap } from 'rxjs/operators';\nimport * as i1$1 from '@angular/cdk/bidi';\n\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect,\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em',\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none'\n ? transform + ' ' + initialTransform\n : transform;\n}\n\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]));\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/** Gets a mutable version of an element's bounding `ClientRect`. */\nfunction getMutableClientRect(element) {\n const clientRect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `ClientRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: clientRect.top,\n right: clientRect.right,\n bottom: clientRect.bottom,\n left: clientRect.left,\n width: clientRect.width,\n height: clientRect.height,\n x: clientRect.x,\n y: clientRect.y,\n };\n}\n/**\n * Checks whether some coordinates are within a `ClientRect`.\n * @param clientRect ClientRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.\n * @param clientRect `ClientRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustClientRect(clientRect, top, left) {\n clientRect.top += top;\n clientRect.bottom = clientRect.top + clientRect.height;\n clientRect.left += left;\n clientRect.right = clientRect.left + clientRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearClientRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return (pointerY > top - yThreshold &&\n pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold &&\n pointerX < right + xThreshold);\n}\n\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n constructor(_document) {\n this._document = _document;\n /** Cached positions of the scrollable parent elements. */\n this.positions = new Map();\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element),\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && target.contains(node)) {\n adjustClientRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n /**\n * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,\n * instead of going through the `ViewportRuler`, because the first value the ruler looks at is\n * the top/left offset of the `document.documentElement` which works for most cases, but breaks\n * if the element is offset by something like the `BlockScrollStrategy`.\n */\n getViewportScrollPosition() {\n return { top: window.scrollY, left: window.scrollX };\n }\n}\n\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch { }\n }\n}\n\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));\n }\n }\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n this._passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n this._activeTransform = { x: 0, y: 0 };\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n this._hasStartedDragging = false;\n /** Emits when the item is being moved. */\n this._moveEvents = new Subject();\n /** Subscription to pointer movement events. */\n this._pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n this._pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n this._scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Cached reference to the boundary element. */\n this._boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n this._nativeInteractionsEnabled = true;\n /** Elements that can be used to drag the draggable item. */\n this._handles = [];\n /** Registered handles that are currently disabled. */\n this._disabledHandles = new Set();\n /** Layout direction of the item. */\n this._direction = 'ltr';\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n this.dragStartDelay = 0;\n this._disabled = false;\n /** Emits as the drag sequence is being prepared. */\n this.beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = this._moveEvents;\n /** Handler for the `mousedown`/`touchstart` events. */\n this._pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n this._pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n event.preventDefault();\n this._hasStartedDragging = true;\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n event.preventDefault();\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n // If there's a position constraint function, we want the element's top/left to be at the\n // specific position on the page. Use the initial position as a reference if that's the case.\n const offset = this.constrainPosition ? this._initialClientRect : this._pickupPositionOnPage;\n const activeTransform = this._activeTransform;\n activeTransform.x = constrainedPointerPosition.x - offset.x + this._passiveTransform.x;\n activeTransform.y = constrainedPointerPosition.y - offset.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta,\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n this._pointerUp = (event) => {\n this._endDragSequence(event);\n };\n /** Handles a native `dragstart` event. */\n this._nativeDragStart = (event) => {\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n event.preventDefault();\n }\n }\n else if (!this.disabled) {\n // Usually this isn't necessary since the we prevent the default action in `pointerDown`,\n // but some cases like dragging of links can slip through (see #24403).\n event.preventDefault();\n }\n };\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document);\n _dragDropRegistry.registerDragItem(this);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n this._rootElement?.remove();\n }\n this._anchor?.remove();\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeSubscriptions();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement =\n this._rootElement =\n this._ownerSVGElement =\n this._placeholderTemplate =\n this._previewTemplate =\n this._anchor =\n this._parentDragRef =\n null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeSubscriptions() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n this._preview?.remove();\n this._previewRef?.destroy();\n this._preview = this._previewRef = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n this._placeholder?.remove();\n this._placeholderRef?.destroy();\n this._placeholder = this._placeholderRef = null;\n }\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeSubscriptions();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor =\n this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging) {\n return;\n }\n this.released.next({ source: this, event });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition,\n event,\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n const dropContainer = this._dropContainer;\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = (this._placeholder = this._createPlaceholderElement());\n const anchor = (this._anchor = this._anchor || this._document.createComment(''));\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = this._createPreviewElement();\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);\n this.started.next({ source: this, event }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this, event });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence &&\n this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence\n ? isFakeTouchstartFromScreenReader(event)\n : isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n const rootStyles = rootElement.style;\n this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';\n rootStyles.webkitTapHighlightColor = 'transparent';\n }\n this._hasStartedDragging = this._hasMoved = false;\n // Avoid multiple subscriptions and memory leaks when multi touch\n // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n this._removeSubscriptions();\n this._initialClientRect = this._rootElement.getBoundingClientRect();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement =\n previewTemplate && previewTemplate.template && !previewTemplate.matchSize\n ? { x: 0, y: 0 }\n : this._getPointerPositionInElement(this._initialClientRect, referenceElement, event);\n const pointerPosition = (this._pickupPositionOnPage =\n this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event));\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._initialClientRect =\n this._boundaryRect =\n this._previewRect =\n this._initialTransform =\n undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition, event });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition,\n event,\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition, event);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer &&\n this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled\n ? this._initialIndex\n : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this),\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n if (this.constrainPosition) {\n this._applyPreviewTransform(x, y);\n }\n else {\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\n }\n }\n /**\n * Creates the element that will be rendered next to the user's pointer\n * and will be used as a preview of the element that is being dragged.\n */\n _createPreviewElement() {\n const previewConfig = this._previewTemplate;\n const previewClass = this.previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._initialClientRect : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewRef = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform = getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n preview = deepCloneNode(this._rootElement);\n matchElementSize(preview, this._initialClientRect);\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // We have to reset the margin, because it can throw off positioning relative to the viewport.\n 'margin': '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': `${this._config.zIndex || 1000}`,\n }, dragImportantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n /**\n * Animates the preview element from its current position to the location of the drop placeholder.\n * @returns Promise that resolves when the animation completes.\n */\n _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.classList.add('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = getTransformTransitionDurationInMs(this._preview);\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n if (!event ||\n (_getEventTarget(event) === this._preview && event.propertyName === 'transform')) {\n this._preview?.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n // Stop pointer events on the preview so the user can't\n // interact with it while the preview is animating.\n placeholder.style.pointerEvents = 'none';\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(elementRect, referenceElement, event) {\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y,\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event)\n ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }\n : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition\n ? this.constrainPosition(point, this, this._initialClientRect, this._pickupPositionInElement)\n : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y =\n this._pickupPositionOnPage.y -\n (this.constrainPosition ? this._pickupPositionInElement.y : 0);\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x =\n this._pickupPositionOnPage.x -\n (this.constrainPosition ? this._pickupPositionInElement.x : 0);\n }\n if (this._boundaryRect) {\n // If not using a custom constrain we need to account for the pickup position in the element\n // otherwise we do not need to do this, as it has already been accounted for\n const { x: pickupX, y: pickupY } = !this.constrainPosition\n ? this._pickupPositionInElement\n : { x: 0, y: 0 };\n const boundaryRect = this._boundaryRect;\n const { width: previewWidth, height: previewHeight } = this._getPreviewRect();\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewHeight - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewWidth - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const transform = getTransform(x, y);\n const styles = this._rootElement.style;\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform =\n styles.transform && styles.transform != 'none' ? styles.transform : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n styles.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.style.transform = combineTransforms(transform, initialTransform);\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n // Note: don't use `_clientRectAtStart` here, because we want the latest position.\n const elementRect = this._rootElement.getBoundingClientRect();\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // ClientRect dimensions are based on the scroll position of the page and its parent\n // node so we have to update the cached boundary ClientRect if the user has scrolled.\n if (this._boundaryRect &&\n target !== this._boundaryElement &&\n target.contains(this._boundaryElement)) {\n adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n return (this._parentPositions.positions.get(this._document)?.scrollPosition ||\n this._parentPositions.getViewportScrollPosition());\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return (shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body);\n }\n return coerceElement(previewContainer);\n }\n /** Lazily resolves and returns the dimensions of the preview. */\n _getPreviewRect() {\n // Cache the preview element rect if we haven't cached it already or if\n // we cached it too early before the element dimensions were computed.\n if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n this._previewRect = this._preview\n ? this._preview.getBoundingClientRect()\n : this._initialClientRect;\n }\n return this._previewRect;\n }\n /** Gets a handle that is the target of an event. */\n _getTargetHandle(event) {\n return this._handles.find(handle => {\n return event.target && (event.target === handle || handle.contains(event.target));\n });\n }\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * Strategy that only supports sorting along a single axis.\n * Items are reordered using CSS transforms which allows for sorting to be animated.\n * @docs-private\n */\nclass SingleAxisSortStrategy {\n constructor(_element, _dragDropRegistry) {\n this._element = _element;\n this._dragDropRegistry = _dragDropRegistry;\n /** Cache of the dimensions of all the items inside the container. */\n this._itemPositions = [];\n /** Direction in which the list is oriented. */\n this.orientation = 'vertical';\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occurred and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = {\n drag: null,\n delta: 0,\n overlaps: false,\n };\n }\n /**\n * To be called when the drag sequence starts.\n * @param items Items that are currently in the list.\n */\n start(items) {\n this.withItems(items);\n }\n /**\n * To be called when an item is being sorted.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n sort(item, pointerX, pointerY, pointerDelta) {\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return null;\n }\n const isHorizontal = this.orientation === 'horizontal';\n const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem\n ? item.getPlaceholderElement()\n : sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n return { previousIndex: currentIndex, currentIndex: newIndex };\n }\n /**\n * Called when an item is being moved into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n const newIndex = index == null || index < 0\n ? // We use the coordinates of where the item entered the drop\n // zone to figure out at which index it should be inserted.\n this._getItemIndexFromPointerPosition(item, pointerX, pointerY)\n : index;\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // If we didn't find a new position reference, it means that either the item didn't start off\n // in this container, or that the item requested to be inserted at the end of the list.\n if (!newPositionReference &&\n (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&\n this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n newPositionReference = activeDraggables[0];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else {\n coerceElement(this._element).appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that usually `start` is called together with `enter` when an item goes into a new\n // container. This will cache item positions, but we need to refresh them since the amount\n // of items has changed.\n this._cacheItemPositions();\n }\n /** Sets the items that are currently part of the list. */\n withItems(items) {\n this._activeDraggables = items.slice();\n this._cacheItemPositions();\n }\n /** Assigns a sort predicate to the strategy. */\n withSortPredicate(predicate) {\n this._sortPredicate = predicate;\n }\n /** Resets the strategy to its initial state before dragging was started. */\n reset() {\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables.forEach(item => {\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = this._itemPositions.find(p => p.drag === item)?.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._itemPositions = [];\n this._activeDraggables = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n }\n /**\n * Gets a snapshot of items currently in the list.\n * Can include items that we dragged in from another list.\n */\n getActiveItemsSnapshot() {\n return this._activeDraggables;\n }\n /** Gets the index of a specific item. */\n getItemIndex(item) {\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this.orientation === 'horizontal' && this.direction === 'rtl'\n ? this._itemPositions.slice().reverse()\n : this._itemPositions;\n return items.findIndex(currentItem => currentItem.drag === item);\n }\n /** Used to notify the strategy that the scroll position has changed. */\n updateOnScroll(topDifference, leftDifference) {\n // Since we know the amount that the user has scrolled we can shift all of the\n // client rectangles ourselves. This is cheaper than re-measuring everything and\n // we can avoid inconsistent behavior where we might be measuring the element before\n // its position has changed.\n this._itemPositions.forEach(({ clientRect }) => {\n adjustClientRect(clientRect, topDifference, leftDifference);\n });\n // We need two loops for this, because we want all of the cached\n // positions to be up-to-date before we re-sort the item.\n this._itemPositions.forEach(({ drag }) => {\n if (this._dragDropRegistry.isDragging(drag)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n drag._sortFromLastPointerPosition();\n }\n });\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this.orientation === 'horizontal';\n this._itemPositions = this._activeDraggables\n .map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n })\n .sort((a, b) => {\n return isHorizontal\n ? a.clientRect.left - b.clientRect.left\n : a.clientRect.top - b.clientRect.top;\n });\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n let itemOffset = isHorizontal\n ? newPosition.left - currentPosition.left\n : newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal\n ? newPosition.width - currentPosition.width\n : newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this.orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const index = this._itemPositions.findIndex(({ drag, clientRect }) => {\n // Skip the item itself.\n if (drag === item) {\n return false;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag &&\n this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal\n ? // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)\n : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return index === -1 || !this._sortPredicate(index, item) ? -1 : index;\n }\n}\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n /** Whether starting a dragging sequence from this container is disabled. */\n this.disabled = false;\n /** Whether sorting items within the list is disabled. */\n this.sortingDisabled = false;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n this.autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n this.autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Function that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits right before dragging has started. */\n this.beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n this.dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new Subject();\n /** Emits when a dragging sequence is started in a list connected to the current one. */\n this.receivingStarted = new Subject();\n /** Emits when a dragging sequence is stopped from a list connected to the current one. */\n this.receivingStopped = new Subject();\n /** Whether an item in the list is being dragged. */\n this._isDragging = false;\n /** Draggable items in the container. */\n this._draggables = [];\n /** Drop lists that are connected to the current one. */\n this._siblings = [];\n /** Connected siblings that currently have a dragged item. */\n this._activeSiblings = new Set();\n /** Subscription to the window being scrolled. */\n this._viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n this._verticalScrollDirection = 0 /* AutoScrollVerticalDirection.NONE */;\n /** Horizontal direction in which the list is currently scrolling. */\n this._horizontalScrollDirection = 0 /* AutoScrollHorizontalDirection.NONE */;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n this._stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n this._cachedShadowRoot = null;\n /** Starts the interval that'll auto-scroll the element. */\n this._startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === 1 /* AutoScrollVerticalDirection.UP */) {\n node.scrollBy(0, -scrollStep);\n }\n else if (this._verticalScrollDirection === 2 /* AutoScrollVerticalDirection.DOWN */) {\n node.scrollBy(0, scrollStep);\n }\n if (this._horizontalScrollDirection === 1 /* AutoScrollHorizontalDirection.LEFT */) {\n node.scrollBy(-scrollStep, 0);\n }\n else if (this._horizontalScrollDirection === 2 /* AutoScrollHorizontalDirection.RIGHT */) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n this.element = coerceElement(element);\n this._document = _document;\n this.withScrollableParents([this.element]);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document);\n this._sortStrategy = new SingleAxisSortStrategy(this.element, _dragDropRegistry);\n this._sortStrategy.withSortPredicate((index, item) => this.sortPredicate(index, item, this));\n }\n /** Removes the drop list functionality from the DOM element. */\n dispose() {\n this._stopScrolling();\n this._stopScrollTimers.complete();\n this._viewportScrollSubscription.unsubscribe();\n this.beforeStarted.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this.sorted.complete();\n this.receivingStarted.complete();\n this.receivingStopped.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Attempts to move an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n if (index == null && this.sortingDisabled) {\n index = this._draggables.indexOf(item);\n }\n this._sortStrategy.enter(item, pointerX, pointerY, index);\n // Note that this usually happens inside `_draggingStarted` as well, but the dimensions\n // can change when the sort strategy moves the item around inside `enter`.\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n * @param event Event that triggered the dropping sequence.\n *\n * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint, event = {}) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint,\n event,\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._sortStrategy.withItems(this._draggables);\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._sortStrategy.direction = direction;\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n // TODO(crisbeto): eventually we should be constructing the new sort strategy here based on\n // the new orientation. For now we can assume that it'll always be `SingleAxisSortStrategy`.\n this._sortStrategy.orientation = orientation;\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = coerceElement(this.element);\n // We always allow the current element to be scrollable\n // so we need to ensure that it's in the array.\n this._scrollableElements =\n elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n return this._isDragging\n ? this._sortStrategy.getItemIndex(item)\n : this._draggables.indexOf(item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !this._clientRect ||\n !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const result = this._sortStrategy.sort(item, pointerX, pointerY, pointerDelta);\n if (result) {\n this.sorted.next({\n previousIndex: result.previousIndex,\n currentIndex: result.currentIndex,\n container: this,\n item,\n });\n }\n }\n /**\n * Checks whether the user's pointer is close to the edges of either the\n * viewport or the drop list and starts the auto-scroll sequence.\n * @param pointerX User's pointer position along the x axis.\n * @param pointerY User's pointer position along the y axis.\n */\n _startScrollingIfNecessary(pointerX, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = 0 /* AutoScrollVerticalDirection.NONE */;\n let horizontalScrollDirection = 0 /* AutoScrollHorizontalDirection.NONE */;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const clientRect = {\n width,\n height,\n top: 0,\n right: width,\n bottom: height,\n left: 0,\n };\n verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode &&\n (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = coerceElement(this.element).style;\n this.beforeStarted.next();\n this._isDragging = true;\n // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n // scrolling. The browser seems to round the value based on the snapping points which means\n // that we can't increment/decrement the scroll position.\n this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n styles.scrollSnapType = styles.msScrollSnapType = 'none';\n this._sortStrategy.start(this._draggables);\n this._cacheParentPositions();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n const element = coerceElement(this.element);\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `ClientRect`.\n this._clientRect = this._parentPositions.positions.get(element).clientRect;\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = coerceElement(this.element).style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._sortStrategy.reset();\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._clientRect ||\n !isInsideClientRect(this._clientRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n const nativeElement = coerceElement(this.element);\n // The `ClientRect`, that we're using to find the container over which the user is\n // hovering, doesn't give us any information on whether the element has been scrolled\n // out of the view or whether it's overlapping with other containers. This means that\n // we could end up transferring the item into a container that's invisible or is positioned\n // below another one. We use the result from `elementFromPoint` to get the top-most element\n // at the pointer position and to find whether it's one of the intersecting drop containers.\n return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) &&\n items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n this.receivingStarted.next({\n initiator: sibling,\n receiver: this,\n items,\n });\n }\n }\n /**\n * Called by a connected drop list when dragging has stopped.\n * @param sibling Sibling whose dragging has stopped.\n */\n _stopReceiving(sibling) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n this.receivingStopped.next({ initiator: sibling, receiver: this });\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n this._sortStrategy.updateOnScroll(scrollDifference.top, scrollDifference.left);\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(coerceElement(this.element));\n this._cachedShadowRoot = (shadowRoot || this._document);\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._sortStrategy\n .getActiveItemsSnapshot()\n .filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return 1 /* AutoScrollVerticalDirection.UP */;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return 2 /* AutoScrollVerticalDirection.DOWN */;\n }\n return 0 /* AutoScrollVerticalDirection.NONE */;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return 1 /* AutoScrollHorizontalDirection.LEFT */;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return 2 /* AutoScrollHorizontalDirection.RIGHT */;\n }\n return 0 /* AutoScrollHorizontalDirection.NONE */;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = 0 /* AutoScrollVerticalDirection.NONE */;\n let horizontalScrollDirection = 0 /* AutoScrollHorizontalDirection.NONE */;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === 1 /* AutoScrollVerticalDirection.UP */) {\n if (scrollTop > 0) {\n verticalScrollDirection = 1 /* AutoScrollVerticalDirection.UP */;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = 2 /* AutoScrollVerticalDirection.DOWN */;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (computedHorizontal === 1 /* AutoScrollHorizontalDirection.LEFT */) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = 1 /* AutoScrollHorizontalDirection.LEFT */;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = 2 /* AutoScrollHorizontalDirection.RIGHT */;\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\n\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\n// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order\n// to avoid circular imports. If we were to reference them here, importing the registry into the\n// classes that are registering themselves will introduce a circular import.\nclass DragDropRegistry {\n constructor(_ngZone, _document) {\n this._ngZone = _ngZone;\n /** Registered drop container instances. */\n this._dropInstances = new Set();\n /** Registered drag item instances. */\n this._dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n this._activeDragInstances = [];\n /** Keeps track of the event listeners that we've bound to the `document`. */\n this._globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n this._draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n this.scroll = new Subject();\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n this._preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances.length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n this._persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances.length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances.some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n this._document = _document;\n }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances.indexOf(drag) > -1) {\n return;\n }\n this._activeDragInstances.push(drag);\n if (this._activeDragInstances.length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true,\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true,\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions,\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions,\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n const index = this._activeDragInstances.indexOf(drag);\n if (index > -1) {\n this._activeDragInstances.splice(index, 1);\n if (this._activeDragInstances.length === 0) {\n this._clearGlobalListeners();\n }\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances.indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rxjs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances.length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropRegistry, deps: [{ token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5,\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDrop, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i1.ViewportRuler }, { token: DragDropRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDrop, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDrop, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i1.ViewportRuler }, { type: DragDropRegistry }]; } });\n\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n /** Whether starting to drag through this handle is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._stateChanges.next(this);\n }\n constructor(element, parentDrag) {\n this.element = element;\n /** Emits when the state of the handle has changed. */\n this._stateChanges = new Subject();\n this._disabled = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDragHandle');\n }\n this._parentDrag = parentDrag;\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragHandle, deps: [{ token: i0.ElementRef }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDragHandle, isStandalone: true, selector: \"[cdkDragHandle]\", inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\"] }, host: { classAttribute: \"cdk-drag-handle\" }, providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n standalone: true,\n host: {\n 'class': 'cdk-drag-handle',\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }]; }, propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDragHandleDisabled']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragPlaceholder, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDragPlaceholder, isStandalone: true, selector: \"ng-template[cdkDragPlaceholder]\", inputs: { data: \"data\" }, providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n standalone: true,\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n get matchSize() {\n return this._matchSize;\n }\n set matchSize(value) {\n this._matchSize = coerceBooleanProperty(value);\n }\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._matchSize = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragPreview, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDragPreview, isStandalone: true, selector: \"ng-template[cdkDragPreview]\", inputs: { data: \"data\", matchSize: \"matchSize\" }, providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDragPreview, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n standalone: true,\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }], matchSize: [{\n type: Input\n }] } });\n\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n static { this._dragInstances = []; }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._dragRef.disabled = this._disabled;\n }\n constructor(\n /** Element that the draggable is attached to. */\n element, \n /** Droppable container that the draggable is a part of. */\n dropContainer, \n /**\n * @deprecated `_document` parameter no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {\n this.element = element;\n this.dropContainer = dropContainer;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._selfHandle = _selfHandle;\n this._parentDrag = _parentDrag;\n this._destroyed = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = new Observable((observer) => {\n const subscription = this._dragRef.moved\n .pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance,\n })))\n .subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null\n ? config.pointerDirectionChangeThreshold\n : 5,\n zIndex: config?.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._dragRef.setFreeDragPosition(value);\n }\n ngAfterViewInit() {\n // Normally this isn't in the zone, but it can cause major performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this._ngZone.runOutsideAngular(() => {\n // We need to wait for the zone to stabilize, in order for the reference\n // element to be in the proper place in the DOM. This is mostly relevant\n // for draggable elements inside portals since they get stamped out in\n // their original DOM position and then they get transferred to the portal.\n this._ngZone.onStable.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n });\n });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in `ngAfterViewInit` where it needs to be deferred.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Skip the first change since it's being handled in `ngAfterViewInit`.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n const element = this.element.nativeElement;\n let rootElement = element;\n if (this.rootElementSelector) {\n rootElement =\n element.closest !== undefined\n ? element.closest(this.rootElementSelector)\n : // Comment tag doesn't have closest method, so use parent's one.\n element.parentElement?.closest(this.rootElementSelector);\n }\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.element.nativeElement.closest(boundary);\n }\n return coerceElement(boundary);\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate\n ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef,\n }\n : null;\n const preview = this._previewTemplate\n ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef,\n }\n : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.dragStartDelay =\n typeof dragStartDelay === 'object' && dragStartDelay\n ? dragStartDelay\n : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n if (parent.classList.contains(DRAG_HOST_CLASS)) {\n ref.withParent(CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })?._dragRef || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(startEvent => {\n this.started.emit({ source: this, event: startEvent.event });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(releaseEvent => {\n this.released.emit({ source: this, event: releaseEvent.event });\n });\n ref.ended.subscribe(endEvent => {\n this.ended.emit({\n source: this,\n distance: endEvent.distance,\n dropPoint: endEvent.dropPoint,\n event: endEvent.event,\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(enterEvent => {\n this.entered.emit({\n container: enterEvent.container.data,\n item: this,\n currentIndex: enterEvent.currentIndex,\n });\n });\n ref.exited.subscribe(exitEvent => {\n this.exited.emit({\n container: exitEvent.container.data,\n item: this,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n item: this,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer, } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles.changes\n .pipe(startWith(this._handles), \n // Sync the new handles with the DragRef.\n tap((handles) => {\n const childHandleElements = handles\n .filter(handle => handle._parentDrag === this)\n .map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n childHandleElements.push(this.element);\n }\n this._dragRef.withHandles(childHandleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => {\n return item._stateChanges.pipe(startWith(item));\n }));\n }), takeUntil(this._destroyed))\n .subscribe(handleInstance => {\n // Enabled/disable the handle that changed in the DragRef.\n const dragRef = this._dragRef;\n const handle = handleInstance.element.nativeElement;\n handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true, skipSelf: true }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$1.Directionality, optional: true }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: CDK_DRAG_HANDLE, optional: true, self: true }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDrag, isStandalone: true, selector: \"[cdkDrag]\", inputs: { data: [\"cdkDragData\", \"data\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"], disabled: [\"cdkDragDisabled\", \"disabled\"], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, host: { properties: { \"class.cdk-drag-disabled\": \"disabled\", \"class.cdk-drag-dragging\": \"_dragRef.isDragging()\" }, classAttribute: \"cdk-drag\" }, providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }], queries: [{ propertyName: \"_previewTemplate\", first: true, predicate: CDK_DRAG_PREVIEW, descendants: true }, { propertyName: \"_placeholderTemplate\", first: true, predicate: CDK_DRAG_PLACEHOLDER, descendants: true }, { propertyName: \"_handles\", predicate: CDK_DRAG_HANDLE, descendants: true }], exportAs: [\"cdkDrag\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDrag, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n standalone: true,\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DROP_LIST]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [CDK_DRAG_HANDLE]\n }] }, { type: CdkDrag, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }] }]; }, propDecorators: { _handles: [{\n type: ContentChildren,\n args: [CDK_DRAG_HANDLE, { descendants: true }]\n }], _previewTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PREVIEW]\n }], _placeholderTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PLACEHOLDER]\n }], data: [{\n type: Input,\n args: ['cdkDragData']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }], disabled: [{\n type: Input,\n args: ['cdkDragDisabled']\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n constructor() {\n /** Drop lists registered inside the group. */\n this._items = new Set();\n this._disabled = false;\n }\n /** Whether starting a dragging sequence from inside this group is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this._items.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDropListGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDropListGroup, isStandalone: true, selector: \"[cdkDropListGroup]\", inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\"] }, providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }], exportAs: [\"cdkDropListGroup\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDropListGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n standalone: true,\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }],\n }]\n }], propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDropListGroupDisabled']\n }] } });\n\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n /** Keeps track of the drop lists that are currently on the page. */\n static { this._dropLists = []; }\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);\n }\n constructor(\n /** Element that the drop list is attached to. */\n element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {\n this.element = element;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._dir = _dir;\n this._group = _group;\n /** Emits when the list has been destroyed. */\n this._destroyed = new Subject();\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n this.connectedTo = [];\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n this.id = `cdk-drop-list-${_uniqueIdCounter++}`;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits when the user drops an item inside the container. */\n this.dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n this._unsortedItems = new Set();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate = (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (_group) {\n _group._items.add(this);\n }\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef\n .getVisibleElement()\n .compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data,\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n item: dropEvent.item.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\n });\n // Mark for check since all of these events run outside of change\n // detection and we're not guaranteed for something else to have triggered it.\n this._changeDetectorRef.markForCheck();\n });\n merge(ref.receivingStarted, ref.receivingStopped).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDropList, deps: [{ token: i0.ElementRef }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }, { token: i1$1.Directionality, optional: true }, { token: CDK_DROP_LIST_GROUP, optional: true, skipSelf: true }, { token: CDK_DRAG_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkDropList, isStandalone: true, selector: \"[cdkDropList], cdk-drop-list\", inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], data: [\"cdkDropListData\", \"data\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], id: \"id\", lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], disabled: [\"cdkDropListDisabled\", \"disabled\"], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\"], enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\"], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, host: { properties: { \"attr.id\": \"id\", \"class.cdk-drop-list-disabled\": \"disabled\", \"class.cdk-drop-list-dragging\": \"_dropListRef.isDragging()\", \"class.cdk-drop-list-receiving\": \"_dropListRef.isReceiving()\" }, classAttribute: \"cdk-drop-list\" }, providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ], exportAs: [\"cdkDropList\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkDropList, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n standalone: true,\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDispatcher }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: CdkDropListGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DROP_LIST_GROUP]\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }]; }, propDecorators: { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], id: [{\n type: Input\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], disabled: [{\n type: Input,\n args: ['cdkDropListDisabled']\n }], sortingDisabled: [{\n type: Input,\n args: ['cdkDropListSortingDisabled']\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], autoScrollDisabled: [{\n type: Input,\n args: ['cdkDropListAutoScrollDisabled']\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }] } });\n\nconst DRAG_DROP_DIRECTIVES = [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n];\nclass DragDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropModule, imports: [CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder], exports: [CdkScrollableModule, CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropModule, providers: [DragDrop], imports: [CdkScrollableModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: DRAG_DROP_DIRECTIVES,\n exports: [CdkScrollableModule, ...DRAG_DROP_DIRECTIVES],\n providers: [DragDrop],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n","import * as i0 from '@angular/core';\nimport { inject, ElementRef, Directive, Input, NgZone, ChangeDetectorRef, forwardRef, Output, ContentChildren, NgModule } from '@angular/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { A, hasModifierKey, SPACE, ENTER, HOME, END, UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { coerceBooleanProperty, coerceArray } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { Subject, defer, merge, fromEvent } from 'rxjs';\nimport { startWith, switchMap, map, takeUntil, filter } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Directionality } from '@angular/cdk/bidi';\n\n/** The next id to use for creating unique DOM IDs. */\nlet nextId = 0;\n/**\n * An implementation of SelectionModel that internally always represents the selection as a\n * multi-selection. This is necessary so that we can recover the full selection if the user\n * switches the listbox from single-selection to multi-selection after initialization.\n *\n * This selection model may report multiple selected values, even if it is in single-selection\n * mode. It is up to the user (CdkListbox) to check for invalid selections.\n */\nclass ListboxSelectionModel extends SelectionModel {\n constructor(multiple = false, initiallySelectedValues, emitChanges = true, compareWith) {\n super(true, initiallySelectedValues, emitChanges, compareWith);\n this.multiple = multiple;\n }\n isMultipleSelection() {\n return this.multiple;\n }\n select(...values) {\n // The super class is always in multi-selection mode, so we need to override the behavior if\n // this selection model actually belongs to a single-selection listbox.\n if (this.multiple) {\n return super.select(...values);\n }\n else {\n return super.setSelection(...values);\n }\n }\n}\n/** A selectable option in a listbox. */\nclass CdkOption {\n constructor() {\n this._generatedId = `cdk-option-${nextId++}`;\n this._disabled = false;\n /** The option's host element */\n this.element = inject(ElementRef).nativeElement;\n /** The parent listbox this option belongs to. */\n this.listbox = inject(CdkListbox);\n /** Emits when the option is destroyed. */\n this.destroyed = new Subject();\n /** Emits when the option is clicked. */\n this._clicked = new Subject();\n }\n /** The id of the option's host element. */\n get id() {\n return this._id || this._generatedId;\n }\n set id(value) {\n this._id = value;\n }\n /** Whether this option is disabled. */\n get disabled() {\n return this.listbox.disabled || this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** The tabindex of the option when it is enabled. */\n get enabledTabIndex() {\n return this._enabledTabIndex === undefined\n ? this.listbox.enabledTabIndex\n : this._enabledTabIndex;\n }\n set enabledTabIndex(value) {\n this._enabledTabIndex = value;\n }\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n /** Whether this option is selected. */\n isSelected() {\n return this.listbox.isSelected(this);\n }\n /** Whether this option is active. */\n isActive() {\n return this.listbox.isActive(this);\n }\n /** Toggle the selected state of this option. */\n toggle() {\n this.listbox.toggle(this);\n }\n /** Select this option if it is not selected. */\n select() {\n this.listbox.select(this);\n }\n /** Deselect this option if it is selected. */\n deselect() {\n this.listbox.deselect(this);\n }\n /** Focus this option. */\n focus() {\n this.element.focus();\n }\n /** Get the label for this element which is required by the FocusableOption interface. */\n getLabel() {\n return (this.typeaheadLabel ?? this.element.textContent?.trim()) || '';\n }\n /**\n * No-op implemented as a part of `Highlightable`.\n * @docs-private\n */\n setActiveStyles() { }\n /**\n * No-op implemented as a part of `Highlightable`.\n * @docs-private\n */\n setInactiveStyles() { }\n /** Handle focus events on the option. */\n _handleFocus() {\n // Options can wind up getting focused in active descendant mode if the user clicks on them.\n // In this case, we push focus back to the parent listbox to prevent an extra tab stop when\n // the user performs a shift+tab.\n if (this.listbox.useActiveDescendant) {\n this.listbox._setActiveOption(this);\n this.listbox.focus();\n }\n }\n /** Get the tabindex for this option. */\n _getTabIndex() {\n if (this.listbox.useActiveDescendant || this.disabled) {\n return -1;\n }\n return this.isActive() ? this.enabledTabIndex : -1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkOption, isStandalone: true, selector: \"[cdkOption]\", inputs: { id: \"id\", value: [\"cdkOption\", \"value\"], typeaheadLabel: [\"cdkOptionTypeaheadLabel\", \"typeaheadLabel\"], disabled: [\"cdkOptionDisabled\", \"disabled\"], enabledTabIndex: [\"tabindex\", \"enabledTabIndex\"] }, host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_clicked.next($event)\", \"focus\": \"_handleFocus()\" }, properties: { \"id\": \"id\", \"attr.aria-selected\": \"isSelected()\", \"attr.tabindex\": \"_getTabIndex()\", \"attr.aria-disabled\": \"disabled\", \"class.cdk-option-active\": \"isActive()\" }, classAttribute: \"cdk-option\" }, exportAs: [\"cdkOption\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkOption, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkOption]',\n standalone: true,\n exportAs: 'cdkOption',\n host: {\n 'role': 'option',\n 'class': 'cdk-option',\n '[id]': 'id',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled',\n '[class.cdk-option-active]': 'isActive()',\n '(click)': '_clicked.next($event)',\n '(focus)': '_handleFocus()',\n },\n }]\n }], propDecorators: { id: [{\n type: Input\n }], value: [{\n type: Input,\n args: ['cdkOption']\n }], typeaheadLabel: [{\n type: Input,\n args: ['cdkOptionTypeaheadLabel']\n }], disabled: [{\n type: Input,\n args: ['cdkOptionDisabled']\n }], enabledTabIndex: [{\n type: Input,\n args: ['tabindex']\n }] } });\nclass CdkListbox {\n /** The id of the option's host element. */\n get id() {\n return this._id || this._generatedId;\n }\n set id(value) {\n this._id = value;\n }\n /** The tabindex to use when the listbox is enabled. */\n get enabledTabIndex() {\n return this._enabledTabIndex === undefined ? 0 : this._enabledTabIndex;\n }\n set enabledTabIndex(value) {\n this._enabledTabIndex = value;\n }\n /** The value selected in the listbox, represented as an array of option values. */\n get value() {\n return this._invalid ? [] : this.selectionModel.selected;\n }\n set value(value) {\n this._setSelection(value);\n }\n /**\n * Whether the listbox allows multiple options to be selected. If the value switches from `true`\n * to `false`, and more than one option is selected, all options are deselected.\n */\n get multiple() {\n return this.selectionModel.multiple;\n }\n set multiple(value) {\n this.selectionModel.multiple = coerceBooleanProperty(value);\n if (this.options) {\n this._updateInternalValue();\n }\n }\n /** Whether the listbox is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Whether the listbox will use active descendant or will move focus onto the options. */\n get useActiveDescendant() {\n return this._useActiveDescendant;\n }\n set useActiveDescendant(shouldUseActiveDescendant) {\n this._useActiveDescendant = coerceBooleanProperty(shouldUseActiveDescendant);\n }\n /** The orientation of the listbox. Only affects keyboard interaction, not visual layout. */\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value === 'horizontal' ? 'horizontal' : 'vertical';\n if (value === 'horizontal') {\n this.listKeyManager?.withHorizontalOrientation(this._dir?.value || 'ltr');\n }\n else {\n this.listKeyManager?.withVerticalOrientation();\n }\n }\n /** The function used to compare option values. */\n get compareWith() {\n return this.selectionModel.compareWith;\n }\n set compareWith(fn) {\n this.selectionModel.compareWith = fn;\n }\n /**\n * Whether the keyboard navigation should wrap when the user presses arrow down on the last item\n * or arrow up on the first item.\n */\n get navigationWrapDisabled() {\n return this._navigationWrapDisabled;\n }\n set navigationWrapDisabled(wrap) {\n this._navigationWrapDisabled = coerceBooleanProperty(wrap);\n this.listKeyManager?.withWrap(!this._navigationWrapDisabled);\n }\n /** Whether keyboard navigation should skip over disabled items. */\n get navigateDisabledOptions() {\n return this._navigateDisabledOptions;\n }\n set navigateDisabledOptions(skip) {\n this._navigateDisabledOptions = coerceBooleanProperty(skip);\n this.listKeyManager?.skipPredicate(this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate);\n }\n constructor() {\n this._generatedId = `cdk-listbox-${nextId++}`;\n this._disabled = false;\n this._useActiveDescendant = false;\n this._orientation = 'vertical';\n this._navigationWrapDisabled = false;\n this._navigateDisabledOptions = false;\n /** Emits when the selected value(s) in the listbox change. */\n this.valueChange = new Subject();\n /** The selection model used by the listbox. */\n this.selectionModel = new ListboxSelectionModel();\n /** Emits when the listbox is destroyed. */\n this.destroyed = new Subject();\n /** The host element of the listbox. */\n this.element = inject(ElementRef).nativeElement;\n /** The Angular zone. */\n this.ngZone = inject(NgZone);\n /** The change detector for this listbox. */\n this.changeDetectorRef = inject(ChangeDetectorRef);\n /** Whether the currently selected value in the selection model is invalid. */\n this._invalid = false;\n /** The last user-triggered option. */\n this._lastTriggered = null;\n /** Callback called when the listbox has been touched */\n this._onTouched = () => { };\n /** Callback called when the listbox value changes */\n this._onChange = () => { };\n /** Emits when an option has been clicked. */\n this._optionClicked = defer(() => this.options.changes.pipe(startWith(this.options), switchMap(options => merge(...options.map(option => option._clicked.pipe(map(event => ({ option, event }))))))));\n /** The directionality of the page. */\n this._dir = inject(Directionality, { optional: true });\n /** A predicate that skips disabled options. */\n this._skipDisabledPredicate = (option) => option.disabled;\n /** A predicate that does not skip any options. */\n this._skipNonePredicate = () => false;\n /** Whether the listbox currently has focus. */\n this._hasFocus = false;\n /** A reference to the option that was active before the listbox lost focus. */\n this._previousActiveOption = null;\n this._setPreviousActiveOptionAsActiveOptionOnWindowBlur();\n }\n ngAfterContentInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this._verifyNoOptionValueCollisions();\n this._verifyOptionValues();\n }\n this._initKeyManager();\n // Update the internal value whenever the options or the model value changes.\n merge(this.selectionModel.changed, this.options.changes)\n .pipe(startWith(null), takeUntil(this.destroyed))\n .subscribe(() => this._updateInternalValue());\n this._optionClicked\n .pipe(filter(({ option }) => !option.disabled), takeUntil(this.destroyed))\n .subscribe(({ option, event }) => this._handleOptionClicked(option, event));\n }\n ngOnDestroy() {\n this.listKeyManager?.destroy();\n this.destroyed.next();\n this.destroyed.complete();\n }\n /**\n * Toggle the selected state of the given option.\n * @param option The option to toggle\n */\n toggle(option) {\n this.toggleValue(option.value);\n }\n /**\n * Toggle the selected state of the given value.\n * @param value The value to toggle\n */\n toggleValue(value) {\n if (this._invalid) {\n this.selectionModel.clear(false);\n }\n this.selectionModel.toggle(value);\n }\n /**\n * Select the given option.\n * @param option The option to select\n */\n select(option) {\n this.selectValue(option.value);\n }\n /**\n * Select the given value.\n * @param value The value to select\n */\n selectValue(value) {\n if (this._invalid) {\n this.selectionModel.clear(false);\n }\n this.selectionModel.select(value);\n }\n /**\n * Deselect the given option.\n * @param option The option to deselect\n */\n deselect(option) {\n this.deselectValue(option.value);\n }\n /**\n * Deselect the given value.\n * @param value The value to deselect\n */\n deselectValue(value) {\n if (this._invalid) {\n this.selectionModel.clear(false);\n }\n this.selectionModel.deselect(value);\n }\n /**\n * Set the selected state of all options.\n * @param isSelected The new selected state to set\n */\n setAllSelected(isSelected) {\n if (!isSelected) {\n this.selectionModel.clear();\n }\n else {\n if (this._invalid) {\n this.selectionModel.clear(false);\n }\n this.selectionModel.select(...this.options.map(option => option.value));\n }\n }\n /**\n * Get whether the given option is selected.\n * @param option The option to get the selected state of\n */\n isSelected(option) {\n return this.isValueSelected(option.value);\n }\n /**\n * Get whether the given option is active.\n * @param option The option to get the active state of\n */\n isActive(option) {\n return !!(this.listKeyManager?.activeItem === option);\n }\n /**\n * Get whether the given value is selected.\n * @param value The value to get the selected state of\n */\n isValueSelected(value) {\n if (this._invalid) {\n return false;\n }\n return this.selectionModel.isSelected(value);\n }\n /**\n * Registers a callback to be invoked when the listbox's value changes from user input.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Registers a callback to be invoked when the listbox is blurred by the user.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Sets the listbox's value.\n * @param value The new value of the listbox\n * @docs-private\n */\n writeValue(value) {\n this._setSelection(value);\n this._verifyOptionValues();\n }\n /**\n * Sets the disabled state of the listbox.\n * @param isDisabled The new disabled state\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /** Focus the listbox's host element. */\n focus() {\n this.element.focus();\n }\n /**\n * Triggers the given option in response to user interaction.\n * - In single selection mode: selects the option and deselects any other selected option.\n * - In multi selection mode: toggles the selected state of the option.\n * @param option The option to trigger\n */\n triggerOption(option) {\n if (option && !option.disabled) {\n this._lastTriggered = option;\n const changed = this.multiple\n ? this.selectionModel.toggle(option.value)\n : this.selectionModel.select(option.value);\n if (changed) {\n this._onChange(this.value);\n this.valueChange.next({\n value: this.value,\n listbox: this,\n option: option,\n });\n }\n }\n }\n /**\n * Trigger the given range of options in response to user interaction.\n * Should only be called in multi-selection mode.\n * @param trigger The option that was triggered\n * @param from The start index of the options to toggle\n * @param to The end index of the options to toggle\n * @param on Whether to toggle the option range on\n */\n triggerRange(trigger, from, to, on) {\n if (this.disabled || (trigger && trigger.disabled)) {\n return;\n }\n this._lastTriggered = trigger;\n const isEqual = this.compareWith ?? Object.is;\n const updateValues = [...this.options]\n .slice(Math.max(0, Math.min(from, to)), Math.min(this.options.length, Math.max(from, to) + 1))\n .filter(option => !option.disabled)\n .map(option => option.value);\n const selected = [...this.value];\n for (const updateValue of updateValues) {\n const selectedIndex = selected.findIndex(selectedValue => isEqual(selectedValue, updateValue));\n if (on && selectedIndex === -1) {\n selected.push(updateValue);\n }\n else if (!on && selectedIndex !== -1) {\n selected.splice(selectedIndex, 1);\n }\n }\n let changed = this.selectionModel.setSelection(...selected);\n if (changed) {\n this._onChange(this.value);\n this.valueChange.next({\n value: this.value,\n listbox: this,\n option: trigger,\n });\n }\n }\n /**\n * Sets the given option as active.\n * @param option The option to make active\n */\n _setActiveOption(option) {\n this.listKeyManager.setActiveItem(option);\n }\n /** Called when the listbox receives focus. */\n _handleFocus() {\n if (!this.useActiveDescendant) {\n if (this.selectionModel.selected.length > 0) {\n this._setNextFocusToSelectedOption();\n }\n else {\n this.listKeyManager.setNextItemActive();\n }\n this._focusActiveOption();\n }\n }\n /** Called when the user presses keydown on the listbox. */\n _handleKeydown(event) {\n if (this._disabled) {\n return;\n }\n const { keyCode } = event;\n const previousActiveIndex = this.listKeyManager.activeItemIndex;\n const ctrlKeys = ['ctrlKey', 'metaKey'];\n if (this.multiple && keyCode === A && hasModifierKey(event, ...ctrlKeys)) {\n // Toggle all options off if they're all selected, otherwise toggle them all on.\n this.triggerRange(null, 0, this.options.length - 1, this.options.length !== this.value.length);\n event.preventDefault();\n return;\n }\n if (this.multiple &&\n (keyCode === SPACE || keyCode === ENTER) &&\n hasModifierKey(event, 'shiftKey')) {\n if (this.listKeyManager.activeItem && this.listKeyManager.activeItemIndex != null) {\n this.triggerRange(this.listKeyManager.activeItem, this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex, this.listKeyManager.activeItemIndex, !this.listKeyManager.activeItem.isSelected());\n }\n event.preventDefault();\n return;\n }\n if (this.multiple &&\n keyCode === HOME &&\n hasModifierKey(event, ...ctrlKeys) &&\n hasModifierKey(event, 'shiftKey')) {\n const trigger = this.listKeyManager.activeItem;\n if (trigger) {\n const from = this.listKeyManager.activeItemIndex;\n this.listKeyManager.setFirstItemActive();\n this.triggerRange(trigger, from, this.listKeyManager.activeItemIndex, !trigger.isSelected());\n }\n event.preventDefault();\n return;\n }\n if (this.multiple &&\n keyCode === END &&\n hasModifierKey(event, ...ctrlKeys) &&\n hasModifierKey(event, 'shiftKey')) {\n const trigger = this.listKeyManager.activeItem;\n if (trigger) {\n const from = this.listKeyManager.activeItemIndex;\n this.listKeyManager.setLastItemActive();\n this.triggerRange(trigger, from, this.listKeyManager.activeItemIndex, !trigger.isSelected());\n }\n event.preventDefault();\n return;\n }\n if (keyCode === SPACE || keyCode === ENTER) {\n this.triggerOption(this.listKeyManager.activeItem);\n event.preventDefault();\n return;\n }\n const isNavKey = keyCode === UP_ARROW ||\n keyCode === DOWN_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW ||\n keyCode === HOME ||\n keyCode === END;\n this.listKeyManager.onKeydown(event);\n // Will select an option if shift was pressed while navigating to the option\n if (isNavKey && event.shiftKey && previousActiveIndex !== this.listKeyManager.activeItemIndex) {\n this.triggerOption(this.listKeyManager.activeItem);\n }\n }\n /** Called when a focus moves into the listbox. */\n _handleFocusIn() {\n // Note that we use a `focusin` handler for this instead of the existing `focus` handler,\n // because focus won't land on the listbox if `useActiveDescendant` is enabled.\n this._hasFocus = true;\n }\n /**\n * Called when the focus leaves an element in the listbox.\n * @param event The focusout event\n */\n _handleFocusOut(event) {\n // Some browsers (e.g. Chrome and Firefox) trigger the focusout event when the user returns back to the document.\n // To prevent losing the active option in this case, we store it in `_previousActiveOption` and restore it on the window `blur` event\n // This ensures that the `activeItem` matches the actual focused element when the user returns to the document.\n this._previousActiveOption = this.listKeyManager.activeItem;\n const otherElement = event.relatedTarget;\n if (this.element !== otherElement && !this.element.contains(otherElement)) {\n this._onTouched();\n this._hasFocus = false;\n this._setNextFocusToSelectedOption();\n }\n }\n /** Get the id of the active option if active descendant is being used. */\n _getAriaActiveDescendant() {\n return this._useActiveDescendant ? this.listKeyManager?.activeItem?.id : null;\n }\n /** Get the tabindex for the listbox. */\n _getTabIndex() {\n if (this.disabled) {\n return -1;\n }\n return this.useActiveDescendant || !this.listKeyManager.activeItem ? this.enabledTabIndex : -1;\n }\n /** Initialize the key manager. */\n _initKeyManager() {\n this.listKeyManager = new ActiveDescendantKeyManager(this.options)\n .withWrap(!this._navigationWrapDisabled)\n .withTypeAhead()\n .withHomeAndEnd()\n .withAllowedModifierKeys(['shiftKey'])\n .skipPredicate(this._navigateDisabledOptions ? this._skipNonePredicate : this._skipDisabledPredicate);\n if (this.orientation === 'vertical') {\n this.listKeyManager.withVerticalOrientation();\n }\n else {\n this.listKeyManager.withHorizontalOrientation(this._dir?.value || 'ltr');\n }\n if (this.selectionModel.selected.length) {\n Promise.resolve().then(() => this._setNextFocusToSelectedOption());\n }\n this.listKeyManager.change.subscribe(() => this._focusActiveOption());\n }\n /** Focus the active option. */\n _focusActiveOption() {\n if (!this.useActiveDescendant) {\n this.listKeyManager.activeItem?.focus();\n }\n this.changeDetectorRef.markForCheck();\n }\n /**\n * Set the selected values.\n * @param value The list of new selected values.\n */\n _setSelection(value) {\n if (this._invalid) {\n this.selectionModel.clear(false);\n }\n this.selectionModel.setSelection(...this._coerceValue(value));\n if (!this._hasFocus) {\n this._setNextFocusToSelectedOption();\n }\n }\n /** Sets the first selected option as first in the keyboard focus order. */\n _setNextFocusToSelectedOption() {\n // Null check the options since they only get defined after `ngAfterContentInit`.\n const selected = this.options?.find(option => option.isSelected());\n if (selected) {\n this.listKeyManager.updateActiveItem(selected);\n }\n }\n /** Update the internal value of the listbox based on the selection model. */\n _updateInternalValue() {\n const indexCache = new Map();\n this.selectionModel.sort((a, b) => {\n const aIndex = this._getIndexForValue(indexCache, a);\n const bIndex = this._getIndexForValue(indexCache, b);\n return aIndex - bIndex;\n });\n const selected = this.selectionModel.selected;\n this._invalid =\n (!this.multiple && selected.length > 1) || !!this._getInvalidOptionValues(selected).length;\n this.changeDetectorRef.markForCheck();\n }\n /**\n * Gets the index of the given value in the given list of options.\n * @param cache The cache of indices found so far\n * @param value The value to find\n * @return The index of the value in the options list\n */\n _getIndexForValue(cache, value) {\n const isEqual = this.compareWith || Object.is;\n if (!cache.has(value)) {\n let index = -1;\n for (let i = 0; i < this.options.length; i++) {\n if (isEqual(value, this.options.get(i).value)) {\n index = i;\n break;\n }\n }\n cache.set(value, index);\n }\n return cache.get(value);\n }\n /**\n * Handle the user clicking an option.\n * @param option The option that was clicked.\n */\n _handleOptionClicked(option, event) {\n event.preventDefault();\n this.listKeyManager.setActiveItem(option);\n if (event.shiftKey && this.multiple) {\n this.triggerRange(option, this._getLastTriggeredIndex() ?? this.listKeyManager.activeItemIndex, this.listKeyManager.activeItemIndex, !option.isSelected());\n }\n else {\n this.triggerOption(option);\n }\n }\n /** Verifies that no two options represent the same value under the compareWith function. */\n _verifyNoOptionValueCollisions() {\n this.options.changes.pipe(startWith(this.options), takeUntil(this.destroyed)).subscribe(() => {\n const isEqual = this.compareWith ?? Object.is;\n for (let i = 0; i < this.options.length; i++) {\n const option = this.options.get(i);\n let duplicate = null;\n for (let j = i + 1; j < this.options.length; j++) {\n const other = this.options.get(j);\n if (isEqual(option.value, other.value)) {\n duplicate = other;\n break;\n }\n }\n if (duplicate) {\n // TODO(mmalerba): Link to docs about this.\n if (this.compareWith) {\n console.warn(`Found multiple CdkOption representing the same value under the given compareWith function`, {\n option1: option.element,\n option2: duplicate.element,\n compareWith: this.compareWith,\n });\n }\n else {\n console.warn(`Found multiple CdkOption with the same value`, {\n option1: option.element,\n option2: duplicate.element,\n });\n }\n return;\n }\n }\n });\n }\n /** Verifies that the option values are valid. */\n _verifyOptionValues() {\n if (this.options && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n const selected = this.selectionModel.selected;\n const invalidValues = this._getInvalidOptionValues(selected);\n if (!this.multiple && selected.length > 1) {\n throw Error('Listbox cannot have more than one selected value in multi-selection mode.');\n }\n if (invalidValues.length) {\n throw Error('Listbox has selected values that do not match any of its options.');\n }\n }\n }\n /**\n * Coerces a value into an array representing a listbox selection.\n * @param value The value to coerce\n * @return An array\n */\n _coerceValue(value) {\n return value == null ? [] : coerceArray(value);\n }\n /**\n * Get the sublist of values that do not represent valid option values in this listbox.\n * @param values The list of values\n * @return The sublist of values that are not valid option values\n */\n _getInvalidOptionValues(values) {\n const isEqual = this.compareWith || Object.is;\n const validValues = (this.options || []).map(option => option.value);\n return values.filter(value => !validValues.some(validValue => isEqual(value, validValue)));\n }\n /** Get the index of the last triggered option. */\n _getLastTriggeredIndex() {\n const index = this.options.toArray().indexOf(this._lastTriggered);\n return index === -1 ? null : index;\n }\n /**\n * Set previous active option as active option on window blur.\n * This ensures that the `activeOption` matches the actual focused element when the user returns to the document.\n */\n _setPreviousActiveOptionAsActiveOptionOnWindowBlur() {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'blur')\n .pipe(takeUntil(this.destroyed))\n .subscribe(() => {\n if (this.element.contains(document.activeElement) && this._previousActiveOption) {\n this._setActiveOption(this._previousActiveOption);\n this._previousActiveOption = null;\n }\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListbox, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkListbox, isStandalone: true, selector: \"[cdkListbox]\", inputs: { id: \"id\", enabledTabIndex: [\"tabindex\", \"enabledTabIndex\"], value: [\"cdkListboxValue\", \"value\"], multiple: [\"cdkListboxMultiple\", \"multiple\"], disabled: [\"cdkListboxDisabled\", \"disabled\"], useActiveDescendant: [\"cdkListboxUseActiveDescendant\", \"useActiveDescendant\"], orientation: [\"cdkListboxOrientation\", \"orientation\"], compareWith: [\"cdkListboxCompareWith\", \"compareWith\"], navigationWrapDisabled: [\"cdkListboxNavigationWrapDisabled\", \"navigationWrapDisabled\"], navigateDisabledOptions: [\"cdkListboxNavigatesDisabledOptions\", \"navigateDisabledOptions\"] }, outputs: { valueChange: \"cdkListboxValueChange\" }, host: { attributes: { \"role\": \"listbox\" }, listeners: { \"focus\": \"_handleFocus()\", \"keydown\": \"_handleKeydown($event)\", \"focusout\": \"_handleFocusOut($event)\", \"focusin\": \"_handleFocusIn()\" }, properties: { \"id\": \"id\", \"attr.tabindex\": \"_getTabIndex()\", \"attr.aria-disabled\": \"disabled\", \"attr.aria-multiselectable\": \"multiple\", \"attr.aria-activedescendant\": \"_getAriaActiveDescendant()\", \"attr.aria-orientation\": \"orientation\" }, classAttribute: \"cdk-listbox\" }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CdkListbox),\n multi: true,\n },\n ], queries: [{ propertyName: \"options\", predicate: CdkOption, descendants: true }], exportAs: [\"cdkListbox\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListbox, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkListbox]',\n standalone: true,\n exportAs: 'cdkListbox',\n host: {\n 'role': 'listbox',\n 'class': 'cdk-listbox',\n '[id]': 'id',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[attr.aria-orientation]': 'orientation',\n '(focus)': '_handleFocus()',\n '(keydown)': '_handleKeydown($event)',\n '(focusout)': '_handleFocusOut($event)',\n '(focusin)': '_handleFocusIn()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CdkListbox),\n multi: true,\n },\n ],\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { id: [{\n type: Input\n }], enabledTabIndex: [{\n type: Input,\n args: ['tabindex']\n }], value: [{\n type: Input,\n args: ['cdkListboxValue']\n }], multiple: [{\n type: Input,\n args: ['cdkListboxMultiple']\n }], disabled: [{\n type: Input,\n args: ['cdkListboxDisabled']\n }], useActiveDescendant: [{\n type: Input,\n args: ['cdkListboxUseActiveDescendant']\n }], orientation: [{\n type: Input,\n args: ['cdkListboxOrientation']\n }], compareWith: [{\n type: Input,\n args: ['cdkListboxCompareWith']\n }], navigationWrapDisabled: [{\n type: Input,\n args: ['cdkListboxNavigationWrapDisabled']\n }], navigateDisabledOptions: [{\n type: Input,\n args: ['cdkListboxNavigatesDisabledOptions']\n }], valueChange: [{\n type: Output,\n args: ['cdkListboxValueChange']\n }], options: [{\n type: ContentChildren,\n args: [CdkOption, { descendants: true }]\n }] } });\n\nconst EXPORTED_DECLARATIONS = [CdkListbox, CdkOption];\nclass CdkListboxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListboxModule, imports: [CdkListbox, CdkOption], exports: [CdkListbox, CdkOption] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListboxModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkListboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...EXPORTED_DECLARATIONS],\n exports: [...EXPORTED_DECLARATIONS],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkListbox, CdkListboxModule, CdkOption };\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport * as i1 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, EventEmitter, forwardRef, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Optional, ContentChild, ViewChild, Input, Output, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { Subject, of } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nclass CdkStepHeader {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n /** Focuses the step header. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepHeader, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStepHeader, selector: \"[cdkStepHeader]\", host: { attributes: { \"role\": \"tab\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepHeader]',\n host: {\n 'role': 'tab',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\nclass CdkStepLabel {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepLabel, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStepLabel, selector: \"[cdkStepLabel]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepLabel]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/** Used to generate unique ID for each stepper component. */\nlet nextId = 0;\n/** Change event emitted on selection changes. */\nclass StepperSelectionEvent {\n}\n/** Enum to represent the different states of the steps. */\nconst STEP_STATE = {\n NUMBER: 'number',\n EDIT: 'edit',\n DONE: 'done',\n ERROR: 'error',\n};\n/** InjectionToken that can be used to specify the global stepper options. */\nconst STEPPER_GLOBAL_OPTIONS = new InjectionToken('STEPPER_GLOBAL_OPTIONS');\nclass CdkStep {\n /** Whether the user can return to this step once it has been marked as completed. */\n get editable() {\n return this._editable;\n }\n set editable(value) {\n this._editable = coerceBooleanProperty(value);\n }\n /** Whether the completion of step is optional. */\n get optional() {\n return this._optional;\n }\n set optional(value) {\n this._optional = coerceBooleanProperty(value);\n }\n /** Whether step is marked as completed. */\n get completed() {\n return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;\n }\n set completed(value) {\n this._completedOverride = coerceBooleanProperty(value);\n }\n _getDefaultCompleted() {\n return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n }\n /** Whether step has an error. */\n get hasError() {\n return this._customError == null ? this._getDefaultError() : this._customError;\n }\n set hasError(value) {\n this._customError = coerceBooleanProperty(value);\n }\n _getDefaultError() {\n return this.stepControl && this.stepControl.invalid && this.interacted;\n }\n constructor(_stepper, stepperOptions) {\n this._stepper = _stepper;\n /** Whether user has attempted to move away from the step. */\n this.interacted = false;\n /** Emits when the user has attempted to move away from the step. */\n this.interactedStream = new EventEmitter();\n this._editable = true;\n this._optional = false;\n this._completedOverride = null;\n this._customError = null;\n this._stepperOptions = stepperOptions ? stepperOptions : {};\n this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;\n }\n /** Selects this step component. */\n select() {\n this._stepper.selected = this;\n }\n /** Resets the step to its initial state. Note that this includes resetting form data. */\n reset() {\n this.interacted = false;\n if (this._completedOverride != null) {\n this._completedOverride = false;\n }\n if (this._customError != null) {\n this._customError = false;\n }\n if (this.stepControl) {\n this.stepControl.reset();\n }\n }\n ngOnChanges() {\n // Since basically all inputs of the MatStep get proxied through the view down to the\n // underlying MatStepHeader, we have to make sure that change detection runs correctly.\n this._stepper._stateChanged();\n }\n _markAsInteracted() {\n if (!this.interacted) {\n this.interacted = true;\n this.interactedStream.emit(this);\n }\n }\n /** Determines whether the error state can be shown. */\n _showError() {\n // We want to show the error state either if the user opted into/out of it using the\n // global options, or if they've explicitly set it through the `hasError` input.\n return this._stepperOptions.showError ?? this._customError != null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStep, deps: [{ token: forwardRef(() => CdkStepper) }, { token: STEPPER_GLOBAL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStep, selector: \"cdk-step\", inputs: { stepControl: \"stepControl\", label: \"label\", errorMessage: \"errorMessage\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], state: \"state\", editable: \"editable\", optional: \"optional\", completed: \"completed\", hasError: \"hasError\" }, outputs: { interactedStream: \"interacted\" }, queries: [{ propertyName: \"stepLabel\", first: true, predicate: CdkStepLabel, descendants: true }], viewQueries: [{ propertyName: \"content\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"cdkStep\"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStep, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-step',\n exportAs: 'cdkStep',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper, decorators: [{\n type: Inject,\n args: [forwardRef(() => CdkStepper)]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [STEPPER_GLOBAL_OPTIONS]\n }] }]; }, propDecorators: { stepLabel: [{\n type: ContentChild,\n args: [CdkStepLabel]\n }], content: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], stepControl: [{\n type: Input\n }], interactedStream: [{\n type: Output,\n args: ['interacted']\n }], label: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], state: [{\n type: Input\n }], editable: [{\n type: Input\n }], optional: [{\n type: Input\n }], completed: [{\n type: Input\n }], hasError: [{\n type: Input\n }] } });\nclass CdkStepper {\n /** Whether the validity of previous steps should be checked or not. */\n get linear() {\n return this._linear;\n }\n set linear(value) {\n this._linear = coerceBooleanProperty(value);\n }\n /** The index of the selected step. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(index) {\n const newIndex = coerceNumberProperty(index);\n if (this.steps && this._steps) {\n // Ensure that the index can't be out of bounds.\n if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');\n }\n this.selected?._markAsInteracted();\n if (this._selectedIndex !== newIndex &&\n !this._anyControlsInvalidOrPending(newIndex) &&\n (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)) {\n this._updateSelectedItemIndex(newIndex);\n }\n }\n else {\n this._selectedIndex = newIndex;\n }\n }\n /** The step that is selected. */\n get selected() {\n return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n }\n set selected(step) {\n this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;\n }\n /** Orientation of the stepper. */\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n // This is a protected method so that `MatStepper` can hook into it.\n this._orientation = value;\n if (this._keyManager) {\n this._keyManager.withVerticalOrientation(value === 'vertical');\n }\n }\n constructor(_dir, _changeDetectorRef, _elementRef) {\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n this.steps = new QueryList();\n /** List of step headers sorted based on their DOM order. */\n this._sortedHeaders = new QueryList();\n this._linear = false;\n this._selectedIndex = 0;\n /** Event emitted when the selected step has changed. */\n this.selectionChange = new EventEmitter();\n /** Output to support two-way binding on `[(selectedIndex)]` */\n this.selectedIndexChange = new EventEmitter();\n this._orientation = 'horizontal';\n this._groupId = nextId++;\n }\n ngAfterContentInit() {\n this._steps.changes\n .pipe(startWith(this._steps), takeUntil(this._destroyed))\n .subscribe((steps) => {\n this.steps.reset(steps.filter(step => step._stepper === this));\n this.steps.notifyOnChanges();\n });\n }\n ngAfterViewInit() {\n // If the step headers are defined outside of the `ngFor` that renders the steps, like in the\n // Material stepper, they won't appear in the `QueryList` in the same order as they're\n // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort\n // them manually to ensure that they're correct. Alternatively, we can change the Material\n // template to inline the headers in the `ngFor`, but that'll result in a lot of\n // code duplication. See #23539.\n this._stepHeader.changes\n .pipe(startWith(this._stepHeader), takeUntil(this._destroyed))\n .subscribe((headers) => {\n this._sortedHeaders.reset(headers.toArray().sort((a, b) => {\n const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(b._elementRef.nativeElement);\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n }));\n this._sortedHeaders.notifyOnChanges();\n });\n // Note that while the step headers are content children by default, any components that\n // extend this one might have them as view children. We initialize the keyboard handling in\n // AfterViewInit so we're guaranteed for both view and content children to be defined.\n this._keyManager = new FocusKeyManager(this._sortedHeaders)\n .withWrap()\n .withHomeAndEnd()\n .withVerticalOrientation(this._orientation === 'vertical');\n (this._dir ? this._dir.change : of())\n .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n this._keyManager.updateActiveItem(this._selectedIndex);\n // No need to `takeUntil` here, because we're the ones destroying `steps`.\n this.steps.changes.subscribe(() => {\n if (!this.selected) {\n this._selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n });\n // The logic which asserts that the selected index is within bounds doesn't run before the\n // steps are initialized, because we don't how many steps there are yet so we may have an\n // invalid index on init. If that's the case, auto-correct to the default so we don't throw.\n if (!this._isValidIndex(this._selectedIndex)) {\n this._selectedIndex = 0;\n }\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this.steps.destroy();\n this._sortedHeaders.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Selects and focuses the next step in list. */\n next() {\n this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);\n }\n /** Selects and focuses the previous step in list. */\n previous() {\n this.selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n /** Resets the stepper to its initial state. Note that this includes clearing form data. */\n reset() {\n this._updateSelectedItemIndex(0);\n this.steps.forEach(step => step.reset());\n this._stateChanged();\n }\n /** Returns a unique id for each step label element. */\n _getStepLabelId(i) {\n return `cdk-step-label-${this._groupId}-${i}`;\n }\n /** Returns unique id for each step content element. */\n _getStepContentId(i) {\n return `cdk-step-content-${this._groupId}-${i}`;\n }\n /** Marks the component to be change detected. */\n _stateChanged() {\n this._changeDetectorRef.markForCheck();\n }\n /** Returns position state of the step with the given index. */\n _getAnimationDirection(index) {\n const position = index - this._selectedIndex;\n if (position < 0) {\n return this._layoutDirection() === 'rtl' ? 'next' : 'previous';\n }\n else if (position > 0) {\n return this._layoutDirection() === 'rtl' ? 'previous' : 'next';\n }\n return 'current';\n }\n /** Returns the type of icon to be displayed. */\n _getIndicatorType(index, state = STEP_STATE.NUMBER) {\n const step = this.steps.toArray()[index];\n const isCurrentStep = this._isCurrentStep(index);\n return step._displayDefaultIndicatorType\n ? this._getDefaultIndicatorLogic(step, isCurrentStep)\n : this._getGuidelineLogic(step, isCurrentStep, state);\n }\n _getDefaultIndicatorLogic(step, isCurrentStep) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (!step.completed || isCurrentStep) {\n return STEP_STATE.NUMBER;\n }\n else {\n return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;\n }\n }\n _getGuidelineLogic(step, isCurrentStep, state = STEP_STATE.NUMBER) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (step.completed && !isCurrentStep) {\n return STEP_STATE.DONE;\n }\n else if (step.completed && isCurrentStep) {\n return state;\n }\n else if (step.editable && isCurrentStep) {\n return STEP_STATE.EDIT;\n }\n else {\n return state;\n }\n }\n _isCurrentStep(index) {\n return this._selectedIndex === index;\n }\n /** Returns the index of the currently-focused step header. */\n _getFocusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;\n }\n _updateSelectedItemIndex(newIndex) {\n const stepsArray = this.steps.toArray();\n this.selectionChange.emit({\n selectedIndex: newIndex,\n previouslySelectedIndex: this._selectedIndex,\n selectedStep: stepsArray[newIndex],\n previouslySelectedStep: stepsArray[this._selectedIndex],\n });\n // If focus is inside the stepper, move it to the next header, otherwise it may become\n // lost when the active step content is hidden. We can't be more granular with the check\n // (e.g. checking whether focus is inside the active step), because we don't have a\n // reference to the elements that are rendering out the content.\n this._containsFocus()\n ? this._keyManager.setActiveItem(newIndex)\n : this._keyManager.updateActiveItem(newIndex);\n this._selectedIndex = newIndex;\n this.selectedIndexChange.emit(this._selectedIndex);\n this._stateChanged();\n }\n _onKeydown(event) {\n const hasModifier = hasModifierKey(event);\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n if (manager.activeItemIndex != null &&\n !hasModifier &&\n (keyCode === SPACE || keyCode === ENTER)) {\n this.selectedIndex = manager.activeItemIndex;\n event.preventDefault();\n }\n else {\n manager.setFocusOrigin('keyboard').onKeydown(event);\n }\n }\n _anyControlsInvalidOrPending(index) {\n if (this._linear && index >= 0) {\n return this.steps\n .toArray()\n .slice(0, index)\n .some(step => {\n const control = step.stepControl;\n const isIncomplete = control\n ? control.invalid || control.pending || !step.interacted\n : !step.completed;\n return isIncomplete && !step.optional && !step._completedOverride;\n });\n }\n return false;\n }\n _layoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Checks whether the stepper contains the focused element. */\n _containsFocus() {\n const stepperElement = this._elementRef.nativeElement;\n const focusedElement = _getFocusedElementPierceShadowDom();\n return stepperElement === focusedElement || stepperElement.contains(focusedElement);\n }\n /** Checks whether the passed-in index is a valid step index. */\n _isValidIndex(index) {\n return index > -1 && (!this.steps || index < this.steps.length);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepper, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStepper, selector: \"[cdkStepper]\", inputs: { linear: \"linear\", selectedIndex: \"selectedIndex\", selected: \"selected\", orientation: \"orientation\" }, outputs: { selectionChange: \"selectionChange\", selectedIndexChange: \"selectedIndexChange\" }, queries: [{ propertyName: \"_steps\", predicate: CdkStep, descendants: true }, { propertyName: \"_stepHeader\", predicate: CdkStepHeader, descendants: true }], exportAs: [\"cdkStepper\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepper, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepper]',\n exportAs: 'cdkStepper',\n }]\n }], ctorParameters: function () { return [{ type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { _steps: [{\n type: ContentChildren,\n args: [CdkStep, { descendants: true }]\n }], _stepHeader: [{\n type: ContentChildren,\n args: [CdkStepHeader, { descendants: true }]\n }], linear: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], selected: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], selectedIndexChange: [{\n type: Output\n }], orientation: [{\n type: Input\n }] } });\n\n/** Button that moves to the next step in a stepper workflow. */\nclass CdkStepperNext {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the next button. Defaults to \"submit\" if not specified. */\n this.type = 'submit';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperNext, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStepperNext, selector: \"button[cdkStepperNext]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.next()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperNext, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperNext]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.next()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n/** Button that moves to the previous step in a stepper workflow. */\nclass CdkStepperPrevious {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the previous button. Defaults to \"button\" if not specified. */\n this.type = 'button';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperPrevious, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkStepperPrevious, selector: \"button[cdkStepperPrevious]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.previous()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperPrevious, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperPrevious]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.previous()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n\nclass CdkStepperModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperModule, declarations: [CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious], imports: [BidiModule], exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperModule, imports: [BidiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkStepperModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious],\n declarations: [\n CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkStep, CdkStepHeader, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious, STEPPER_GLOBAL_OPTIONS, STEP_STATE, StepperSelectionEvent };\n","import * as i1 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Input, ContentChild, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, NgZone, Attribute, SkipSelf, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\n\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkCellDef, selector: \"[cdkCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkFooterCellDef, selector: \"[cdkFooterCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkFooterCell, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n\n/**\n * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable\n ? from(Promise.resolve(undefined))\n : this._ngZone.onStable.pipe(take(1));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _CoalescedStyleScheduler }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }]; } });\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkHeaderRowDef, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkFooterRowDef, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkRowDef, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n /**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\n static { this.mostRecentCellOutlet = null; }\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkHeaderRow, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkFooterRow, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkRow, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkNoDataRow, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n this._positionListener?.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n this._positionListener?.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to find an nonexistent column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkRecycleRows, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: DataRowOutlet, selector: \"[rowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n \n \n \n \n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_ngZone` parameter to become required.\n * @breaking-change 14.0.0\n */\n _ngZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._ngZone = _ngZone;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overridden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add position: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n [\n this._rowOutlet.viewContainer,\n this._headerRowOutlet.viewContainer,\n this._footerRowOutlet.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach(def => {\n def.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === 1 /* _ViewRepeaterOperation.INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n // Allow the new row data to render before measuring it.\n // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.\n if (this._ngZone && NgZone.isInAngularZone()) {\n this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n this.updateStickyColumnStyles();\n });\n }\n else {\n this.updateStickyColumnStyles();\n }\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n this._changeDetectorRef.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTable, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, outputs: { contentChanged: \"contentChanged\" }, host: { attributes: { \"ngSkipHydration\": \"\" }, properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], viewQueries: [{ propertyName: \"_rowOutlet\", first: true, predicate: DataRowOutlet, descendants: true, static: true }, { propertyName: \"_headerRowOutlet\", first: true, predicate: HeaderRowOutlet, descendants: true, static: true }, { propertyName: \"_footerRowOutlet\", first: true, predicate: FooterRowOutlet, descendants: true, static: true }, { propertyName: \"_noDataRowOutlet\", first: true, predicate: NoDataRowOutlet, descendants: true, static: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"], dependencies: [{ kind: \"directive\", type: DataRowOutlet, selector: \"[rowOutlet]\" }, { kind: \"directive\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { kind: \"directive\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }, { kind: \"directive\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n 'ngSkipHydration': '',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"] }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], contentChanged: [{\n type: Output\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTextColumn, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellDef, selector: \"[cdkCellDef]\" }, { kind: \"directive\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\" }, { kind: \"directive\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: [\"sticky\", \"cdkColumnDef\", \"stickyEnd\"] }, { kind: \"directive\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\" }, { kind: \"directive\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () { return [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }]; }, propDecorators: { name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], justify: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\n }] } });\n\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTableModule, declarations: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet], imports: [ScrollingModule], exports: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTableModule, imports: [ScrollingModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","import { SelectionModel, isDataSource } from '@angular/cdk/collections';\nimport { isObservable, Subject, BehaviorSubject, of } from 'rxjs';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/bidi';\n\n/** Base tree control. It has basic toggle/expand/collapse operations on a single data node. */\nclass BaseTreeControl {\n constructor() {\n /** A selection model with multi-selection to track expansion status. */\n this.expansionModel = new SelectionModel(true);\n }\n /** Toggles one single data node's expanded/collapsed state. */\n toggle(dataNode) {\n this.expansionModel.toggle(this._trackByValue(dataNode));\n }\n /** Expands one single data node. */\n expand(dataNode) {\n this.expansionModel.select(this._trackByValue(dataNode));\n }\n /** Collapses one single data node. */\n collapse(dataNode) {\n this.expansionModel.deselect(this._trackByValue(dataNode));\n }\n /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */\n isExpanded(dataNode) {\n return this.expansionModel.isSelected(this._trackByValue(dataNode));\n }\n /** Toggles a subtree rooted at `node` recursively. */\n toggleDescendants(dataNode) {\n this.expansionModel.isSelected(this._trackByValue(dataNode))\n ? this.collapseDescendants(dataNode)\n : this.expandDescendants(dataNode);\n }\n /** Collapse all dataNodes in the tree. */\n collapseAll() {\n this.expansionModel.clear();\n }\n /** Expands a subtree rooted at given data node recursively. */\n expandDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.select(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n /** Collapses a subtree rooted at given data node recursively. */\n collapseDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.deselect(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n _trackByValue(value) {\n return this.trackBy ? this.trackBy(value) : value;\n }\n}\n\n/** Flat tree control. Able to expand/collapse a subtree recursively for flattened tree. */\nclass FlatTreeControl extends BaseTreeControl {\n /** Construct with flat tree data node functions getLevel and isExpandable. */\n constructor(getLevel, isExpandable, options) {\n super();\n this.getLevel = getLevel;\n this.isExpandable = isExpandable;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n }\n /**\n * Gets a list of the data node's subtree of descendent data nodes.\n *\n * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n * with correct levels.\n */\n getDescendants(dataNode) {\n const startIndex = this.dataNodes.indexOf(dataNode);\n const results = [];\n // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.\n // The level of descendants of a tree node must be greater than the level of the given\n // tree node.\n // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.\n // If we reach a node whose level is greater than the level of the tree node, we hit a\n // sibling of an ancestor.\n for (let i = startIndex + 1; i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]); i++) {\n results.push(this.dataNodes[i]);\n }\n return results;\n }\n /**\n * Expands all data nodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.select(...this.dataNodes.map(node => this._trackByValue(node)));\n }\n}\n\n/** Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type. */\nclass NestedTreeControl extends BaseTreeControl {\n /** Construct with nested tree function getChildren. */\n constructor(getChildren, options) {\n super();\n this.getChildren = getChildren;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n }\n /**\n * Expands all dataNodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.clear();\n const allNodes = this.dataNodes.reduce((accumulator, dataNode) => [...accumulator, ...this.getDescendants(dataNode), dataNode], []);\n this.expansionModel.select(...allNodes.map(node => this._trackByValue(node)));\n }\n /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */\n getDescendants(dataNode) {\n const descendants = [];\n this._getDescendants(descendants, dataNode);\n // Remove the node itself\n return descendants.splice(1);\n }\n /** A helper function to get descendants recursively. */\n _getDescendants(descendants, dataNode) {\n descendants.push(dataNode);\n const childrenNodes = this.getChildren(dataNode);\n if (Array.isArray(childrenNodes)) {\n childrenNodes.forEach((child) => this._getDescendants(descendants, child));\n }\n else if (isObservable(childrenNodes)) {\n // TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that\n // returns a `boolean` specifically in the context of `filter`, so we manually clarify that.\n childrenNodes.pipe(take(1), filter(Boolean)).subscribe(children => {\n for (const child of children) {\n this._getDescendants(descendants, child);\n }\n });\n }\n }\n}\n\n/**\n * Injection token used to provide a `CdkTreeNode` to its outlet.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst CDK_TREE_NODE_OUTLET_NODE = new InjectionToken('CDK_TREE_NODE_OUTLET_NODE');\n/**\n * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nclass CdkTreeNodeOutlet {\n constructor(viewContainer, _node) {\n this.viewContainer = viewContainer;\n this._node = _node;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTreeNodeOutlet, selector: \"[cdkTreeNodeOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeOutlet]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TREE_NODE_OUTLET_NODE]\n }, {\n type: Optional\n }] }]; } });\n\n/** Context provided to the tree node component. */\nclass CdkTreeNodeOutletContext {\n constructor(data) {\n this.$implicit = data;\n }\n}\n/**\n * Data node definition for the CdkTree.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\nclass CdkTreeNodeDef {\n /** @docs-private */\n constructor(template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTreeNodeDef, selector: \"[cdkTreeNodeDef]\", inputs: { when: [\"cdkTreeNodeDefWhen\", \"when\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeDef]',\n inputs: ['when: cdkTreeNodeDefWhen'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Returns an error to be thrown when there is no usable data.\n * @docs-private\n */\nfunction getTreeNoValidDataSourceError() {\n return Error(`A valid data source must be provided.`);\n}\n/**\n * Returns an error to be thrown when there are multiple nodes that are missing a when function.\n * @docs-private\n */\nfunction getTreeMultipleDefaultNodeDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching node defs for a particular set of data.\n * @docs-private\n */\nfunction getTreeMissingMatchingNodeDefError() {\n return Error(`Could not find a matching node definition for the provided node data.`);\n}\n/**\n * Returns an error to be thrown when there are tree control.\n * @docs-private\n */\nfunction getTreeControlMissingError() {\n return Error(`Could not find a tree control for the tree.`);\n}\n/**\n * Returns an error to be thrown when tree control did not implement functions for flat/nested node.\n * @docs-private\n */\nfunction getTreeControlFunctionsMissingError() {\n return Error(`Could not find functions for nested/flat tree in tree control.`);\n}\n\n/**\n * CDK tree component that connects with a data source to retrieve data of type `T` and renders\n * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.\n */\nclass CdkTree {\n /**\n * Provides a stream containing the latest data array to render. Influenced by the tree's\n * stream of view window (what dataNodes are currently on screen).\n * Data source can be an observable of data array, or a data array to render.\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n constructor(_differs, _changeDetectorRef) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /** Level of nodes */\n this._levels = new Map();\n // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.\n // Remove the MAX_VALUE in viewChange\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n }\n ngOnInit() {\n this._dataDiffer = this._differs.find([]).create(this.trackBy);\n if (!this.treeControl && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlMissingError();\n }\n }\n ngOnDestroy() {\n this._nodeOutlet.viewContainer.clear();\n this.viewChange.complete();\n this._onDestroy.next();\n this._onDestroy.complete();\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n }\n ngAfterContentChecked() {\n const defaultNodeDefs = this._nodeDefs.filter(def => !def.when);\n if (defaultNodeDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMultipleDefaultNodeDefsError();\n }\n this._defaultNodeDef = defaultNodeDefs[0];\n if (this.dataSource && this._nodeDefs && !this._dataSubscription) {\n this._observeRenderChanges();\n }\n }\n // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL\n // and nested trees.\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the node outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n // Remove the all dataNodes if there is now no data source\n if (!dataSource) {\n this._nodeOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n if (this._nodeDefs) {\n this._observeRenderChanges();\n }\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n let dataStream;\n if (isDataSource(this._dataSource)) {\n dataStream = this._dataSource.connect(this);\n }\n else if (isObservable(this._dataSource)) {\n dataStream = this._dataSource;\n }\n else if (Array.isArray(this._dataSource)) {\n dataStream = of(this._dataSource);\n }\n if (dataStream) {\n this._dataSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => this.renderNodeChanges(data));\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTreeNoValidDataSourceError();\n }\n }\n /** Check for changes made in the data and render each change (node added/removed/moved). */\n renderNodeChanges(data, dataDiffer = this._dataDiffer, viewContainer = this._nodeOutlet.viewContainer, parentData) {\n const changes = dataDiffer.diff(data);\n if (!changes) {\n return;\n }\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n this.insertNode(data[currentIndex], currentIndex, viewContainer, parentData);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex);\n this._levels.delete(item.item);\n }\n else {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n }\n });\n this._changeDetectorRef.detectChanges();\n }\n /**\n * Finds the matching node definition that should be used for this node data. If there is only\n * one node definition, it is returned. Otherwise, find the node definition that has a when\n * predicate that returns true with the data. If none return true, return the default node\n * definition.\n */\n _getNodeDef(data, i) {\n if (this._nodeDefs.length === 1) {\n return this._nodeDefs.first;\n }\n const nodeDef = this._nodeDefs.find(def => def.when && def.when(i, data)) || this._defaultNodeDef;\n if (!nodeDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMissingMatchingNodeDefError();\n }\n return nodeDef;\n }\n /**\n * Create the embedded view for the data node template and place it in the correct index location\n * within the data node view container.\n */\n insertNode(nodeData, index, viewContainer, parentData) {\n const node = this._getNodeDef(nodeData, index);\n // Node context that will be provided to created embedded view\n const context = new CdkTreeNodeOutletContext(nodeData);\n // If the tree is flat tree, then use the `getLevel` function in flat tree control\n // Otherwise, use the level of parent node.\n if (this.treeControl.getLevel) {\n context.level = this.treeControl.getLevel(nodeData);\n }\n else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {\n context.level = this._levels.get(parentData) + 1;\n }\n else {\n context.level = 0;\n }\n this._levels.set(nodeData, context.level);\n // Use default tree nodeOutlet, or nested node's nodeOutlet\n const container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;\n container.createEmbeddedView(node.template, context, index);\n // Set the data to just created `CdkTreeNode`.\n // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable\n // `mostRecentTreeNode`. We get it from static variable and pass the node data to it.\n if (CdkTreeNode.mostRecentTreeNode) {\n CdkTreeNode.mostRecentTreeNode.data = nodeData;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTree, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTree, selector: \"cdk-tree\", inputs: { dataSource: \"dataSource\", treeControl: \"treeControl\", trackBy: \"trackBy\" }, host: { attributes: { \"role\": \"tree\" }, classAttribute: \"cdk-tree\" }, queries: [{ propertyName: \"_nodeDefs\", predicate: CdkTreeNodeDef, descendants: true }], viewQueries: [{ propertyName: \"_nodeOutlet\", first: true, predicate: CdkTreeNodeOutlet, descendants: true, static: true }], exportAs: [\"cdkTree\"], ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: \"directive\", type: CdkTreeNodeOutlet, selector: \"[cdkTreeNodeOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTree, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-tree',\n exportAs: 'cdkTree',\n template: ``,\n host: {\n 'class': 'cdk-tree',\n 'role': 'tree',\n },\n encapsulation: ViewEncapsulation.None,\n // The \"OnPush\" status for the `CdkTree` component is effectively a noop, so we are removing it.\n // The view for `CdkTree` consists entirely of templates declared in other views. As they are\n // declared elsewhere, they are checked when their declaration points are checked.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dataSource: [{\n type: Input\n }], treeControl: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], _nodeOutlet: [{\n type: ViewChild,\n args: [CdkTreeNodeOutlet, { static: true }]\n }], _nodeDefs: [{\n type: ContentChildren,\n args: [CdkTreeNodeDef, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n/**\n * Tree node for CdkTree. It contains the data in the tree node.\n */\nclass CdkTreeNode {\n /**\n * The role of the tree node.\n * @deprecated The correct role is 'treeitem', 'group' should not be used. This input will be\n * removed in a future version.\n * @breaking-change 12.0.0 Remove this input\n */\n get role() {\n return 'treeitem';\n }\n set role(_role) {\n // TODO: move to host after View Engine deprecation\n this._elementRef.nativeElement.setAttribute('role', _role);\n }\n /**\n * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it\n * in `CdkTree` and set the data to it.\n */\n static { this.mostRecentTreeNode = null; }\n /** The tree node's data. */\n get data() {\n return this._data;\n }\n set data(value) {\n if (value !== this._data) {\n this._data = value;\n this._setRoleFromData();\n this._dataChanges.next();\n }\n }\n get isExpanded() {\n return this._tree.treeControl.isExpanded(this._data);\n }\n get level() {\n // If the treeControl has a getLevel method, use it to get the level. Otherwise read the\n // aria-level off the parent node and use it as the level for this node (note aria-level is\n // 1-indexed, while this property is 0-indexed, so we don't need to increment).\n return this._tree.treeControl.getLevel\n ? this._tree.treeControl.getLevel(this._data)\n : this._parentNodeAriaLevel;\n }\n constructor(_elementRef, _tree) {\n this._elementRef = _elementRef;\n this._tree = _tree;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** Emits when the node's data has changed. */\n this._dataChanges = new Subject();\n CdkTreeNode.mostRecentTreeNode = this;\n this.role = 'treeitem';\n }\n ngOnInit() {\n this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);\n this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`);\n }\n ngOnDestroy() {\n // If this is the last tree node being destroyed,\n // clear out the reference to avoid leaking memory.\n if (CdkTreeNode.mostRecentTreeNode === this) {\n CdkTreeNode.mostRecentTreeNode = null;\n }\n this._dataChanges.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Focuses the menu item. Implements for FocusableOption. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n // TODO: role should eventually just be set in the component host\n _setRoleFromData() {\n if (!this._tree.treeControl.isExpandable &&\n !this._tree.treeControl.getChildren &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlFunctionsMissingError();\n }\n this.role = 'treeitem';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTreeNode, selector: \"cdk-tree-node\", inputs: { role: \"role\" }, host: { properties: { \"attr.aria-expanded\": \"isExpanded\" }, classAttribute: \"cdk-tree-node\" }, exportAs: [\"cdkTreeNode\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-tree-node',\n exportAs: 'cdkTreeNode',\n host: {\n 'class': 'cdk-tree-node',\n '[attr.aria-expanded]': 'isExpanded',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }]; }, propDecorators: { role: [{\n type: Input\n }] } });\nfunction getParentNodeAriaLevel(nodeElement) {\n let parent = nodeElement.parentElement;\n while (parent && !isNodeElement(parent)) {\n parent = parent.parentElement;\n }\n if (!parent) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error('Incorrect tree structure containing detached node.');\n }\n else {\n return -1;\n }\n }\n else if (parent.classList.contains('cdk-nested-tree-node')) {\n return coerceNumberProperty(parent.getAttribute('aria-level'));\n }\n else {\n // The ancestor element is the cdk-tree itself\n return 0;\n }\n}\nfunction isNodeElement(element) {\n const classList = element.classList;\n return !!(classList?.contains('cdk-nested-tree-node') || classList?.contains('cdk-tree'));\n}\n\n/**\n * Nested node is a child of ``. It works with nested tree.\n * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will\n * be added in the `cdkTreeNodeOutlet` in tree node template.\n * The children of node will be automatically added to `cdkTreeNodeOutlet`.\n */\nclass CdkNestedTreeNode extends CdkTreeNode {\n constructor(elementRef, tree, _differs) {\n super(elementRef, tree);\n this._differs = _differs;\n }\n ngAfterContentInit() {\n this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);\n if (!this._tree.treeControl.getChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlFunctionsMissingError();\n }\n const childrenNodes = this._tree.treeControl.getChildren(this.data);\n if (Array.isArray(childrenNodes)) {\n this.updateChildrenNodes(childrenNodes);\n }\n else if (isObservable(childrenNodes)) {\n childrenNodes\n .pipe(takeUntil(this._destroyed))\n .subscribe(result => this.updateChildrenNodes(result));\n }\n this.nodeOutlet.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateChildrenNodes());\n }\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy() {\n this._clear();\n super.ngOnDestroy();\n }\n /** Add children dataNodes to the NodeOutlet */\n updateChildrenNodes(children) {\n const outlet = this._getNodeOutlet();\n if (children) {\n this._children = children;\n }\n if (outlet && this._children) {\n const viewContainer = outlet.viewContainer;\n this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);\n }\n else {\n // Reset the data differ if there's no children nodes displayed\n this._dataDiffer.diff([]);\n }\n }\n /** Clear the children dataNodes. */\n _clear() {\n const outlet = this._getNodeOutlet();\n if (outlet) {\n outlet.viewContainer.clear();\n this._dataDiffer.diff([]);\n }\n }\n /** Gets the outlet for the current node. */\n _getNodeOutlet() {\n const outlets = this.nodeOutlet;\n // Note that since we use `descendants: true` on the query, we have to ensure\n // that we don't pick up the outlet of a child node by accident.\n return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkNestedTreeNode, selector: \"cdk-nested-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\" }, host: { classAttribute: \"cdk-nested-tree-node\" }, providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ], queries: [{ propertyName: \"nodeOutlet\", predicate: CdkTreeNodeOutlet, descendants: true }], exportAs: [\"cdkNestedTreeNode\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkNestedTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-nested-tree-node',\n exportAs: 'cdkNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ],\n host: {\n 'class': 'cdk-nested-tree-node',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }, { type: i0.IterableDiffers }]; }, propDecorators: { nodeOutlet: [{\n type: ContentChildren,\n args: [CdkTreeNodeOutlet, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * Indent for the children tree dataNodes.\n * This directive will add left-padding to the node to show hierarchy.\n */\nclass CdkTreeNodePadding {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n get level() {\n return this._level;\n }\n set level(value) {\n this._setLevelInput(value);\n }\n /**\n * The indent for each level. Can be a number or a CSS string.\n * Default number 40px from material design menu sub-menu spec.\n */\n get indent() {\n return this._indent;\n }\n set indent(indent) {\n this._setIndentInput(indent);\n }\n constructor(_treeNode, _tree, _element, _dir) {\n this._treeNode = _treeNode;\n this._tree = _tree;\n this._element = _element;\n this._dir = _dir;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** CSS units used for the indentation value. */\n this.indentUnits = 'px';\n this._indent = 40;\n this._setPadding();\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._setPadding(true));\n }\n // In Ivy the indentation binding might be set before the tree node's data has been added,\n // which means that we'll miss the first render. We have to subscribe to changes in the\n // data to ensure that everything is up to date.\n _treeNode._dataChanges.subscribe(() => this._setPadding());\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** The padding indent value for the tree node. Returns a string with px numbers if not null. */\n _paddingIndent() {\n const nodeLevel = this._treeNode.data && this._tree.treeControl.getLevel\n ? this._tree.treeControl.getLevel(this._treeNode.data)\n : null;\n const level = this._level == null ? nodeLevel : this._level;\n return typeof level === 'number' ? `${level * this._indent}${this.indentUnits}` : null;\n }\n _setPadding(forceChange = false) {\n const padding = this._paddingIndent();\n if (padding !== this._currentPadding || forceChange) {\n const element = this._element.nativeElement;\n const paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';\n const resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';\n element.style[paddingProp] = padding || '';\n element.style[resetProp] = '';\n this._currentPadding = padding;\n }\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setLevelInput(value) {\n // Set to null as the fallback value so that _setPadding can fall back to the node level if the\n // consumer set the directive as `cdkTreeNodePadding=\"\"`. We still want to take this value if\n // they set 0 explicitly.\n this._level = coerceNumberProperty(value, null);\n this._setPadding();\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setIndentInput(indent) {\n let value = indent;\n let units = 'px';\n if (typeof indent === 'string') {\n const parts = indent.split(cssUnitPattern);\n value = parts[0];\n units = parts[1] || units;\n }\n this.indentUnits = units;\n this._indent = coerceNumberProperty(value);\n this._setPadding();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodePadding, deps: [{ token: CdkTreeNode }, { token: CdkTree }, { token: i0.ElementRef }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTreeNodePadding, selector: \"[cdkTreeNodePadding]\", inputs: { level: [\"cdkTreeNodePadding\", \"level\"], indent: [\"cdkTreeNodePaddingIndent\", \"indent\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodePadding, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodePadding]',\n }]\n }], ctorParameters: function () { return [{ type: CdkTreeNode }, { type: CdkTree }, { type: i0.ElementRef }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { level: [{\n type: Input,\n args: ['cdkTreeNodePadding']\n }], indent: [{\n type: Input,\n args: ['cdkTreeNodePaddingIndent']\n }] } });\n\n/**\n * Node toggle to expand/collapse the node.\n */\nclass CdkTreeNodeToggle {\n /** Whether expand/collapse the node recursively. */\n get recursive() {\n return this._recursive;\n }\n set recursive(value) {\n this._recursive = coerceBooleanProperty(value);\n }\n constructor(_tree, _treeNode) {\n this._tree = _tree;\n this._treeNode = _treeNode;\n this._recursive = false;\n }\n _toggle(event) {\n this.recursive\n ? this._tree.treeControl.toggleDescendants(this._treeNode.data)\n : this._tree.treeControl.toggle(this._treeNode.data);\n event.stopPropagation();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeToggle, deps: [{ token: CdkTree }, { token: CdkTreeNode }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: CdkTreeNodeToggle, selector: \"[cdkTreeNodeToggle]\", inputs: { recursive: [\"cdkTreeNodeToggleRecursive\", \"recursive\"] }, host: { listeners: { \"click\": \"_toggle($event)\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeNodeToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeToggle]',\n host: {\n '(click)': '_toggle($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkTree }, { type: CdkTreeNode }]; }, propDecorators: { recursive: [{\n type: Input,\n args: ['cdkTreeNodeToggleRecursive']\n }] } });\n\nconst EXPORTED_DECLARATIONS = [\n CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet,\n];\nclass CdkTreeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeModule, declarations: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet], exports: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: CdkTreeModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseTreeControl, CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeModule, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodeOutlet, CdkTreeNodeOutletContext, CdkTreeNodePadding, CdkTreeNodeToggle, FlatTreeControl, NestedTreeControl, getTreeControlFunctionsMissingError, getTreeControlMissingError, getTreeMissingMatchingNodeDefError, getTreeMultipleDefaultNodeDefsError, getTreeNoValidDataSourceError };\n","import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, Attribute, Input, inject, NgZone, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Optional, Inject, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SharedResizeObserver } from '@angular/cdk/observers/private';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** The floating label for a `mat-form-field`. */\nclass MatLabel {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatLabel, selector: \"mat-label\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatLabel, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-label',\n }]\n }] });\n\nlet nextUniqueId$2 = 0;\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_ERROR = new InjectionToken('MatError');\n/** Single error message to be shown underneath the form-field. */\nclass MatError {\n constructor(ariaLive, elementRef) {\n this.id = `mat-mdc-error-${nextUniqueId$2++}`;\n // If no aria-live value is set add 'polite' as a default. This is preferred over setting\n // role='alert' so that screen readers do not interrupt the current task to read this aloud.\n if (!ariaLive) {\n elementRef.nativeElement.setAttribute('aria-live', 'polite');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatError, deps: [{ token: 'aria-live', attribute: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatError, selector: \"mat-error, [matError]\", inputs: { id: \"id\" }, host: { attributes: { \"aria-atomic\": \"true\" }, properties: { \"id\": \"id\" }, classAttribute: \"mat-mdc-form-field-error mat-mdc-form-field-bottom-align\" }, providers: [{ provide: MAT_ERROR, useExisting: MatError }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatError, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-error, [matError]',\n host: {\n 'class': 'mat-mdc-form-field-error mat-mdc-form-field-bottom-align',\n 'aria-atomic': 'true',\n '[id]': 'id',\n },\n providers: [{ provide: MAT_ERROR, useExisting: MatError }],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: i0.ElementRef }]; }, propDecorators: { id: [{\n type: Input\n }] } });\n\nlet nextUniqueId$1 = 0;\n/** Hint text to be shown underneath the form field control. */\nclass MatHint {\n constructor() {\n /** Whether to align the hint label at the start or end of the line. */\n this.align = 'start';\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n this.id = `mat-mdc-hint-${nextUniqueId$1++}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatHint, selector: \"mat-hint\", inputs: { align: \"align\", id: \"id\" }, host: { properties: { \"class.mat-mdc-form-field-hint-end\": \"align === \\\"end\\\"\", \"id\": \"id\", \"attr.align\": \"null\" }, classAttribute: \"mat-mdc-form-field-hint mat-mdc-form-field-bottom-align\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatHint, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-hint',\n host: {\n 'class': 'mat-mdc-form-field-hint mat-mdc-form-field-bottom-align',\n '[class.mat-mdc-form-field-hint-end]': 'align === \"end\"',\n '[id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n },\n }]\n }], propDecorators: { align: [{\n type: Input\n }], id: [{\n type: Input\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_PREFIX = new InjectionToken('MatPrefix');\n/** Prefix to be placed in front of the form field. */\nclass MatPrefix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatPrefix, selector: \"[matPrefix], [matIconPrefix], [matTextPrefix]\", inputs: { _isTextSelector: [\"matTextPrefix\", \"_isTextSelector\"] }, providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatPrefix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matPrefix], [matIconPrefix], [matTextPrefix]',\n providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }],\n }]\n }], propDecorators: { _isTextSelector: [{\n type: Input,\n args: ['matTextPrefix']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SUFFIX = new InjectionToken('MatSuffix');\n/** Suffix to be placed at the end of the form field. */\nclass MatSuffix {\n constructor() {\n this._isText = false;\n }\n set _isTextSelector(value) {\n this._isText = true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatSuffix, selector: \"[matSuffix], [matIconSuffix], [matTextSuffix]\", inputs: { _isTextSelector: [\"matTextSuffix\", \"_isTextSelector\"] }, providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSuffix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matSuffix], [matIconSuffix], [matTextSuffix]',\n providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }],\n }]\n }], propDecorators: { _isTextSelector: [{\n type: Input,\n args: ['matTextSuffix']\n }] } });\n\n/** An injion token for the parent form-field. */\nconst FLOATING_LABEL_PARENT = new InjectionToken('FloatingLabelParent');\n/**\n * Internal directive that maintains a MDC floating label. This directive does not\n * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of\n * including it just to measure the label width and toggle some classes.\n *\n * The use of a directive allows us to conditionally render a floating label in the\n * template without having to manually manage instantiation and destruction of the\n * floating label component based on.\n *\n * The component is responsible for setting up the floating label styles, measuring label\n * width for the outline notch, and providing inputs that can be used to toggle the\n * label's floating or required state.\n */\nclass MatFormFieldFloatingLabel {\n /** Whether the label is floating. */\n get floating() {\n return this._floating;\n }\n set floating(value) {\n this._floating = value;\n if (this.monitorResize) {\n this._handleResize();\n }\n }\n /** Whether to monitor for resize events on the floating label. */\n get monitorResize() {\n return this._monitorResize;\n }\n set monitorResize(value) {\n this._monitorResize = value;\n if (this._monitorResize) {\n this._subscribeToResize();\n }\n else {\n this._resizeSubscription.unsubscribe();\n }\n }\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this._floating = false;\n this._monitorResize = false;\n /** The shared ResizeObserver. */\n this._resizeObserver = inject(SharedResizeObserver);\n /** The Angular zone. */\n this._ngZone = inject(NgZone);\n /** The parent form-field. */\n this._parent = inject(FLOATING_LABEL_PARENT);\n /** The current resize event subscription. */\n this._resizeSubscription = new Subscription();\n }\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n /** Gets the width of the label. Used for the outline notch. */\n getWidth() {\n return estimateScrollWidth(this._elementRef.nativeElement);\n }\n /** Gets the HTML element for the floating label. */\n get element() {\n return this._elementRef.nativeElement;\n }\n /** Handles resize events from the ResizeObserver. */\n _handleResize() {\n // In the case where the label grows in size, the following sequence of events occurs:\n // 1. The label grows by 1px triggering the ResizeObserver\n // 2. The notch is expanded to accommodate the entire label\n // 3. The label expands to its full width, triggering the ResizeObserver again\n //\n // This is expected, but If we allow this to all happen within the same macro task it causes an\n // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until\n // the next macro task.\n setTimeout(() => this._parent._handleLabelResized());\n }\n /** Subscribes to resize events. */\n _subscribeToResize() {\n this._resizeSubscription.unsubscribe();\n this._ngZone.runOutsideAngular(() => {\n this._resizeSubscription = this._resizeObserver\n .observe(this._elementRef.nativeElement, { box: 'border-box' })\n .subscribe(() => this._handleResize());\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldFloatingLabel, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldFloatingLabel, selector: \"label[matFormFieldFloatingLabel]\", inputs: { floating: \"floating\", monitorResize: \"monitorResize\" }, host: { properties: { \"class.mdc-floating-label--float-above\": \"floating\" }, classAttribute: \"mdc-floating-label mat-mdc-floating-label\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldFloatingLabel, decorators: [{\n type: Directive,\n args: [{\n selector: 'label[matFormFieldFloatingLabel]',\n host: {\n 'class': 'mdc-floating-label mat-mdc-floating-label',\n '[class.mdc-floating-label--float-above]': 'floating',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { floating: [{\n type: Input\n }], monitorResize: [{\n type: Input\n }] } });\n/**\n * Estimates the scroll width of an element.\n * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts\n */\nfunction estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n const htmlEl = element;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n const clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n const scrollWidth = clone.scrollWidth;\n clone.remove();\n return scrollWidth;\n}\n\n/** Class added when the line ripple is active. */\nconst ACTIVATE_CLASS = 'mdc-line-ripple--active';\n/** Class added when the line ripple is being deactivated. */\nconst DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';\n/**\n * Internal directive that creates an instance of the MDC line-ripple component. Using a\n * directive allows us to conditionally render a line-ripple in the template without having\n * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.\n *\n * The directive sets up the styles for the line-ripple and provides an API for activating\n * and deactivating the line-ripple.\n */\nclass MatFormFieldLineRipple {\n constructor(_elementRef, ngZone) {\n this._elementRef = _elementRef;\n this._handleTransitionEnd = (event) => {\n const classList = this._elementRef.nativeElement.classList;\n const isDeactivating = classList.contains(DEACTIVATING_CLASS);\n if (event.propertyName === 'opacity' && isDeactivating) {\n classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);\n }\n };\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('transitionend', this._handleTransitionEnd);\n });\n }\n activate() {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(DEACTIVATING_CLASS);\n classList.add(ACTIVATE_CLASS);\n }\n deactivate() {\n this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);\n }\n ngOnDestroy() {\n this._elementRef.nativeElement.removeEventListener('transitionend', this._handleTransitionEnd);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldLineRipple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldLineRipple, selector: \"div[matFormFieldLineRipple]\", host: { classAttribute: \"mdc-line-ripple\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldLineRipple, decorators: [{\n type: Directive,\n args: [{\n selector: 'div[matFormFieldLineRipple]',\n host: {\n 'class': 'mdc-line-ripple',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\n/**\n * Internal component that creates an instance of the MDC notched-outline component.\n *\n * The component sets up the HTML structure and styles for the notched-outline. It provides\n * inputs to toggle the notch state and width.\n */\nclass MatFormFieldNotchedOutline {\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Whether the notch should be opened. */\n this.open = false;\n }\n ngAfterViewInit() {\n const label = this._elementRef.nativeElement.querySelector('.mdc-floating-label');\n if (label) {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--upgraded');\n if (typeof requestAnimationFrame === 'function') {\n label.style.transitionDuration = '0s';\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => (label.style.transitionDuration = ''));\n });\n }\n }\n else {\n this._elementRef.nativeElement.classList.add('mdc-notched-outline--no-label');\n }\n }\n _setNotchWidth(labelWidth) {\n if (!this.open || !labelWidth) {\n this._notch.nativeElement.style.width = '';\n }\n else {\n const NOTCH_ELEMENT_PADDING = 8;\n const NOTCH_ELEMENT_BORDER = 1;\n this._notch.nativeElement.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER}px)`;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldNotchedOutline, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldNotchedOutline, selector: \"div[matFormFieldNotchedOutline]\", inputs: { open: [\"matFormFieldNotchedOutlineOpen\", \"open\"] }, host: { properties: { \"class.mdc-notched-outline--notched\": \"open\" }, classAttribute: \"mdc-notched-outline\" }, viewQueries: [{ propertyName: \"_notch\", first: true, predicate: [\"notch\"], descendants: true }], ngImport: i0, template: \"
\\n
\\n \\n
\\n
\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldNotchedOutline, decorators: [{\n type: Component,\n args: [{ selector: 'div[matFormFieldNotchedOutline]', host: {\n 'class': 'mdc-notched-outline',\n // Besides updating the notch state through the MDC component, we toggle this class through\n // a host binding in order to ensure that the notched-outline renders correctly on the server.\n '[class.mdc-notched-outline--notched]': 'open',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\n
\\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { open: [{\n type: Input,\n args: ['matFormFieldNotchedOutlineOpen']\n }], _notch: [{\n type: ViewChild,\n args: ['notch']\n }] } });\n\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nconst matFormFieldAnimations = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-5px)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n};\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nclass MatFormFieldControl {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormFieldControl, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldControl, decorators: [{\n type: Directive\n }] });\n\n/** @docs-private */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/** @docs-private */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n/** @docs-private */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nconst MAT_FORM_FIELD = new InjectionToken('MatFormField');\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nconst MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');\nlet nextUniqueId = 0;\n/** Default appearance used by the form field. */\nconst DEFAULT_APPEARANCE = 'fill';\n/**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto`.\n */\nconst DEFAULT_FLOAT_LABEL = 'auto';\n/** Default way that the subscript element height is set. */\nconst DEFAULT_SUBSCRIPT_SIZING = 'fixed';\n/**\n * Default transform for docked floating labels in a MDC text-field. This value has been\n * extracted from the MDC text-field styles because we programmatically modify the docked\n * label transform, but do not want to accidentally discard the default label transform.\n */\nconst FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;\n/** Container for form controls that applies Material Design styling and behavior. */\nclass MatFormField {\n /** Whether the required marker should be hidden. */\n get hideRequiredMarker() {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n /** Whether the label should always float or float as the user types. */\n get floatLabel() {\n return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;\n }\n set floatLabel(value) {\n if (value !== this._floatLabel) {\n this._floatLabel = value;\n // For backwards compatibility. Custom form field controls or directives might set\n // the \"floatLabel\" input and expect the form field view to be updated automatically.\n // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just\n // emit the \"stateChanges\" observable. TODO(devversion): consider removing.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** The form field appearance style. */\n get appearance() {\n return this._appearance;\n }\n set appearance(value) {\n const oldValue = this._appearance;\n const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (newAppearance !== 'fill' && newAppearance !== 'outline') {\n throw new Error(`MatFormField: Invalid appearance \"${newAppearance}\", valid values are \"fill\" or \"outline\".`);\n }\n }\n this._appearance = newAppearance;\n if (this._appearance === 'outline' && this._appearance !== oldValue) {\n // If the appearance has been switched to `outline`, the label offset needs to be updated.\n // The update can happen once the view has been re-checked, but not immediately because\n // the view has not been updated and the notched-outline floating label is not present.\n this._needsOutlineLabelOffsetUpdateOnStable = true;\n }\n }\n /**\n * Whether the form field should reserve space for one line of hint/error text (default)\n * or to have the spacing grow from 0px as needed based on the size of the hint/error content.\n * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.\n */\n get subscriptSizing() {\n return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n set subscriptSizing(value) {\n this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n /** Text for the form field hint. */\n get hintLabel() {\n return this._hintLabel;\n }\n set hintLabel(value) {\n this._hintLabel = value;\n this._processHints();\n }\n /** Gets the current form field control */\n get _control() {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n constructor(_elementRef, _changeDetectorRef, _ngZone, _dir, _platform, _defaults, _animationMode, \n /**\n * @deprecated not needed, to be removed.\n * @breaking-change 17.0.0 remove this param\n */\n _unusedDocument) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._platform = _platform;\n this._defaults = _defaults;\n this._animationMode = _animationMode;\n this._hideRequiredMarker = false;\n /** The color palette for the form field. */\n this.color = 'primary';\n this._appearance = DEFAULT_APPEARANCE;\n this._subscriptSizing = null;\n this._hintLabel = '';\n this._hasIconPrefix = false;\n this._hasTextPrefix = false;\n this._hasIconSuffix = false;\n this._hasTextSuffix = false;\n // Unique id for the internal form field label.\n this._labelId = `mat-mdc-form-field-label-${nextUniqueId++}`;\n // Unique id for the hint label.\n this._hintLabelId = `mat-mdc-hint-${nextUniqueId++}`;\n /** State of the mat-hint and mat-error animations. */\n this._subscriptAnimationState = '';\n this._destroyed = new Subject();\n this._isFocused = null;\n this._needsOutlineLabelOffsetUpdateOnStable = false;\n if (_defaults) {\n if (_defaults.appearance) {\n this.appearance = _defaults.appearance;\n }\n this._hideRequiredMarker = Boolean(_defaults?.hideRequiredMarker);\n if (_defaults.color) {\n this.color = _defaults.color;\n }\n }\n }\n ngAfterViewInit() {\n // Initial focus state sync. This happens rarely, but we want to account for\n // it in case the form field control has \"focused\" set to true on init.\n this._updateFocusState();\n // Enable animations now. This ensures we don't animate on initial render.\n this._subscriptAnimationState = 'enter';\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this._changeDetectorRef.detectChanges();\n }\n ngAfterContentInit() {\n this._assertFormFieldControl();\n this._initializeControl();\n this._initializeSubscript();\n this._initializePrefixAndSuffix();\n this._initializeOutlineLabelOffsetSubscriptions();\n }\n ngAfterContentChecked() {\n this._assertFormFieldControl();\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n getLabelId() {\n return this._hasFloatingLabel() ? this._labelId : null;\n }\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field\n * should be positioned relative to.\n */\n getConnectedOverlayOrigin() {\n return this._textField || this._elementRef;\n }\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel() {\n // This is for backwards compatibility only. Consumers of the form field might use\n // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC\n // form field because setting \"floatLabel\" to \"always\" caused the label to float without\n // animation. This is different in MDC where the label always animates, so this method\n // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing\n // the floating label state without animations. The non-MDC implementation was inconsistent\n // because it always animates if \"floatLabel\" is set away from \"always\".\n // TODO(devversion): consider removing this method when releasing the MDC form field.\n if (this._hasFloatingLabel()) {\n this.floatLabel = 'always';\n }\n }\n /** Initializes the registered form field control. */\n _initializeControl() {\n const control = this._control;\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${control.controlType}`);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.subscribe(() => {\n this._updateFocusState();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n _checkPrefixAndSuffixTypes() {\n this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);\n this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);\n this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);\n }\n /** Initializes the prefix and suffix containers. */\n _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n });\n }\n /**\n * Initializes the subscript by validating hints and synchronizing \"aria-describedby\" ids\n * with the custom form field control. Also subscribes to hint and error changes in order\n * to be able to validate and synchronize ids on change.\n */\n _initializeSubscript() {\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Initial mat-hint validation and subscript describedByIds sync.\n this._validateHints();\n this._syncDescribedByIds();\n }\n /** Throws an error if the form field's control is missing. */\n _assertFormFieldControl() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n _updateFocusState() {\n // Usually the MDC foundation would call \"activateFocus\" and \"deactivateFocus\" whenever\n // certain DOM events are emitted. This is not possible in our implementation of the\n // form field because we support abstract form field controls which are not necessarily\n // of type input, nor do we have a reference to a native form field control element. Instead\n // we handle the focus by checking if the abstract form field control focused state changes.\n if (this._control.focused && !this._isFocused) {\n this._isFocused = true;\n this._lineRipple?.activate();\n }\n else if (!this._control.focused && (this._isFocused || this._isFocused === null)) {\n this._isFocused = false;\n this._lineRipple?.deactivate();\n }\n this._textField?.nativeElement.classList.toggle('mdc-text-field--focused', this._control.focused);\n }\n /**\n * The floating label in the docked state needs to account for prefixes. The horizontal offset\n * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the\n * form field is added to the DOM. This method sets up all subscriptions which are needed to\n * trigger the label offset update. In general, we want to avoid performing measurements often,\n * so we rely on the `NgZone` as indicator when the offset should be recalculated, instead of\n * checking every change detection cycle.\n */\n _initializeOutlineLabelOffsetSubscriptions() {\n // Whenever the prefix changes, schedule an update of the label offset.\n this._prefixChildren.changes.subscribe(() => (this._needsOutlineLabelOffsetUpdateOnStable = true));\n // Note that we have to run outside of the `NgZone` explicitly, in order to avoid\n // throwing users into an infinite loop if `zone-patch-rxjs` is included.\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._needsOutlineLabelOffsetUpdateOnStable) {\n this._needsOutlineLabelOffsetUpdateOnStable = false;\n this._updateOutlineLabelOffset();\n }\n });\n });\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => (this._needsOutlineLabelOffsetUpdateOnStable = true));\n }\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always';\n }\n _hasOutline() {\n return this.appearance === 'outline';\n }\n /**\n * Whether the label should display in the infix. Labels in the outline appearance are\n * displayed as part of the notched-outline and are horizontally offset to account for\n * form field prefix content. This won't work in server side rendering since we cannot\n * measure the width of the prefix container. To make the docked label appear as if the\n * right offset has been calculated, we forcibly render the label inside the infix. Since\n * the label is part of the infix, the label cannot overflow the prefix content.\n */\n _forceDisplayInfixLabel() {\n return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();\n }\n _hasFloatingLabel() {\n return !!this._labelChildNonStatic || !!this._labelChildStatic;\n }\n _shouldLabelFloat() {\n return this._control.shouldLabelFloat || this._shouldAlwaysFloat();\n }\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop) {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages() {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState\n ? 'error'\n : 'hint';\n }\n /** Handle label resize events. */\n _handleLabelResized() {\n this._refreshOutlineNotchWidth();\n }\n /** Refreshes the width of the outline-notch, if present. */\n _refreshOutlineNotchWidth() {\n if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {\n this._notchedOutline?._setNotchWidth(0);\n }\n else {\n this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());\n }\n }\n /** Does any extra processing that is required when handling the hints. */\n _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n /**\n * Ensure that there is a maximum of one of each \"mat-hint\" alignment specified. The hint\n * label specified set through the input is being considered as \"start\" aligned.\n *\n * This method is a noop if Angular runs in production mode.\n */\n _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint;\n let endHint;\n this._hintChildren.forEach((hint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n }\n else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n _syncDescribedByIds() {\n if (this._control) {\n let ids = [];\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (this._control.userAriaDescribedBy &&\n typeof this._control.userAriaDescribedBy === 'string') {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'start')\n : null;\n const endHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'end')\n : null;\n if (startHint) {\n ids.push(startHint.id);\n }\n else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n }\n else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n this._control.setDescribedByIds(ids);\n }\n }\n /**\n * Updates the horizontal offset of the label in the outline appearance. In the outline\n * appearance, the notched-outline and label are not relative to the infix container because\n * the outline intends to surround prefixes, suffixes and the infix. This means that the\n * floating label by default overlaps prefixes in the docked state. To avoid this, we need to\n * horizontally offset the label by the width of the prefix container. The MDC text-field does\n * not need to do this because they use a fixed width for prefixes. Hence, they can simply\n * incorporate the horizontal offset into their default text-field styles.\n */\n _updateOutlineLabelOffset() {\n if (!this._platform.isBrowser || !this._hasOutline() || !this._floatingLabel) {\n return;\n }\n const floatingLabel = this._floatingLabel.element;\n // If no prefix is displayed, reset the outline label offset from potential\n // previous label offset updates.\n if (!(this._iconPrefixContainer || this._textPrefixContainer)) {\n floatingLabel.style.transform = '';\n return;\n }\n // If the form field is not attached to the DOM yet (e.g. in a tab), we defer\n // the label offset update until the zone stabilizes.\n if (!this._isAttachedToDom()) {\n this._needsOutlineLabelOffsetUpdateOnStable = true;\n return;\n }\n const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;\n const textPrefixContainer = this._textPrefixContainer?.nativeElement;\n const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;\n const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;\n // If the directionality is RTL, the x-axis transform needs to be inverted. This\n // is because `transformX` does not change based on the page directionality.\n const negate = this._dir.value === 'rtl' ? '-1' : '1';\n const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;\n const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;\n const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;\n // Update the translateX of the floating label to account for the prefix container,\n // but allow the CSS to override this setting via a CSS variable when the label is\n // floating.\n floatingLabel.style.transform = `var(\n --mat-mdc-form-field-label-transform,\n ${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset})\n )`;\n }\n /** Checks whether the form field is attached to the DOM. */\n _isAttachedToDom() {\n const element = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement.contains(element);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.Directionality }, { token: i2.Platform }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatFormField, selector: \"mat-form-field\", inputs: { hideRequiredMarker: \"hideRequiredMarker\", color: \"color\", floatLabel: \"floatLabel\", appearance: \"appearance\", subscriptSizing: \"subscriptSizing\", hintLabel: \"hintLabel\" }, host: { properties: { \"class.mat-mdc-form-field-label-always-float\": \"_shouldAlwaysFloat()\", \"class.mat-mdc-form-field-has-icon-prefix\": \"_hasIconPrefix\", \"class.mat-mdc-form-field-has-icon-suffix\": \"_hasIconSuffix\", \"class.mat-form-field-invalid\": \"_control.errorState\", \"class.mat-form-field-disabled\": \"_control.disabled\", \"class.mat-form-field-autofilled\": \"_control.autofilled\", \"class.mat-form-field-no-animations\": \"_animationMode === \\\"NoopAnimations\\\"\", \"class.mat-form-field-appearance-fill\": \"appearance == \\\"fill\\\"\", \"class.mat-form-field-appearance-outline\": \"appearance == \\\"outline\\\"\", \"class.mat-form-field-hide-placeholder\": \"_hasFloatingLabel() && !_shouldLabelFloat()\", \"class.mat-focused\": \"_control.focused\", \"class.mat-primary\": \"color !== \\\"accent\\\" && color !== \\\"warn\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\", \"class.ng-untouched\": \"_shouldForward(\\\"untouched\\\")\", \"class.ng-touched\": \"_shouldForward(\\\"touched\\\")\", \"class.ng-pristine\": \"_shouldForward(\\\"pristine\\\")\", \"class.ng-dirty\": \"_shouldForward(\\\"dirty\\\")\", \"class.ng-valid\": \"_shouldForward(\\\"valid\\\")\", \"class.ng-invalid\": \"_shouldForward(\\\"invalid\\\")\", \"class.ng-pending\": \"_shouldForward(\\\"pending\\\")\" }, classAttribute: \"mat-mdc-form-field\" }, providers: [\n { provide: MAT_FORM_FIELD, useExisting: MatFormField },\n { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },\n ], queries: [{ propertyName: \"_labelChildNonStatic\", first: true, predicate: MatLabel, descendants: true }, { propertyName: \"_labelChildStatic\", first: true, predicate: MatLabel, descendants: true, static: true }, { propertyName: \"_formFieldControl\", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: \"_prefixChildren\", predicate: MAT_PREFIX, descendants: true }, { propertyName: \"_suffixChildren\", predicate: MAT_SUFFIX, descendants: true }, { propertyName: \"_errorChildren\", predicate: MAT_ERROR, descendants: true }, { propertyName: \"_hintChildren\", predicate: MatHint, descendants: true }], viewQueries: [{ propertyName: \"_textField\", first: true, predicate: [\"textField\"], descendants: true }, { propertyName: \"_iconPrefixContainer\", first: true, predicate: [\"iconPrefixContainer\"], descendants: true }, { propertyName: \"_textPrefixContainer\", first: true, predicate: [\"textPrefixContainer\"], descendants: true }, { propertyName: \"_floatingLabel\", first: true, predicate: MatFormFieldFloatingLabel, descendants: true }, { propertyName: \"_notchedOutline\", first: true, predicate: MatFormFieldNotchedOutline, descendants: true }, { propertyName: \"_lineRipple\", first: true, predicate: MatFormFieldLineRipple, descendants: true }], exportAs: [\"matFormField\"], ngImport: i0, template: \"\\n \\n \\n\\n\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n \\n \\n \\n\\n \\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n {{hintLabel}}\\n \\n
\\n \\n
\\n
\\n\", styles: [\".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\\\"\\\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:\\\"*\\\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\\\"\\\"}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px * 2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined{--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\\\"\\\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size) * var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i3.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i3.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"directive\", type: MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: MatFormFieldFloatingLabel, selector: \"label[matFormFieldFloatingLabel]\", inputs: [\"floating\", \"monitorResize\"] }, { kind: \"component\", type: MatFormFieldNotchedOutline, selector: \"div[matFormFieldNotchedOutline]\", inputs: [\"matFormFieldNotchedOutlineOpen\"] }, { kind: \"directive\", type: MatFormFieldLineRipple, selector: \"div[matFormFieldLineRipple]\" }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormField, decorators: [{\n type: Component,\n args: [{ selector: 'mat-form-field', exportAs: 'matFormField', animations: [matFormFieldAnimations.transitionMessages], host: {\n 'class': 'mat-mdc-form-field',\n '[class.mat-mdc-form-field-label-always-float]': '_shouldAlwaysFloat()',\n '[class.mat-mdc-form-field-has-icon-prefix]': '_hasIconPrefix',\n '[class.mat-mdc-form-field-has-icon-suffix]': '_hasIconSuffix',\n // Note that these classes reuse the same names as the non-MDC version, because they can be\n // considered a public API since custom form controls may use them to style themselves.\n // See https://github.com/angular/components/pull/20502#discussion_r486124901.\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-form-field-no-animations]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-hide-placeholder]': '_hasFloatingLabel() && !_shouldLabelFloat()',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-primary]': 'color !== \"accent\" && color !== \"warn\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: MAT_FORM_FIELD, useExisting: MatFormField },\n { provide: FLOATING_LABEL_PARENT, useExisting: MatFormField },\n ], template: \"\\n \\n \\n\\n\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n \\n \\n \\n\\n \\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n {{hintLabel}}\\n \\n
\\n \\n
\\n
\\n\", styles: [\".mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:\\\"\\\";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:\\\"\\\";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:\\\"*\\\"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:\\\"\\\"}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px * 2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined{--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:\\\"\\\";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size) * var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.Directionality }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { _textField: [{\n type: ViewChild,\n args: ['textField']\n }], _iconPrefixContainer: [{\n type: ViewChild,\n args: ['iconPrefixContainer']\n }], _textPrefixContainer: [{\n type: ViewChild,\n args: ['textPrefixContainer']\n }], _floatingLabel: [{\n type: ViewChild,\n args: [MatFormFieldFloatingLabel]\n }], _notchedOutline: [{\n type: ViewChild,\n args: [MatFormFieldNotchedOutline]\n }], _lineRipple: [{\n type: ViewChild,\n args: [MatFormFieldLineRipple]\n }], _labelChildNonStatic: [{\n type: ContentChild,\n args: [MatLabel]\n }], _labelChildStatic: [{\n type: ContentChild,\n args: [MatLabel, { static: true }]\n }], _formFieldControl: [{\n type: ContentChild,\n args: [MatFormFieldControl]\n }], _prefixChildren: [{\n type: ContentChildren,\n args: [MAT_PREFIX, { descendants: true }]\n }], _suffixChildren: [{\n type: ContentChildren,\n args: [MAT_SUFFIX, { descendants: true }]\n }], _errorChildren: [{\n type: ContentChildren,\n args: [MAT_ERROR, { descendants: true }]\n }], _hintChildren: [{\n type: ContentChildren,\n args: [MatHint, { descendants: true }]\n }], hideRequiredMarker: [{\n type: Input\n }], color: [{\n type: Input\n }], floatLabel: [{\n type: Input\n }], appearance: [{\n type: Input\n }], subscriptSizing: [{\n type: Input\n }], hintLabel: [{\n type: Input\n }] } });\n\nclass MatFormFieldModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, declarations: [MatFormField,\n MatLabel,\n MatError,\n MatHint,\n MatPrefix,\n MatSuffix,\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n MatFormFieldLineRipple], imports: [MatCommonModule, CommonModule, ObserversModule], exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, imports: [MatCommonModule, CommonModule, ObserversModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatFormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule, ObserversModule],\n exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, MatCommonModule],\n declarations: [\n MatFormField,\n MatLabel,\n MatError,\n MatHint,\n MatPrefix,\n MatSuffix,\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n MatFormFieldLineRipple,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_ERROR, MAT_FORM_FIELD, MAT_FORM_FIELD_DEFAULT_OPTIONS, MAT_PREFIX, MAT_SUFFIX, MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatLabel, MatPrefix, MatSuffix, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError, matFormFieldAnimations };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, TemplateRef, Directive, Inject, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, forwardRef, Optional, Host, NgModule } from '@angular/core';\nimport { mixinDisableRipple, MAT_OPTION_PARENT_COMPONENT, MAT_OPTGROUP, MatOption, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { ActiveDescendantKeyManager, addAriaReferencedId, removeAriaReferencedId } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport { ESCAPE, hasModifierKey, UP_ARROW, ENTER, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i4 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { startWith, switchMap, take, filter, map, tap, delay } from 'rxjs/operators';\nimport * as i2$1 from '@angular/cdk/bidi';\n\n// Animation values come from\n// https://github.com/material-components/material-components-web/blob/master/packages/mdc-menu-surface/_mixins.scss\n// TODO(mmalerba): Ideally find a way to import the values from MDC's code.\nconst panelAnimation = trigger('panelAnimation', [\n state('void, hidden', style({\n opacity: 0,\n transform: 'scaleY(0.8)',\n })),\n transition(':enter, hidden => visible', [\n group([\n animate('0.03s linear', style({ opacity: 1 })),\n animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'scaleY(1)' })),\n ]),\n ]),\n transition(':leave, visible => hidden', [animate('0.075s linear', style({ opacity: 0 }))]),\n]);\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nconst _MatAutocompleteMixinBase = mixinDisableRipple(class {\n});\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return {\n autoActiveFirstOption: false,\n autoSelectActiveOption: false,\n hideSingleSelectionIndicator: false,\n requireSelection: false,\n };\n}\n/** Base class with all of the `MatAutocomplete` functionality. */\nclass _MatAutocompleteBase extends _MatAutocompleteMixinBase {\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /** @docs-private Sets the theme color of the panel. */\n _setColor(value) {\n this._color = value;\n this._setThemeClasses(this._classList);\n }\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n get autoActiveFirstOption() {\n return this._autoActiveFirstOption;\n }\n set autoActiveFirstOption(value) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n /** Whether the active option should be selected as the user is navigating. */\n get autoSelectActiveOption() {\n return this._autoSelectActiveOption;\n }\n set autoSelectActiveOption(value) {\n this._autoSelectActiveOption = coerceBooleanProperty(value);\n }\n /**\n * Whether the user is required to make a selection when they're interacting with the\n * autocomplete. If the user moves away from the autocomplete without selecting an option from\n * the list, the value will be reset. If the user opens the panel and closes it without\n * interacting or selecting a value, the initial value will be kept.\n */\n get requireSelection() {\n return this._requireSelection;\n }\n set requireSelection(value) {\n this._requireSelection = coerceBooleanProperty(value);\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {});\n }\n else {\n this._classList = {};\n }\n this._setVisibilityClasses(this._classList);\n this._setThemeClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n constructor(_changeDetectorRef, _elementRef, _defaults, platform) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._defaults = _defaults;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n this.optionActivated = new EventEmitter();\n this._classList = {};\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this._autoActiveFirstOption = !!_defaults.autoActiveFirstOption;\n this._autoSelectActiveOption = !!_defaults.autoSelectActiveOption;\n this._requireSelection = !!_defaults.requireSelection;\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withWrap()\n .skipPredicate(this._skipPredicate);\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._activeOptionChanges.unsubscribe();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n _setVisibilityClasses(classList) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n /** Sets the theming classes on a classlist based on the theme of the panel. */\n _setThemeClasses(classList) {\n classList['mat-primary'] = this._color === 'primary';\n classList['mat-warn'] = this._color === 'warn';\n classList['mat-accent'] = this._color === 'accent';\n }\n _skipPredicate(option) {\n return option.disabled;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteBase, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", autoSelectActiveOption: \"autoSelectActiveOption\", requireSelection: \"requireSelection\", panelWidth: \"panelWidth\", classList: [\"class\", \"classList\"] }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, viewQueries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }, { type: i1.Platform }]; }, propDecorators: { template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], displayWith: [{\n type: Input\n }], autoActiveFirstOption: [{\n type: Input\n }], autoSelectActiveOption: [{\n type: Input\n }], requireSelection: [{\n type: Input\n }], panelWidth: [{\n type: Input\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], classList: [{\n type: Input,\n args: ['class']\n }] } });\nclass MatAutocomplete extends _MatAutocompleteBase {\n constructor() {\n super(...arguments);\n this._visibleClass = 'mat-mdc-autocomplete-visible';\n this._hiddenClass = 'mat-mdc-autocomplete-hidden';\n this._animationDone = new EventEmitter();\n this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\n }\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = coerceBooleanProperty(value);\n this._syncParentProperties();\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._animationDone.complete();\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate(_option) {\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocomplete, selector: \"mat-autocomplete\", inputs: { disableRipple: \"disableRipple\", hideSingleSelectionIndicator: \"hideSingleSelectionIndicator\" }, host: { attributes: { \"ngSkipHydration\": \"\" }, classAttribute: \"mat-mdc-autocomplete\" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: \"options\", predicate: MatOption, descendants: true }], exportAs: [\"matAutocomplete\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n \\n\\n\", styles: [\"div.mat-mdc-autocomplete-panel{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], animations: [panelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocomplete, decorators: [{\n type: Component,\n args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', inputs: ['disableRipple'], host: {\n 'class': 'mat-mdc-autocomplete',\n 'ngSkipHydration': '',\n }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], animations: [panelAnimation], template: \"\\n \\n \\n \\n\\n\", styles: [\"div.mat-mdc-autocomplete-panel{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}\"] }]\n }], propDecorators: { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], hideSingleSelectionIndicator: [{\n type: Input\n }] } });\n\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteOriginBase, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocompleteOrigin, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n }]\n }] });\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() {\n return this._autocompleteDisabled;\n }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n /** Handles keyboard events coming from the overlay panel. */\n this._handlePanelKeydown = (event) => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n };\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n this._trackedModal = null;\n this._scrollStrategy = scrollStrategy;\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n this._clearFromModal();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n // Add aria-owns attribute when the autocomplete becomes visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._updatePanelState();\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n // Remove aria-owns attribute when the autocomplete is no longer visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._element.nativeElement.value;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n // If selection is required we don't write to the CVA while the user is typing.\n // At the end of the selection either the user will have picked something\n // or we'll reset the value back to null.\n if (!this.autocomplete || !this.autocomplete.requireSelection) {\n this._onChange(value);\n }\n if (!value) {\n this._clearPreviousSelectedOption(null, false);\n }\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n if (this._formField) {\n this._formField.floatLabel = 'auto';\n }\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return (merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this._updatePanelState();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this._captureValueOnAttach();\n this._emitOpened();\n }\n else {\n this.autocomplete.closed.emit();\n }\n }\n });\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /**\n * Emits the opened event once it's known that the panel will be shown and stores\n * the state of the trigger right before the opening sequence was finished.\n */\n _emitOpened() {\n this.autocomplete.opened.emit();\n }\n /** Intended to be called when the panel is attached. Captures the current value of the input. */\n _captureValueOnAttach() {\n this._valueOnAttach = this._element.nativeElement.value;\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _assignOptionValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith\n ? this.autocomplete.displayWith(value)\n : value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n }\n else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const panel = this.autocomplete;\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n // TODO(crisbeto): this should wait until the animation is done, otherwise the value\n // gets reset while the panel is still animating which looks glitchy. It'll likely break\n // some tests to change it at this point.\n this._onChange(toSelect.value);\n panel._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n }\n else if (panel.requireSelection &&\n this._element.nativeElement.value !== this._valueOnAttach) {\n this._clearPreviousSelectedOption(null);\n this._assignOptionValue(null);\n // Wait for the animation to finish before clearing the form control value, otherwise\n // the options might change while the animation is running which looks glitchy.\n if (panel._animationDone) {\n panel._animationDone.pipe(take(1)).subscribe(() => this._onChange(null));\n }\n else {\n this._onChange(null);\n }\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip, emitEvent) {\n // Null checks are necessary here, because the autocomplete\n // or its options may not have been assigned yet.\n this.autocomplete?.options?.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect(emitEvent);\n }\n });\n }\n _attachOverlay() {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._isOpen = this._overlayAttached = true;\n this.autocomplete._setColor(this._formField?.color);\n this._updatePanelState();\n this._applyModalPanelOwnership();\n this._captureValueOnAttach();\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this._emitOpened();\n }\n }\n /** Updates the panel's visibility state and any trigger state tied to id. */\n _updatePanelState() {\n this.autocomplete._setVisibility();\n // Note that here we subscribe and unsubscribe based on the panel's visiblity state,\n // because the act of subscribing will prevent events from reaching other overlays and\n // we don't want to block the events if there are no options.\n if (this.panelOpen) {\n const overlayRef = this._overlayRef;\n if (!this._keydownSubscription) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\n }\n if (!this._outsideClickSubscription) {\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\n }\n }\n else {\n this._keydownSubscription?.unsubscribe();\n this._outsideClickSubscription?.unsubscribe();\n this._keydownSubscription = this._outsideClickSubscription = null;\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir ?? undefined,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset the active item to -1. This is so that pressing arrow keys will activate the correct\n * option.\n *\n * If the consumer opted-in to automatically activatating the first option, activate the first\n * *enabled* option.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < autocomplete.options.length; index++) {\n const option = autocomplete.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = this.autocomplete.id;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the references to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"] }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: i2$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }] } });\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-mdc-autocomplete-panel-above';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-controls\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-mdc-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-mdc-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-controls]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n }]\n }] });\n\nclass MatAutocompleteModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],\n exports: [\n CdkScrollableModule,\n MatAutocomplete,\n MatOptionModule,\n MatCommonModule,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n","import * as i0 from '@angular/core';\nimport { inject, Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { InteractivityChecker, A11yModule } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\nlet nextId = 0;\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {\n});\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n/** Directive to display a text badge. */\nclass MatBadge extends _MatBadgeBase {\n /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n get color() {\n return this._color;\n }\n set color(value) {\n this._setColor(value);\n this._color = value;\n }\n /** Whether the badge should overlap its contents or not */\n get overlap() {\n return this._overlap;\n }\n set overlap(val) {\n this._overlap = coerceBooleanProperty(val);\n }\n /** The content for the badge */\n get content() {\n return this._content;\n }\n set content(newContent) {\n this._updateRenderedContent(newContent);\n }\n /** Message used to describe the decorated element via aria-describedby */\n get description() {\n return this._description;\n }\n set description(newDescription) {\n this._updateDescription(newDescription);\n }\n /** Whether the badge is hidden. */\n get hidden() {\n return this._hidden;\n }\n set hidden(val) {\n this._hidden = coerceBooleanProperty(val);\n }\n constructor(_ngZone, _elementRef, _ariaDescriber, _renderer, _animationMode) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n this._renderer = _renderer;\n this._animationMode = _animationMode;\n this._color = 'primary';\n this._overlap = true;\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n this.position = 'above after';\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n this.size = 'medium';\n /** Unique id for the badge */\n this._id = nextId++;\n /** Whether the OnInit lifecycle hook has run yet */\n this._isInitialized = false;\n /** InteractivityChecker to determine if the badge host is focusable. */\n this._interactivityChecker = inject(InteractivityChecker);\n this._document = inject(DOCUMENT);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n const matIconTagName = 'mat-icon';\n // Heads-up for developers to avoid putting matBadge on \n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.io/components/badge/overview#accessibility\n if (nativeElement.tagName.toLowerCase() === matIconTagName &&\n nativeElement.getAttribute('aria-hidden') === 'true') {\n console.warn(`Detected a matBadge on an \"aria-hidden\" \"\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`);\n }\n }\n }\n /** Whether the badge is above the host or not */\n isAbove() {\n return this.position.indexOf('below') === -1;\n }\n /** Whether the badge is after the host or not */\n isAfter() {\n return this.position.indexOf('before') === -1;\n }\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement() {\n return this._badgeElement;\n }\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n this._isInitialized = true;\n }\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n /** Gets whether the badge's host element is interactive. */\n _isHostInteractive() {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n /** Creates the badge element */\n _createBadgeElement() {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n this._elementRef.nativeElement.appendChild(badgeElement);\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n }\n else {\n badgeElement.classList.add(activeClass);\n }\n return badgeElement;\n }\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n _updateRenderedContent(newContent) {\n const newContentNormalized = `${newContent ?? ''}`.trim();\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n this._content = newContentNormalized;\n }\n /** Updates the host element's aria description via AriaDescriber. */\n _updateDescription(newDescription) {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n this._description = newDescription;\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n }\n else {\n this._updateInlineDescription();\n }\n }\n _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n /** Adds css theme class given the color to the component host */\n _setColor(colorPalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n /** Clears any existing badges that might be left over from server-side rendering. */\n _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadge, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatBadge, selector: \"[matBadge]\", inputs: { disabled: [\"matBadgeDisabled\", \"disabled\"], color: [\"matBadgeColor\", \"color\"], overlap: [\"matBadgeOverlap\", \"overlap\"], position: [\"matBadgePosition\", \"position\"], content: [\"matBadge\", \"content\"], description: [\"matBadgeDescription\", \"description\"], size: [\"matBadgeSize\", \"size\"], hidden: [\"matBadgeHidden\", \"hidden\"] }, host: { properties: { \"class.mat-badge-overlap\": \"overlap\", \"class.mat-badge-above\": \"isAbove()\", \"class.mat-badge-below\": \"!isAbove()\", \"class.mat-badge-before\": \"!isAfter()\", \"class.mat-badge-after\": \"isAfter()\", \"class.mat-badge-small\": \"size === \\\"small\\\"\", \"class.mat-badge-medium\": \"size === \\\"medium\\\"\", \"class.mat-badge-large\": \"size === \\\"large\\\"\", \"class.mat-badge-hidden\": \"hidden || !content\", \"class.mat-badge-disabled\": \"disabled\" }, classAttribute: \"mat-badge\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadge, decorators: [{\n type: Directive,\n args: [{\n selector: '[matBadge]',\n inputs: ['disabled: matBadgeDisabled'],\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { color: [{\n type: Input,\n args: ['matBadgeColor']\n }], overlap: [{\n type: Input,\n args: ['matBadgeOverlap']\n }], position: [{\n type: Input,\n args: ['matBadgePosition']\n }], content: [{\n type: Input,\n args: ['matBadge']\n }], description: [{\n type: Input,\n args: ['matBadgeDescription']\n }], size: [{\n type: Input,\n args: ['matBadgeSize']\n }], hidden: [{\n type: Input,\n args: ['matBadgeHidden']\n }] } });\n\nclass MatBadgeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadgeModule, declarations: [MatBadge], imports: [A11yModule, MatCommonModule], exports: [MatBadge, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadgeModule, imports: [A11yModule, MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBadgeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, MatCommonModule],\n exports: [MatBadge, MatCommonModule],\n declarations: [MatBadge],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatBadge, MatBadgeModule };\n","import * as i2 from '@angular/cdk/dialog';\nimport { CdkDialogContainer, DialogModule, Dialog } from '@angular/cdk/dialog';\nimport * as i5 from '@angular/cdk/portal';\nimport { PortalModule } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, NgModule, InjectionToken, Injectable, SkipSelf } from '@angular/core';\nimport { AnimationDurations, AnimationCurves, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i3 from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Subject, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n/** Animations used by the Material bottom sheet. */\nconst matBottomSheetAnimations = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({ transform: 'translateY(100%)' })),\n state('visible', style({ transform: 'translateY(0%)' })),\n transition('visible => void, visible => hidden', group([\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`),\n query('@*', animateChild(), { optional: true }),\n ])),\n transition('void => visible', group([\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`),\n query('@*', animateChild(), { optional: true }),\n ])),\n ]),\n};\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\nclass MatBottomSheetContainer extends CdkDialogContainer {\n constructor(elementRef, focusTrapFactory, document, config, checker, ngZone, overlayRef, breakpointObserver, _changeDetectorRef, focusMonitor) {\n super(elementRef, focusTrapFactory, document, config, checker, ngZone, overlayRef, focusMonitor);\n this._changeDetectorRef = _changeDetectorRef;\n /** The state of the bottom sheet animations. */\n this._animationState = 'void';\n /** Emits whenever the state of the animation changes. */\n this._animationStateChanged = new EventEmitter();\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium', breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large', breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge', breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n /** Begin animation of bottom sheet entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n /** Begin animation of the bottom sheet exiting from view. */\n exit() {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n _onAnimationDone(event) {\n if (event.toState === 'visible') {\n this._trapFocus();\n }\n this._animationStateChanged.emit(event);\n }\n _onAnimationStart(event) {\n this._animationStateChanged.emit(event);\n }\n _captureInitialFocus() { }\n _toggleClass(cssClass, add) {\n this._elementRef.nativeElement.classList.toggle(cssClass, add);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetContainer, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: DOCUMENT, optional: true }, { token: i2.DialogConfig }, { token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: i3.OverlayRef }, { token: i4.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatBottomSheetContainer, selector: \"mat-bottom-sheet-container\", host: { attributes: { \"tabindex\": \"-1\" }, listeners: { \"@state.start\": \"_onAnimationStart($event)\", \"@state.done\": \"_onAnimationDone($event)\" }, properties: { \"attr.role\": \"_config.role\", \"attr.aria-modal\": \"_config.ariaModal\", \"attr.aria-label\": \"_config.ariaLabel\", \"@state\": \"_animationState\" }, classAttribute: \"mat-bottom-sheet-container\" }, usesInheritance: true, ngImport: i0, template: \"\\r\\n\", styles: [\".mat-bottom-sheet-container{--mat-bottom-sheet-container-shape:4px;box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto;background:var(--mat-bottom-sheet-container-background-color);color:var(--mat-bottom-sheet-container-text-color);font-family:var(--mat-bottom-sheet-container-text-font);font-size:var(--mat-bottom-sheet-container-text-size);line-height:var(--mat-bottom-sheet-container-text-line-height);font-weight:var(--mat-bottom-sheet-container-text-weight);letter-spacing:var(--mat-bottom-sheet-container-text-tracking)}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:var(--mat-bottom-sheet-container-shape);border-top-right-radius:var(--mat-bottom-sheet-container-shape)}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\"], dependencies: [{ kind: \"directive\", type: i5.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matBottomSheetAnimations.bottomSheetState], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-bottom-sheet-container', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, animations: [matBottomSheetAnimations.bottomSheetState], host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n '[attr.role]': '_config.role',\n '[attr.aria-modal]': '_config.ariaModal',\n '[attr.aria-label]': '_config.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)',\n }, template: \"\\r\\n\", styles: [\".mat-bottom-sheet-container{--mat-bottom-sheet-container-shape:4px;box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto;background:var(--mat-bottom-sheet-container-background-color);color:var(--mat-bottom-sheet-container-text-color);font-family:var(--mat-bottom-sheet-container-text-font);font-size:var(--mat-bottom-sheet-container-text-size);line-height:var(--mat-bottom-sheet-container-text-line-height);font-weight:var(--mat-bottom-sheet-container-text-weight);letter-spacing:var(--mat-bottom-sheet-container-text-tracking)}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:var(--mat-bottom-sheet-container-shape);border-top-right-radius:var(--mat-bottom-sheet-container-shape)}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.DialogConfig }, { type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: i3.OverlayRef }, { type: i4.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }]; } });\n\nclass MatBottomSheetModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetModule, declarations: [MatBottomSheetContainer], imports: [DialogModule, MatCommonModule, PortalModule], exports: [MatBottomSheetContainer, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetModule, imports: [DialogModule, MatCommonModule, PortalModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheetModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [DialogModule, MatCommonModule, PortalModule],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n }]\n }] });\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nconst MAT_BOTTOM_SHEET_DATA = new InjectionToken('MatBottomSheetData');\n/**\n * Configuration used when opening a bottom sheet.\n */\nclass MatBottomSheetConfig {\n constructor() {\n /** Data being injected into the child component. */\n this.data = null;\n /** Whether the bottom sheet has a backdrop. */\n this.hasBackdrop = true;\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n this.disableClose = false;\n /** Aria label to assign to the bottom sheet element. */\n this.ariaLabel = null;\n /** Whether this is a modal bottom sheet. Used to set the `aria-modal` attribute. */\n this.ariaModal = true;\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.closeOnNavigation = true;\n // Note that this is set to 'dialog' by default, because while the a11y recommendations\n // are to focus the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /**\n * Where the bottom sheet should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n this.autoFocus = 'dialog';\n /**\n * Whether the bottom sheet should restore focus to the\n * previously-focused element, after it's closed.\n */\n this.restoreFocus = true;\n }\n}\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nclass MatBottomSheetRef {\n /** Instance of the component making up the content of the bottom sheet. */\n get instance() {\n return this._ref.componentInstance;\n }\n /**\n * `ComponentRef` of the component opened into the bottom sheet. Will be\n * null when the bottom sheet is opened using a `TemplateRef`.\n */\n get componentRef() {\n return this._ref.componentRef;\n }\n constructor(_ref, config, containerInstance) {\n this._ref = _ref;\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n this._afterOpened = new Subject();\n this.containerInstance = containerInstance;\n this.disableClose = config.disableClose;\n // Emit when opening animation completes\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'visible'), take(1))\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._ref.close(this._result);\n });\n _ref.overlayRef.detachments().subscribe(() => {\n this._ref.close(this._result);\n });\n merge(this.backdropClick(), this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event))) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result) {\n if (!this.containerInstance) {\n return;\n }\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'start'), take(1))\n .subscribe(event => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => {\n this._ref.close(this._result);\n }, event.totalTime + 100);\n this._ref.overlayRef.detachBackdrop();\n });\n this._result = result;\n this.containerInstance.exit();\n this.containerInstance = null;\n }\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed() {\n return this._ref.closed;\n }\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened() {\n return this._afterOpened;\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick() {\n return this._ref.backdropClick;\n }\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents() {\n return this._ref.keydownEvents;\n }\n}\n\n/** Injection token that can be used to specify default bottom sheet options. */\nconst MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken('mat-bottom-sheet-default-options');\n/**\n * Service to trigger Material Design bottom sheets.\n */\nclass MatBottomSheet {\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef() {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n set _openedBottomSheetRef(value) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n }\n else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n constructor(_overlay, injector, _parentBottomSheet, _defaultOptions) {\n this._overlay = _overlay;\n this._parentBottomSheet = _parentBottomSheet;\n this._defaultOptions = _defaultOptions;\n this._bottomSheetRefAtThisLevel = null;\n this._dialog = injector.get(Dialog);\n }\n open(componentOrTemplateRef, config) {\n const _config = { ...(this._defaultOptions || new MatBottomSheetConfig()), ...config };\n let ref;\n this._dialog.open(componentOrTemplateRef, {\n ..._config,\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on detachments so that we can sync up the animation.\n closeOnOverlayDetachments: false,\n maxWidth: '100%',\n container: MatBottomSheetContainer,\n scrollStrategy: _config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0'),\n templateContext: () => ({ bottomSheetRef: ref }),\n providers: (cdkRef, _cdkConfig, container) => {\n ref = new MatBottomSheetRef(cdkRef, _config, container);\n return [\n { provide: MatBottomSheetRef, useValue: ref },\n { provide: MAT_BOTTOM_SHEET_DATA, useValue: _config.data },\n ];\n },\n });\n // When the bottom sheet is dismissed, clear the reference to it.\n ref.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef === ref) {\n this._openedBottomSheetRef = null;\n }\n });\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance?.enter());\n this._openedBottomSheetRef.dismiss();\n }\n else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref.containerInstance.enter();\n }\n this._openedBottomSheetRef = ref;\n return ref;\n }\n /**\n * Dismisses the currently-visible bottom sheet.\n * @param result Data to pass to the bottom sheet instance.\n */\n dismiss(result) {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss(result);\n }\n }\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheet, deps: [{ token: i3.Overlay }, { token: i0.Injector }, { token: MatBottomSheet, optional: true, skipSelf: true }, { token: MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheet, providedIn: MatBottomSheetModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatBottomSheet, decorators: [{\n type: Injectable,\n args: [{ providedIn: MatBottomSheetModule }]\n }], ctorParameters: function () { return [{ type: i3.Overlay }, { type: i0.Injector }, { type: MatBottomSheet, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: MatBottomSheetConfig, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BOTTOM_SHEET_DEFAULT_OPTIONS]\n }] }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BOTTOM_SHEET_DATA, MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, MatBottomSheet, MatBottomSheetConfig, MatBottomSheetContainer, MatBottomSheetModule, MatBottomSheetRef, matBottomSheetAnimations };\n","import * as i1 from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Directive, Optional, Inject, ContentChildren, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from '@angular/material/core';\nimport { mixinDisableRipple, MatCommonModule, MatRippleModule } from '@angular/material/core';\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nconst MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS');\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nconst MAT_BUTTON_TOGGLE_GROUP = new InjectionToken('MatButtonToggleGroup');\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nconst MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n// Counter used to generate unique IDs.\nlet uniqueIdCounter = 0;\n/** Change event object emitted by button toggle. */\nclass MatButtonToggleChange {\n constructor(\n /** The button toggle that emits the event. */\n source, \n /** The value assigned to the button toggle. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\nclass MatButtonToggleGroup {\n /** `name` attribute for the underlying `input` element. */\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n this._markButtonsForCheck();\n }\n /** Whether the toggle group is vertical. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** Value of the toggle group. */\n get value() {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n /** Selected button toggles in the group. */\n get selected() {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n /** Whether multiple button toggles can be selected. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this._multiple = coerceBooleanProperty(value);\n this._markButtonsForCheck();\n }\n /** Whether multiple button toggle group is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._markButtonsForCheck();\n }\n constructor(_changeDetector, defaultOptions) {\n this._changeDetector = _changeDetector;\n this._vertical = false;\n this._multiple = false;\n this._disabled = false;\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n this._controlValueAccessorChangeFn = () => { };\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n this._onTouched = () => { };\n this._name = `mat-button-toggle-group-${uniqueIdCounter++}`;\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n /** Event emitted when the group's value changes. */\n this.change = new EventEmitter();\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n }\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(toggle) {\n const event = new MatButtonToggleChange(toggle, this.value);\n this._rawValue = event.value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(toggle, select, isUserInput = false, deferEvents = false) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n this.selected.checked = false;\n }\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n }\n else {\n this._selectionModel.deselect(toggle);\n }\n }\n else {\n deferEvents = true;\n }\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(toggle, isUserInput));\n }\n else {\n this._updateModelValue(toggle, isUserInput);\n }\n }\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n return toggle.value === this._rawValue;\n }\n /** Updates the selection state of the toggles in the group based on a value. */\n _setSelectionByValue(value) {\n this._rawValue = value;\n if (!this._buttonToggles) {\n return;\n }\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n this._clearSelection();\n value.forEach((currentValue) => this._selectValue(currentValue));\n }\n else {\n this._clearSelection();\n this._selectValue(value);\n }\n }\n /** Clears the selected toggles. */\n _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => (toggle.checked = false));\n }\n /** Selects a value if there's a toggle that corresponds to it. */\n _selectValue(value) {\n const correspondingOption = this._buttonToggles.find(toggle => {\n return toggle.value != null && toggle.value === value;\n });\n if (correspondingOption) {\n correspondingOption.checked = true;\n this._selectionModel.select(correspondingOption);\n }\n }\n /** Syncs up the group's value with the model and emits the change event. */\n _updateModelValue(toggle, isUserInput) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent(toggle);\n }\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n /** Marks all of the child button toggles to be checked. */\n _markButtonsForCheck() {\n this._buttonToggles?.forEach(toggle => toggle._markForCheck());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatButtonToggleGroup, selector: \"mat-button-toggle-group\", inputs: { appearance: \"appearance\", name: \"name\", vertical: \"vertical\", value: \"value\", multiple: \"multiple\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\", change: \"change\" }, host: { attributes: { \"role\": \"group\" }, properties: { \"attr.aria-disabled\": \"disabled\", \"class.mat-button-toggle-vertical\": \"vertical\", \"class.mat-button-toggle-group-appearance-standard\": \"appearance === \\\"standard\\\"\" }, classAttribute: \"mat-button-toggle-group\" }, providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n { provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup },\n ], queries: [{ propertyName: \"_buttonToggles\", predicate: i0.forwardRef(function () { return MatButtonToggle; }), descendants: true }], exportAs: [\"matButtonToggleGroup\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleGroup, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n { provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup },\n ],\n host: {\n 'role': 'group',\n 'class': 'mat-button-toggle-group',\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { _buttonToggles: [{\n type: ContentChildren,\n args: [forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n }]\n }], appearance: [{\n type: Input\n }], name: [{\n type: Input\n }], vertical: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], multiple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], change: [{\n type: Output\n }] } });\n// Boilerplate for applying mixins to the MatButtonToggle class.\n/** @docs-private */\nconst _MatButtonToggleBase = mixinDisableRipple(class {\n});\n/** Single button inside of a toggle group. */\nclass MatButtonToggle extends _MatButtonToggleBase {\n /** Unique ID for the underlying `button` element. */\n get buttonId() {\n return `${this.id}-button`;\n }\n /** The appearance style of the button. */\n get appearance() {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value) {\n this._appearance = value;\n }\n /** Whether the button is checked. */\n get checked() {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._checked) {\n this._checked = newValue;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the button is disabled. */\n get disabled() {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n constructor(toggleGroup, _changeDetectorRef, _elementRef, _focusMonitor, defaultTabIndex, defaultOptions) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._checked = false;\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n this._disabled = false;\n /** Event emitted when the group value changes. */\n this.change = new EventEmitter();\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n this.buttonToggleGroup = toggleGroup;\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this.id = this.id || `mat-button-toggle-${uniqueIdCounter++}`;\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n }\n else if (group._isSelected(this) !== this._checked) {\n // As side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n this._focusMonitor.stopMonitoring(this._elementRef);\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n /** Focuses the button. */\n focus(options) {\n this._buttonElement.nativeElement.focus(options);\n }\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n const newChecked = this._isSingleSelector() ? true : !this._checked;\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n /** Gets the name that should be assigned to the inner DOM node. */\n _getButtonName() {\n if (this._isSingleSelector()) {\n return this.buttonToggleGroup.name;\n }\n return this.name || null;\n }\n /** Whether the toggle is in single selection mode. */\n _isSingleSelector() {\n return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggle, deps: [{ token: MAT_BUTTON_TOGGLE_GROUP, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: 'tabindex', attribute: true }, { token: MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatButtonToggle, selector: \"mat-button-toggle\", inputs: { disableRipple: \"disableRipple\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], id: \"id\", name: \"name\", value: \"value\", tabIndex: \"tabIndex\", appearance: \"appearance\", checked: \"checked\", disabled: \"disabled\" }, outputs: { change: \"change\" }, host: { attributes: { \"role\": \"presentation\" }, listeners: { \"focus\": \"focus()\" }, properties: { \"class.mat-button-toggle-standalone\": \"!buttonToggleGroup\", \"class.mat-button-toggle-checked\": \"checked\", \"class.mat-button-toggle-disabled\": \"disabled\", \"class.mat-button-toggle-appearance-standard\": \"appearance === \\\"standard\\\"\", \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.id\": \"id\", \"attr.name\": \"null\" }, classAttribute: \"mat-button-toggle\" }, viewQueries: [{ propertyName: \"_buttonElement\", first: true, predicate: [\"button\"], descendants: true }], exportAs: [\"matButtonToggle\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n\", styles: [\".mat-button-toggle-standalone,.mat-button-toggle-group{--mat-legacy-button-toggle-height:36px;--mat-legacy-button-toggle-shape:2px;--mat-legacy-button-toggle-focus-state-layer-opacity:1;position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);transform:translateZ(0);border-radius:var(--mat-legacy-button-toggle-shape)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:0.04;--mat-standard-button-toggle-focus-state-layer-opacity:0.12;border-radius:var(--mat-standard-button-toggle-shape);border:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-legacy-button-toggle-text-color);font-family:var(--mat-legacy-button-toggle-text-font)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-legacy-button-toggle-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checked{color:var(--mat-legacy-button-toggle-selected-state-text-color);background-color:var(--mat-legacy-button-toggle-selected-state-background-color)}.mat-button-toggle-disabled{color:var(--mat-legacy-button-toggle-disabled-state-text-color);background-color:var(--mat-legacy-button-toggle-disabled-state-background-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-legacy-button-toggle-disabled-selected-state-background-color)}.mat-button-toggle-appearance-standard{--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:0.04;--mat-standard-button-toggle-focus-state-layer-opacity:0.12;color:var(--mat-standard-button-toggle-text-color);background-color:var(--mat-standard-button-toggle-background-color);font-family:var(--mat-standard-button-toggle-text-font)}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-standard-button-toggle-divider-color)}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-standard-button-toggle-selected-state-text-color);background-color:var(--mat-standard-button-toggle-selected-state-background-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-standard-button-toggle-disabled-state-text-color);background-color:var(--mat-standard-button-toggle-disabled-state-background-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-standard-button-toggle-disabled-selected-state-text-color);background-color:var(--mat-standard-button-toggle-disabled-selected-state-background-color)}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-standard-button-toggle-state-layer-color)}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:var(--mat-standard-button-toggle-hover-state-layer-opacity)}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:var(--mat-standard-button-toggle-focus-state-layer-opacity)}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-legacy-button-toggle-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-standard-button-toggle-height)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-legacy-button-toggle-state-layer-color)}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\"], dependencies: [{ kind: \"directive\", type: i2.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggle, decorators: [{\n type: Component,\n args: [{ selector: 'mat-button-toggle', encapsulation: ViewEncapsulation.None, exportAs: 'matButtonToggle', changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disableRipple'], host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n }, template: \"\\n\\n\\n\\n\\n\", styles: [\".mat-button-toggle-standalone,.mat-button-toggle-group{--mat-legacy-button-toggle-height:36px;--mat-legacy-button-toggle-shape:2px;--mat-legacy-button-toggle-focus-state-layer-opacity:1;position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);transform:translateZ(0);border-radius:var(--mat-legacy-button-toggle-shape)}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:0.04;--mat-standard-button-toggle-focus-state-layer-opacity:0.12;border-radius:var(--mat-standard-button-toggle-shape);border:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative;color:var(--mat-legacy-button-toggle-text-color);font-family:var(--mat-legacy-button-toggle-text-font)}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:var(--mat-legacy-button-toggle-focus-state-layer-opacity)}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle-checked{color:var(--mat-legacy-button-toggle-selected-state-text-color);background-color:var(--mat-legacy-button-toggle-selected-state-background-color)}.mat-button-toggle-disabled{color:var(--mat-legacy-button-toggle-disabled-state-text-color);background-color:var(--mat-legacy-button-toggle-disabled-state-background-color)}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:var(--mat-legacy-button-toggle-disabled-selected-state-background-color)}.mat-button-toggle-appearance-standard{--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:0.04;--mat-standard-button-toggle-focus-state-layer-opacity:0.12;color:var(--mat-standard-button-toggle-text-color);background-color:var(--mat-standard-button-toggle-background-color);font-family:var(--mat-standard-button-toggle-text-font)}.mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:solid 1px var(--mat-standard-button-toggle-divider-color)}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle-appearance-standard+.mat-button-toggle-appearance-standard{border-left:none;border-right:none;border-top:solid 1px var(--mat-standard-button-toggle-divider-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{color:var(--mat-standard-button-toggle-selected-state-text-color);background-color:var(--mat-standard-button-toggle-selected-state-background-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled{color:var(--mat-standard-button-toggle-disabled-state-text-color);background-color:var(--mat-standard-button-toggle-disabled-state-background-color)}.mat-button-toggle-appearance-standard.mat-button-toggle-disabled.mat-button-toggle-checked{color:var(--mat-standard-button-toggle-disabled-selected-state-text-color);background-color:var(--mat-standard-button-toggle-disabled-selected-state-background-color)}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:var(--mat-standard-button-toggle-state-layer-color)}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:var(--mat-standard-button-toggle-hover-state-layer-opacity)}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:var(--mat-standard-button-toggle-focus-state-layer-opacity)}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;padding:0 16px;line-height:var(--mat-legacy-button-toggle-height);position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px;line-height:var(--mat-standard-button-toggle-height)}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0;background-color:var(--mat-legacy-button-toggle-state-layer-color)}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 500px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\"] }]\n }], ctorParameters: function () { return [{ type: MatButtonToggleGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_GROUP]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], _buttonElement: [{\n type: ViewChild,\n args: ['button']\n }], id: [{\n type: Input\n }], name: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], appearance: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], change: [{\n type: Output\n }] } });\n\nclass MatButtonToggleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleModule, declarations: [MatButtonToggleGroup, MatButtonToggle], imports: [MatCommonModule, MatRippleModule], exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleModule, imports: [MatCommonModule, MatRippleModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatButtonToggleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatRippleModule],\n exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle],\n declarations: [MatButtonToggleGroup, MatButtonToggle],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, MAT_BUTTON_TOGGLE_GROUP, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Optional, Input, Directive, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Injection token that can be used to provide the default options the card module. */\nconst MAT_CARD_CONFIG = new InjectionToken('MAT_CARD_CONFIG');\n/**\n * Material Design card component. Cards contain content and actions about a single subject.\n * See https://material.io/design/components/cards.html\n *\n * MatCard provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCard {\n constructor(config) {\n this.appearance = config?.appearance || 'raised';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCard, deps: [{ token: MAT_CARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCard, selector: \"mat-card\", inputs: { appearance: \"appearance\" }, host: { properties: { \"class.mat-mdc-card-outlined\": \"appearance === \\\"outlined\\\"\", \"class.mdc-card--outlined\": \"appearance === \\\"outlined\\\"\" }, classAttribute: \"mat-mdc-card mdc-card\" }, exportAs: [\"matCard\"], ngImport: i0, template: \"\\n\", styles: [\".mdc-card{display:flex;flex-direction:column;box-sizing:border-box}.mdc-card::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none;pointer-events:none}@media screen and (forced-colors: active){.mdc-card::after{border-color:CanvasText}}.mdc-card--outlined::after{border:none}.mdc-card__content{border-radius:inherit;height:100%}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:\\\"\\\"}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square::before{margin-top:100%}.mdc-card__media--16-9::before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0, 0, 0, 0.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons,.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl]{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}[dir=rtl] .mdc-card__action--button,.mdc-card__action--button[dir=rtl]{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button,.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl]{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0, 0, 0, 0.6)}.mat-mdc-card{border-radius:var(--mdc-elevated-card-container-shape);background-color:var(--mdc-elevated-card-container-color);border-width:0;border-style:solid;border-color:var(--mdc-elevated-card-container-color);box-shadow:var(--mdc-elevated-card-container-elevation);--mdc-elevated-card-container-shape:4px;--mdc-outlined-card-container-shape:4px;--mdc-outlined-card-outline-width:1px}.mat-mdc-card .mdc-card::after{border-radius:var(--mdc-elevated-card-container-shape)}.mat-mdc-card-outlined{border-width:var(--mdc-outlined-card-outline-width);border-style:solid;border-color:var(--mdc-outlined-card-outline-color);border-radius:var(--mdc-outlined-card-container-shape);background-color:var(--mdc-outlined-card-container-color);box-shadow:var(--mdc-outlined-card-container-elevation)}.mat-mdc-card-outlined .mdc-card::after{border-radius:var(--mdc-outlined-card-container-shape)}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font);line-height:var(--mat-card-title-text-line-height);font-size:var(--mat-card-title-text-size);letter-spacing:var(--mat-card-title-text-tracking);font-weight:var(--mat-card-title-text-weight)}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color);font-family:var(--mat-card-subtitle-text-font);line-height:var(--mat-card-subtitle-text-line-height);font-size:var(--mat-card-subtitle-text-size);letter-spacing:var(--mat-card-subtitle-text-tracking);font-weight:var(--mat-card-subtitle-text-weight)}.mat-mdc-card{position:relative}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCard, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card', host: {\n 'class': 'mat-mdc-card mdc-card',\n '[class.mat-mdc-card-outlined]': 'appearance === \"outlined\"',\n '[class.mdc-card--outlined]': 'appearance === \"outlined\"',\n }, exportAs: 'matCard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\", styles: [\".mdc-card{display:flex;flex-direction:column;box-sizing:border-box}.mdc-card::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none;pointer-events:none}@media screen and (forced-colors: active){.mdc-card::after{border-color:CanvasText}}.mdc-card--outlined::after{border:none}.mdc-card__content{border-radius:inherit;height:100%}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:\\\"\\\"}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square::before{margin-top:100%}.mdc-card__media--16-9::before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0, 0, 0, 0.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons,.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl]{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}[dir=rtl] .mdc-card__action--button,.mdc-card__action--button[dir=rtl]{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button,.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl]{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0, 0, 0, 0.6)}.mat-mdc-card{border-radius:var(--mdc-elevated-card-container-shape);background-color:var(--mdc-elevated-card-container-color);border-width:0;border-style:solid;border-color:var(--mdc-elevated-card-container-color);box-shadow:var(--mdc-elevated-card-container-elevation);--mdc-elevated-card-container-shape:4px;--mdc-outlined-card-container-shape:4px;--mdc-outlined-card-outline-width:1px}.mat-mdc-card .mdc-card::after{border-radius:var(--mdc-elevated-card-container-shape)}.mat-mdc-card-outlined{border-width:var(--mdc-outlined-card-outline-width);border-style:solid;border-color:var(--mdc-outlined-card-outline-color);border-radius:var(--mdc-outlined-card-container-shape);background-color:var(--mdc-outlined-card-container-color);box-shadow:var(--mdc-outlined-card-container-elevation)}.mat-mdc-card-outlined .mdc-card::after{border-radius:var(--mdc-outlined-card-container-shape)}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font);line-height:var(--mat-card-title-text-line-height);font-size:var(--mat-card-title-text-size);letter-spacing:var(--mat-card-title-text-tracking);font-weight:var(--mat-card-title-text-weight)}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color);font-family:var(--mat-card-subtitle-text-font);line-height:var(--mat-card-subtitle-text-line-height);font-size:var(--mat-card-subtitle-text-size);letter-spacing:var(--mat-card-subtitle-text-tracking);font-weight:var(--mat-card-subtitle-text-weight)}.mat-mdc-card{position:relative}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_CARD_CONFIG]\n }, {\n type: Optional\n }] }]; }, propDecorators: { appearance: [{\n type: Input\n }] } });\n// TODO(jelbourn): add `MatActionCard`, which is a card that acts like a button (and has a ripple).\n// Supported in MDC with `.mdc-card__primary-action`. Will require additional a11y docs for users.\n/**\n * Title of a card, intended for use within ``. This component is an optional\n * convenience for one variety of card title; any custom title element may be used in its place.\n *\n * MatCardTitle provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardTitle {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\", host: { classAttribute: \"mat-mdc-card-title\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardTitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: { 'class': 'mat-mdc-card-title' },\n }]\n }] });\n/**\n * Container intended to be used within the `` component. Can contain exactly one\n * ``, one `` and one content image of any size\n * (e.g. ``).\n */\nclass MatCardTitleGroup {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardTitleGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardTitleGroup, selector: \"mat-card-title-group\", host: { classAttribute: \"mat-mdc-card-title-group\" }, ngImport: i0, template: \"
\\n \\n
\\n\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardTitleGroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card-title-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'mat-mdc-card-title-group' }, template: \"
\\n \\n
\\n\\n\\n\" }]\n }] });\n/**\n * Content of a card, intended for use within ``. This component is an optional\n * convenience for use with other convenience elements, such as ``; any custom\n * content block element may be used in its place.\n *\n * MatCardContent provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardContent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardContent, selector: \"mat-card-content\", host: { classAttribute: \"mat-mdc-card-content\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-content',\n host: { 'class': 'mat-mdc-card-content' },\n }]\n }] });\n/**\n * Sub-title of a card, intended for use within `` beneath a ``. This\n * component is an optional convenience for use with other convenience elements, such as\n * ``.\n *\n * MatCardSubtitle provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardSubtitle {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardSubtitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\", host: { classAttribute: \"mat-mdc-card-subtitle\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardSubtitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: { 'class': 'mat-mdc-card-subtitle' },\n }]\n }] });\n/**\n * Bottom area of a card that contains action buttons, intended for use within ``.\n * This component is an optional convenience for use with other convenience elements, such as\n * ``; any custom action block element may be used in its place.\n *\n * MatCardActions provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardActions {\n constructor() {\n // TODO(jelbourn): deprecate `align` in favor of `actionPosition` or `actionAlignment`\n // as to not conflict with the native `align` attribute.\n /** Position of the actions inside the card. */\n this.align = 'start';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardActions, selector: \"mat-card-actions\", inputs: { align: \"align\" }, host: { properties: { \"class.mat-mdc-card-actions-align-end\": \"align === \\\"end\\\"\" }, classAttribute: \"mat-mdc-card-actions mdc-card__actions\" }, exportAs: [\"matCardActions\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardActions, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-mdc-card-actions mdc-card__actions',\n '[class.mat-mdc-card-actions-align-end]': 'align === \"end\"',\n },\n }]\n }], propDecorators: { align: [{\n type: Input\n }] } });\n/**\n * Header region of a card, intended for use within ``. This header captures\n * a card title, subtitle, and avatar. This component is an optional convenience for use with\n * other convenience elements, such as ``; any custom header block element may be\n * used in its place.\n *\n * MatCardHeader provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardHeader {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardHeader, selector: \"mat-card-header\", host: { classAttribute: \"mat-mdc-card-header\" }, ngImport: i0, template: \"\\n
\\n \\n
\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'mat-mdc-card-header' }, template: \"\\n
\\n \\n
\\n\\n\" }]\n }] });\n/**\n * Footer area a card, intended for use within ``.\n * This component is an optional convenience for use with other convenience elements, such as\n * ``; any custom footer block element may be used in its place.\n *\n * MatCardFooter provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardFooter {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardFooter, selector: \"mat-card-footer\", host: { classAttribute: \"mat-mdc-card-footer\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardFooter, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-mdc-card-footer' },\n }]\n }] });\n// TODO(jelbourn): deprecate the \"image\" selectors to replace with \"media\".\n// TODO(jelbourn): support `.mdc-card__media-content`.\n/**\n * Primary image content for a card, intended for use within ``. Can be applied to\n * any media element, such as `` or ``.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * ``; any custom media element may be used in its place.\n *\n * MatCardImage provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardImage {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardImage, selector: \"[mat-card-image], [matCardImage]\", host: { classAttribute: \"mat-mdc-card-image mdc-card__media\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-mdc-card-image mdc-card__media' },\n }]\n }] });\n/** Same as `MatCardImage`, but small. */\nclass MatCardSmImage {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardSmImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardSmImage, selector: \"[mat-card-sm-image], [matCardImageSmall]\", host: { classAttribute: \"mat-mdc-card-sm-image mdc-card__media\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardSmImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-mdc-card-sm-image mdc-card__media' },\n }]\n }] });\n/** Same as `MatCardImage`, but medium. */\nclass MatCardMdImage {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardMdImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardMdImage, selector: \"[mat-card-md-image], [matCardImageMedium]\", host: { classAttribute: \"mat-mdc-card-md-image mdc-card__media\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardMdImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-mdc-card-md-image mdc-card__media' },\n }]\n }] });\n/** Same as `MatCardImage`, but large. */\nclass MatCardLgImage {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardLgImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardLgImage, selector: \"[mat-card-lg-image], [matCardImageLarge]\", host: { classAttribute: \"mat-mdc-card-lg-image mdc-card__media\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardLgImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-mdc-card-lg-image mdc-card__media' },\n }]\n }] });\n/** Same as `MatCardImage`, but extra-large. */\nclass MatCardXlImage {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardXlImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardXlImage, selector: \"[mat-card-xl-image], [matCardImageXLarge]\", host: { classAttribute: \"mat-mdc-card-xl-image mdc-card__media\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardXlImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-mdc-card-xl-image mdc-card__media' },\n }]\n }] });\n/**\n * Avatar image content for a card, intended for use within ``. Can be applied to\n * any media element, such as `` or ``.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * ``; any custom media element may be used in its place.\n *\n * MatCardAvatar provides no behaviors, instead serving as a purely visual treatment.\n */\nclass MatCardAvatar {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\", host: { classAttribute: \"mat-mdc-card-avatar\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardAvatar, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-mdc-card-avatar' },\n }]\n }] });\n\nconst CARD_DIRECTIVES = [\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n];\nclass MatCardModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardModule, declarations: [MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage], imports: [MatCommonModule, CommonModule], exports: [MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardModule, imports: [MatCommonModule, CommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule],\n exports: [CARD_DIRECTIVES, MatCommonModule],\n declarations: CARD_DIRECTIVES,\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CARD_CONFIG, MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Directive, Input, Output, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, Optional, Inject, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\nimport * as i1 from '@angular/material/core';\nimport { mixinTabIndex, mixinColor, mixinDisableRipple, mixinDisabled, MatRipple, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/** Injection token to be used to override the default options for `mat-checkbox`. */\nconst MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken('mat-checkbox-default-options', {\n providedIn: 'root',\n factory: MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent',\n clickAction: 'check-indeterminate',\n };\n}\n\nconst MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true,\n};\n/** Change event object emitted by checkbox. */\nclass MatCheckboxChange {\n}\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n// Default checkbox configuration.\nconst defaults = MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY();\n// Boilerplate for applying mixins to MatCheckbox.\n/** @docs-private */\nconst _MatCheckboxMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}))));\nclass _MatCheckboxBase extends _MatCheckboxMixinBase {\n /** Returns the unique id for the visual hidden input. */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n /** Whether the checkbox is required. */\n get required() {\n return this._required;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n constructor(idPrefix, elementRef, _changeDetectorRef, _ngZone, tabIndex, _animationMode, _options) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._options = _options;\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n this.labelPosition = 'after';\n /** Name value will be applied to the input element if present */\n this.name = null;\n /** Event emitted when the checkbox's `checked` value changes. */\n this.change = new EventEmitter();\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n this.indeterminateChange = new EventEmitter();\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n this._onTouched = () => { };\n this._currentAnimationClass = '';\n this._currentCheckState = 0 /* TransitionCheckState.Init */;\n this._controlValueAccessorChangeFn = () => { };\n this._checked = false;\n this._disabled = false;\n this._indeterminate = false;\n this._options = this._options || defaults;\n this.color = this.defaultColor = this._options.color || defaults.color;\n this.tabIndex = parseInt(tabIndex) || 0;\n this.id = this._uniqueId = `${idPrefix}${++nextUniqueId}`;\n }\n ngAfterViewInit() {\n this._syncIndeterminate(this._indeterminate);\n }\n /** Whether the checkbox is checked. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n const checked = coerceBooleanProperty(value);\n if (checked != this.checked) {\n this._checked = checked;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Whether the checkbox is disabled. This fully overrides the implementation provided by\n * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this._disabled = newValue;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n get indeterminate() {\n return this._indeterminate;\n }\n set indeterminate(value) {\n const changed = value != this._indeterminate;\n this._indeterminate = coerceBooleanProperty(value);\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(3 /* TransitionCheckState.Indeterminate */);\n }\n else {\n this._transitionCheckState(this.checked ? 1 /* TransitionCheckState.Checked */ : 2 /* TransitionCheckState.Unchecked */);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n this._syncIndeterminate(this._indeterminate);\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this.checked = !!value;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n _transitionCheckState(newState) {\n let oldState = this._currentCheckState;\n let element = this._getAnimationTargetElement();\n if (oldState === newState || !element) {\n return;\n }\n if (this._currentAnimationClass) {\n element.classList.remove(this._currentAnimationClass);\n }\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\n this._currentCheckState = newState;\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n /** Toggles the `checked` state of the checkbox. */\n toggle() {\n this.checked = !this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n }\n _handleInputClick() {\n const clickAction = this._options?.clickAction;\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && clickAction !== 'check') {\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n this._checked = !this._checked;\n this._transitionCheckState(this._checked ? 1 /* TransitionCheckState.Checked */ : 2 /* TransitionCheckState.Unchecked */);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n }\n else if (!this.disabled && clickAction === 'noop') {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n _onInteractionEvent(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n _onBlur() {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n _getAnimationClassForCheckStateTransition(oldState, newState) {\n // Don't transition if animations are disabled.\n if (this._animationMode === 'NoopAnimations') {\n return '';\n }\n switch (oldState) {\n case 0 /* TransitionCheckState.Init */:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === 1 /* TransitionCheckState.Checked */) {\n return this._animationClasses.uncheckedToChecked;\n }\n else if (newState == 3 /* TransitionCheckState.Indeterminate */) {\n return this._checked\n ? this._animationClasses.checkedToIndeterminate\n : this._animationClasses.uncheckedToIndeterminate;\n }\n break;\n case 2 /* TransitionCheckState.Unchecked */:\n return newState === 1 /* TransitionCheckState.Checked */\n ? this._animationClasses.uncheckedToChecked\n : this._animationClasses.uncheckedToIndeterminate;\n case 1 /* TransitionCheckState.Checked */:\n return newState === 2 /* TransitionCheckState.Unchecked */\n ? this._animationClasses.checkedToUnchecked\n : this._animationClasses.checkedToIndeterminate;\n case 3 /* TransitionCheckState.Indeterminate */:\n return newState === 1 /* TransitionCheckState.Checked */\n ? this._animationClasses.indeterminateToChecked\n : this._animationClasses.indeterminateToUnchecked;\n }\n return '';\n }\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n */\n _syncIndeterminate(value) {\n const nativeCheckbox = this._inputElement;\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatCheckboxBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: _MatCheckboxBase, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], id: \"id\", required: \"required\", labelPosition: \"labelPosition\", name: \"name\", value: \"value\", checked: \"checked\", disabled: \"disabled\", indeterminate: \"indeterminate\" }, outputs: { change: \"change\", indeterminateChange: \"indeterminateChange\" }, viewQueries: [{ propertyName: \"_inputElement\", first: true, predicate: [\"input\"], descendants: true }, { propertyName: \"_labelElement\", first: true, predicate: [\"label\"], descendants: true }, { propertyName: \"ripple\", first: true, predicate: MatRipple, descendants: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: _MatCheckboxBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: undefined }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], id: [{\n type: Input\n }], required: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], name: [{\n type: Input\n }], change: [{\n type: Output\n }], indeterminateChange: [{\n type: Output\n }], value: [{\n type: Input\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }], _labelElement: [{\n type: ViewChild,\n args: ['label']\n }], ripple: [{\n type: ViewChild,\n args: [MatRipple]\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }] } });\nclass MatCheckbox extends _MatCheckboxBase {\n constructor(elementRef, changeDetectorRef, ngZone, tabIndex, animationMode, options) {\n super('mat-mdc-checkbox-', elementRef, changeDetectorRef, ngZone, tabIndex, animationMode, options);\n this._animationClasses = {\n uncheckedToChecked: 'mdc-checkbox--anim-unchecked-checked',\n uncheckedToIndeterminate: 'mdc-checkbox--anim-unchecked-indeterminate',\n checkedToUnchecked: 'mdc-checkbox--anim-checked-unchecked',\n checkedToIndeterminate: 'mdc-checkbox--anim-checked-indeterminate',\n indeterminateToChecked: 'mdc-checkbox--anim-indeterminate-checked',\n indeterminateToUnchecked: 'mdc-checkbox--anim-indeterminate-unchecked',\n };\n }\n /** Focuses the checkbox. */\n focus() {\n this._inputElement.nativeElement.focus();\n }\n _createChangeEvent(isChecked) {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = isChecked;\n return event;\n }\n _getAnimationTargetElement() {\n return this._inputElement?.nativeElement;\n }\n _onInputClick() {\n super._handleInputClick();\n }\n _onTouchTargetClick() {\n super._handleInputClick();\n if (!this.disabled) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement.nativeElement.focus();\n }\n }\n /**\n * Prevent click events that come from the `
\\n \\n\\n\\n\\n\\n \\n \\n \\n \\n \\n \\n {{item.displayValue}}\\n \\n \\n \\n \\n\\n\\n\\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color)}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size);font-weight:var(--mat-datepicker-calendar-body-label-text-weight);color:var(--mat-datepicker-calendar-body-label-text-color)}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color)}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color)}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color);border-color:var(--mat-datepicker-calendar-date-outline-color)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color)}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color);color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color)}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color)}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color)}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color)}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color)}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}[dir=rtl] .mat-calendar-body-label{text-align:right}\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCalendarBody, decorators: [{\n type: Component,\n args: [{ selector: '[mat-calendar-body]', host: {\n 'class': 'mat-calendar-body',\n }, exportAs: 'matCalendarBody', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n \\n\\n\\n\\n\\n \\n \\n \\n \\n \\n \\n {{item.displayValue}}\\n \\n \\n \\n \\n\\n\\n\\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color)}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size);font-weight:var(--mat-datepicker-calendar-body-label-text-weight);color:var(--mat-datepicker-calendar-body-label-text-color)}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color)}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color)}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color);border-color:var(--mat-datepicker-calendar-date-outline-color)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color)}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color);color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color)}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color)}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color)}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color)}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color)}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}[dir=rtl] .mat-calendar-body-label{text-align:right}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { label: [{\n type: Input\n }], rows: [{\n type: Input\n }], todayValue: [{\n type: Input\n }], startValue: [{\n type: Input\n }], endValue: [{\n type: Input\n }], labelMinRequiredCells: [{\n type: Input\n }], numCols: [{\n type: Input\n }], activeCell: [{\n type: Input\n }], isRange: [{\n type: Input\n }], cellAspectRatio: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], previewStart: [{\n type: Input\n }], previewEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], selectedValueChange: [{\n type: Output\n }], previewChange: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragEnded: [{\n type: Output\n }] } });\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node) {\n return node?.nodeName === 'TD';\n}\n/**\n * Gets the date table cell element that is or contains the specified element.\n * Or returns null if element is not part of a date cell.\n */\nfunction getCellElement(element) {\n let cell;\n if (isTableCell(element)) {\n cell = element;\n }\n else if (isTableCell(element.parentNode)) {\n cell = element.parentNode;\n }\n else if (isTableCell(element.parentNode?.parentNode)) {\n cell = element.parentNode.parentNode;\n }\n return cell?.getAttribute('data-mat-row') != null ? cell : null;\n}\n/** Checks whether a value is the start of a range. */\nfunction isStart(value, start, end) {\n return end !== null && start !== end && value < end && value === start;\n}\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value, start, end) {\n return start !== null && start !== end && value >= start && value === end;\n}\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value, start, end, rangeEnabled) {\n return (rangeEnabled &&\n start !== null &&\n end !== null &&\n start !== end &&\n value >= start &&\n value <= end);\n}\n/**\n * Extracts the element that actually corresponds to a touch event's location\n * (rather than the element that initiated the sequence of touch events).\n */\nfunction getActualTouchTarget(event) {\n const touchLocation = event.changedTouches[0];\n return document.elementFromPoint(touchLocation.clientX, touchLocation.clientY);\n}\n\n/** A class representing a range of dates. */\nclass DateRange {\n constructor(\n /** The start date of the range. */\n start, \n /** The end date of the range. */\n end) {\n this.start = start;\n this.end = end;\n }\n}\n/**\n * A selection model containing a date selection.\n * @docs-private\n */\nclass MatDateSelectionModel {\n constructor(\n /** The current selection. */\n selection, _adapter) {\n this.selection = selection;\n this._adapter = _adapter;\n this._selectionChanged = new Subject();\n /** Emits when the selection has changed. */\n this.selectionChanged = this._selectionChanged;\n this.selection = selection;\n }\n /**\n * Updates the current selection in the model.\n * @param value New selection that should be assigned.\n * @param source Object that triggered the selection change.\n */\n updateSelection(value, source) {\n const oldValue = this.selection;\n this.selection = value;\n this._selectionChanged.next({ selection: value, source, oldValue });\n }\n ngOnDestroy() {\n this._selectionChanged.complete();\n }\n _isValidDateInstance(date) {\n return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDateSelectionModel, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined }, { type: i1$1.DateAdapter }]; } });\n/**\n * A selection model that contains a single date.\n * @docs-private\n */\nclass MatSingleDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(null, adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a single date selection, the added date\n * simply overwrites the previous selection\n */\n add(date) {\n super.updateSelection(date, this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n return this.selection != null && this._isValidDateInstance(this.selection);\n }\n /**\n * Checks whether the current selection is complete. In the case of a single date selection, this\n * is true if the current selection is not null.\n */\n isComplete() {\n return this.selection != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatSingleDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSingleDateSelectionModel, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSingleDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatSingleDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/**\n * A selection model that contains a date range.\n * @docs-private\n */\nclass MatRangeDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(new DateRange(null, null), adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a date range selection, the added date\n * fills in the next `null` value in the range. If both the start and the end already have a date,\n * the selection is reset so that the given date is the new `start` and the `end` is null.\n */\n add(date) {\n let { start, end } = this.selection;\n if (start == null) {\n start = date;\n }\n else if (end == null) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n super.updateSelection(new DateRange(start, end), this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n const { start, end } = this.selection;\n // Empty ranges are valid.\n if (start == null && end == null) {\n return true;\n }\n // Complete ranges are only valid if both dates are valid and the start is before the end.\n if (start != null && end != null) {\n return (this._isValidDateInstance(start) &&\n this._isValidDateInstance(end) &&\n this._adapter.compareDate(start, end) <= 0);\n }\n // Partial ranges are valid if the start/end is valid.\n return ((start == null || this._isValidDateInstance(start)) &&\n (end == null || this._isValidDateInstance(end)));\n }\n /**\n * Checks whether the current selection is complete. In the case of a date range selection, this\n * is true if the current selection has a non-null `start` and `end`.\n */\n isComplete() {\n return this.selection.start != null && this.selection.end != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatRangeDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRangeDateSelectionModel, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRangeDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatRangeDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/** @docs-private */\nfunction MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatSingleDateSelectionModel(adapter);\n}\n/**\n * Used to provide a single selection model to a component.\n * @docs-private\n */\nconst MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n/** @docs-private */\nfunction MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatRangeDateSelectionModel(adapter);\n}\n/**\n * Used to provide a range selection model to a component.\n * @docs-private\n */\nconst MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n/** Injection token used to customize the date range selection behavior. */\nconst MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('MAT_DATE_RANGE_SELECTION_STRATEGY');\n/** Provides the default date range selection behavior. */\nclass DefaultMatCalendarRangeStrategy {\n constructor(_dateAdapter) {\n this._dateAdapter = _dateAdapter;\n }\n selectionFinished(date, currentRange) {\n let { start, end } = currentRange;\n if (start == null) {\n start = date;\n }\n else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n return new DateRange(start, end);\n }\n createPreview(activeDate, currentRange) {\n let start = null;\n let end = null;\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n return new DateRange(start, end);\n }\n createDrag(dragOrigin, originalRange, newDate) {\n let start = originalRange.start;\n let end = originalRange.end;\n if (!start || !end) {\n // Can't drag from an incomplete range.\n return null;\n }\n const adapter = this._dateAdapter;\n const isRange = adapter.compareDate(start, end) !== 0;\n const diffYears = adapter.getYear(newDate) - adapter.getYear(dragOrigin);\n const diffMonths = adapter.getMonth(newDate) - adapter.getMonth(dragOrigin);\n const diffDays = adapter.getDate(newDate) - adapter.getDate(dragOrigin);\n if (isRange && adapter.sameDate(dragOrigin, originalRange.start)) {\n start = newDate;\n if (adapter.compareDate(newDate, end) > 0) {\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n }\n else if (isRange && adapter.sameDate(dragOrigin, originalRange.end)) {\n end = newDate;\n if (adapter.compareDate(newDate, start) < 0) {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n }\n }\n else {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n return new DateRange(start, end);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DefaultMatCalendarRangeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/** @docs-private */\nfunction MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(parent, adapter) {\n return parent || new DefaultMatCalendarRangeStrategy(adapter);\n}\n/** @docs-private */\nconst MAT_CALENDAR_RANGE_STRATEGY_PROVIDER = {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n};\n\nconst DAYS_PER_WEEK = 7;\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\nclass MatMonthView {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n const oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setRanges(this._selected);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rangeStrategy = _rangeStrategy;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Origin of active drag, or null when dragging is not active. */\n this.activeDrag = null;\n /** Emits when a new date is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits when the user initiates a date range drag via mouse or touch. */\n this.dragStarted = new EventEmitter();\n /**\n * Emits when the user completes or cancels a date range drag.\n * Emits null when the drag was canceled or the newly selected date range if completed.\n */\n this.dragEnded = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnChanges(changes) {\n const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n if (comparisonChange && !comparisonChange.firstChange) {\n this._setRanges(this.selected);\n }\n if (changes['activeDrag'] && !this.activeDrag) {\n this._clearPreview();\n }\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new date is selected. */\n _dateSelected(event) {\n const date = event.value;\n const selectedDate = this._getDateFromDayOfMonth(date);\n let rangeStartDate;\n let rangeEndDate;\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n }\n else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit({ value: selectedDate, event: event.event });\n this._clearPreview();\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const month = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromDayOfMonth(month);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this._activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, -1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, 1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n this._selectionKeyPressed = true;\n if (this._canSelect(this._activeDate)) {\n // Prevent unexpected default actions such as form submission.\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null && !hasModifierKey(event)) {\n this._clearPreview();\n // If a drag is in progress, cancel the drag without changing the\n // current selection.\n if (this.activeDrag) {\n this.dragEnded.emit({ value: null, event });\n }\n else {\n this.selectedChange.emit(null);\n this._userSelection.emit({ value: null, event });\n }\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n this._focusActiveCellAfterViewChecked();\n }\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed && this._canSelect(this._activeDate)) {\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateFormats.display.monthLabel\n ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)\n : this._dateAdapter\n .getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK +\n this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) %\n DAYS_PER_WEEK;\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n /** Focuses the active cell after change detection has run and the microtask queue is empty. */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({ event, value: cell }) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n if (this.activeDrag && value) {\n const dragRange = this._rangeStrategy.createDrag?.(this.activeDrag.value, this.selected, value, event);\n if (dragRange) {\n this._previewStart = this._getCellCompareValue(dragRange.start);\n this._previewEnd = this._getCellCompareValue(dragRange.end);\n }\n }\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Called when the user has ended a drag. If the drag/drop was successful,\n * computes and emits the new range selection.\n */\n _dragEnded(event) {\n if (!this.activeDrag)\n return;\n if (event.value) {\n // Propagate drag effect\n const dragDropResult = this._rangeStrategy?.createDrag?.(this.activeDrag.value, this.selected, event.value, event.event);\n this.dragEnded.emit({ value: dragDropResult ?? null, event: event.event });\n }\n else {\n this.dragEnded.emit({ value: null, event: event.event });\n }\n }\n /**\n * Takes a day of the month and returns a new date in the same month and year as the currently\n * active date. The returned date will have the same day of the month as the argument date.\n */\n _getDateFromDayOfMonth(dayOfMonth) {\n return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), dayOfMonth);\n }\n /** Initializes the weekdays. */\n _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n /** Creates MatCalendarCells for the dates in this month. */\n _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;\n this._weeks[this._weeks.length - 1].push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\n }\n }\n /** Date filter for the month */\n _shouldEnableDate(date) {\n return (!!date &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n (!this.dateFilter || this.dateFilter(date)));\n }\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n _getDateInCurrentMonth(date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate)\n ? this._dateAdapter.getDate(date)\n : null;\n }\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n _hasSameMonthAndYear(d1, d2) {\n return !!(d1 &&\n d2 &&\n this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n /** Gets the value that will be used to one cell to another. */\n _getCellCompareValue(date) {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n return null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the current range based on a model value. */\n _setRanges(selectedValue) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n }\n else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n /** Gets whether a date can be selected in the month view. */\n _canSelect(date) {\n return !this.dateFilter || this.dateFilter(date);\n }\n /** Clears out preview state. */\n _clearPreview() {\n this._previewStart = this._previewEnd = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatMonthView, selector: \"mat-month-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", startDateAccessibleName: \"startDateAccessibleName\", endDateAccessibleName: \"endDateAccessibleName\", activeDrag: \"activeDrag\" }, outputs: { selectedChange: \"selectedChange\", _userSelection: \"_userSelection\", dragStarted: \"dragStarted\", dragEnded: \"dragEnded\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMonthView\"], usesOnChanges: true, ngImport: i0, template: \"
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
\\n {{label}}\\n
\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n
\\n {{label}}\\n
\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\", dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatMonthView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-month-view', exportAs: 'matMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }] }]; }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], activeDrag: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragEnded: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\nconst yearsPerPage = 24;\nconst yearsPerRow = 4;\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\nclass MatMultiYearView {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedYear(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new year is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected year. This doesn't imply a change on the selected date */\n this.yearSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n this._years = [];\n for (let i = 0, row = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /** Handles when a new year is selected. */\n _yearSelected(event) {\n const year = event.value;\n const selectedYear = this._dateAdapter.createDate(year, 0, 1);\n const selectedDate = this._getDateFromYear(year);\n this.yearSelected.emit(selectedYear);\n this.selectedChange.emit(selectedDate);\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const year = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromYear(year);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event) {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage -\n getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) -\n 1);\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCellAfterViewChecked();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n _getActiveCell() {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Focuses the active cell after change detection has run and the microtask queue is empty. */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /**\n * Takes a year and returns a new date on the same day and month as the currently active date\n * The returned date will have the same year as the argument date.\n */\n _getDateFromYear(year) {\n const activeMonth = this._dateAdapter.getMonth(this.activeDate);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, activeMonth, 1));\n const normalizedDate = this._dateAdapter.createDate(year, activeMonth, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth));\n return normalizedDate;\n }\n /** Creates an MatCalendarCell for the given year. */\n _createCellForYear(year) {\n const date = this._dateAdapter.createDate(year, 0, 1);\n const yearName = this._dateAdapter.getYearName(date);\n const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n }\n /** Whether the given year is enabled. */\n _shouldEnableYear(year) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined ||\n year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-highlighted year based on a model value. */\n _setSelectedYear(value) {\n this._selectedYear = null;\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n }\n else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatMultiYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatMultiYearView, selector: \"mat-multi-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMultiYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", dependencies: [{ kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatMultiYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-multi-year-view', exportAs: 'matMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return (Math.floor((year1 - startingYear) / yearsPerPage) ===\n Math.floor((year2 - startingYear) / yearsPerPage));\n}\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage);\n}\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n }\n else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a, b) {\n return ((a % b) + b) % b;\n}\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\nclass MatYearView {\n /** The date to display in this year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedMonth(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new month is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected month. This doesn't imply a change on the selected date */\n this.monthSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new month is selected. */\n _monthSelected(event) {\n const month = event.value;\n const selectedMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n this.monthSelected.emit(selectedMonth);\n const selectedDate = this._getDateFromMonth(month);\n this.selectedChange.emit(selectedDate);\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const month = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromMonth(month);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n this._focusActiveCellAfterViewChecked();\n }\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [\n [0, 1, 2, 3],\n [4, 5, 6, 7],\n [8, 9, 10, 11],\n ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Schedules the matCalendarBody to focus the active cell after change detection has run */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n _getMonthInCurrentYear(date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate)\n ? this._dateAdapter.getMonth(date)\n : null;\n }\n /**\n * Takes a month and returns a new date in the same day and year as the currently active date.\n * The returned date will have the same month as the argument date.\n */\n _getDateFromMonth(month) {\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth));\n }\n /** Creates an MatCalendarCell for the given month. */\n _createCellForMonth(month, monthName) {\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month), cellClasses);\n }\n /** Whether the given month is enabled. */\n _shouldEnableMonth(month) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n if (month === undefined ||\n month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n if (!this.dateFilter) {\n return true;\n }\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n _isYearAndMonthAfterMaxDate(year, month) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n _isYearAndMonthBeforeMinDate(year, month) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n return year < minYear || (year === minYear && month < minMonth);\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-selected month based on a model value. */\n _setSelectedMonth(value) {\n if (value instanceof DateRange) {\n this._selectedMonth =\n this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end);\n }\n else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatYearView, selector: \"mat-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", monthSelected: \"monthSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", dependencies: [{ kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-year-view', exportAs: 'matYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\nlet calendarHeaderId = 1;\n/** Default header for MatCalendar */\nclass MatCalendarHeader {\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\n this._intl = _intl;\n this.calendar = calendar;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._id = `mat-calendar-header-${calendarHeaderId++}`;\n this._periodButtonLabelId = `${this._id}-period-label`;\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n /** The display text for the current calendar view. */\n get periodButtonText() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n return this._intl.formatYearRange(...this._formatMinAndMaxYearLabels());\n }\n /** The aria description for the current calendar view. */\n get periodButtonDescription() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n // Format a label for the window of years displayed in the multi-year calendar view. Use\n // `formatYearRangeLabel` because it is TTS friendly.\n return this._intl.formatYearRangeLabel(...this._formatMinAndMaxYearLabels());\n }\n /** The `aria-label` for changing the calendar view. */\n get periodButtonLabel() {\n return this.calendar.currentView == 'month'\n ? this._intl.switchToMultiYearViewLabel\n : this._intl.switchToMonthViewLabel;\n }\n /** The label for the previous button. */\n get prevButtonLabel() {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** The label for the next button. */\n get nextButtonLabel() {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** Handles user clicks on the period label. */\n currentPeriodClicked() {\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n /** Handles user clicks on the previous button. */\n previousClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n /** Handles user clicks on the next button. */\n nextClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n /** Whether the previous period button is enabled. */\n previousEnabled() {\n if (!this.calendar.minDate) {\n return true;\n }\n return (!this.calendar.minDate || !this._isSameView(this.calendar.activeDate, this.calendar.minDate));\n }\n /** Whether the next period button is enabled. */\n nextEnabled() {\n return (!this.calendar.maxDate || !this._isSameView(this.calendar.activeDate, this.calendar.maxDate));\n }\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n _isSameView(date1, date2) {\n if (this.calendar.currentView == 'month') {\n return (this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2));\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n }\n /**\n * Format two individual labels for the minimum year and maximum year available in the multi-year\n * calendar view. Returns an array of two strings where the first string is the formatted label\n * for the minimum year, and the second string is the formatted label for the maximum year.\n */\n _formatMinAndMaxYearLabels() {\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n const minYearOfPage = activeYear -\n getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearLabel = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearLabel = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return [minYearLabel, maxYearLabel];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCalendarHeader, deps: [{ token: MatDatepickerIntl }, { token: forwardRef(() => MatCalendar) }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCalendarHeader, selector: \"mat-calendar-header\", exportAs: [\"matCalendarHeader\"], ngImport: i0, template: \"
\\n
\\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\\n\", dependencies: [{ kind: \"component\", type: i3.MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCalendarHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar-header', exportAs: 'matCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: MatDatepickerIntl }, { type: MatCalendar, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatCalendar)]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }]; } });\n/** A calendar that is used as part of the datepicker. */\nclass MatCalendar {\n /** A date representing the period (month or year) to start the calendar in. */\n get startAt() {\n return this._startAt;\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate() {\n return this._clampedActiveDate;\n }\n set activeDate(value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n /** Whether the calendar is in month view. */\n get currentView() {\n return this._currentView;\n }\n set currentView(value) {\n const viewChangedResult = this._currentView !== value ? value : null;\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n if (viewChangedResult) {\n this.viewChanged.emit(viewChangedResult);\n }\n }\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n this._moveFocusOnNextTick = false;\n /** Whether the calendar should be started in month or year view. */\n this.startView = 'month';\n /** Emits when the currently selected date changes. */\n this.selectedChange = new EventEmitter();\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits a new date range value when the user completes a drag drop operation. */\n this._userDragDrop = new EventEmitter();\n /** Origin of active drag, or null when dragging is not active. */\n this._activeDrag = null;\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n this.stateChanges = new Subject();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n ngAfterContentInit() {\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || MatCalendarHeader);\n this.activeDate = this.startAt || this._dateAdapter.today();\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n ngOnChanges(changes) {\n // Ignore date changes that are at a different time on the same day. This fixes issues where\n // the calendar re-renders when there is no meaningful change to [minDate] or [maxDate]\n // (#24435).\n const minDateChange = changes['minDate'] &&\n !this._dateAdapter.sameDate(changes['minDate'].previousValue, changes['minDate'].currentValue)\n ? changes['minDate']\n : undefined;\n const maxDateChange = changes['maxDate'] &&\n !this._dateAdapter.sameDate(changes['maxDate'].previousValue, changes['maxDate'].currentValue)\n ? changes['maxDate']\n : undefined;\n const change = minDateChange || maxDateChange || changes['dateFilter'];\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n this.stateChanges.next();\n }\n /** Focuses the active date. */\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell(false);\n }\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n this._getCurrentViewComponent()._init();\n }\n /** Handles date selection in the month view. */\n _dateSelected(event) {\n const date = event.value;\n if (this.selected instanceof DateRange ||\n (date && !this._dateAdapter.sameDate(date, this.selected))) {\n this.selectedChange.emit(date);\n }\n this._userSelection.emit(event);\n }\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date, view) {\n this.activeDate = date;\n this.currentView = view;\n }\n /** Called when the user starts dragging to change a date range. */\n _dragStarted(event) {\n this._activeDrag = event;\n }\n /**\n * Called when a drag completes. It may end in cancelation or in the selection\n * of a new range.\n */\n _dragEnded(event) {\n if (!this._activeDrag)\n return;\n if (event.value) {\n this._userDragDrop.emit(event);\n }\n this._activeDrag = null;\n }\n /** Returns the component instance that corresponds to the current calendar view. */\n _getCurrentViewComponent() {\n // The return type is explicitly written as a union to ensure that the Closure compiler does\n // not optimize calls to _init(). Without the explicit return type, TypeScript narrows it to\n // only the first component type. See https://github.com/angular/components/issues/22996.\n return this.monthView || this.yearView || this.multiYearView;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCalendar, deps: [{ token: MatDatepickerIntl }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatCalendar, selector: \"mat-calendar\", inputs: { headerComponent: \"headerComponent\", startAt: \"startAt\", startView: \"startView\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", startDateAccessibleName: \"startDateAccessibleName\", endDateAccessibleName: \"endDateAccessibleName\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", _userSelection: \"_userSelection\", _userDragDrop: \"_userDragDrop\" }, host: { classAttribute: \"mat-calendar\" }, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], viewQueries: [{ propertyName: \"monthView\", first: true, predicate: MatMonthView, descendants: true }, { propertyName: \"yearView\", first: true, predicate: MatYearView, descendants: true }, { propertyName: \"multiYearView\", first: true, predicate: MatMultiYearView, descendants: true }], exportAs: [\"matCalendar\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\", styles: [\".mat-calendar{display:block;font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size);font-weight:var(--mat-datepicker-calendar-period-button-text-weight)}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color)}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button,.mat-datepicker-content .mat-calendar-next-button{color:var(--mat-datepicker-calendar-navigation-button-icon-color)}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color);font-size:var(--mat-datepicker-calendar-header-text-size);font-weight:var(--mat-datepicker-calendar-header-text-weight)}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px) * -1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\\\"\\\"}.mat-calendar-hidden-label{display:none}\"], dependencies: [{ kind: \"directive\", type: i1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"directive\", type: i5.CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"], exportAs: [\"cdkMonitorFocus\"] }, { kind: \"directive\", type: i6.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"component\", type: MatMonthView, selector: \"mat-month-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\", \"activeDrag\"], outputs: [\"selectedChange\", \"_userSelection\", \"dragStarted\", \"dragEnded\", \"activeDateChange\"], exportAs: [\"matMonthView\"] }, { kind: \"component\", type: MatYearView, selector: \"mat-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"monthSelected\", \"activeDateChange\"], exportAs: [\"matYearView\"] }, { kind: \"component\", type: MatMultiYearView, selector: \"mat-multi-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"yearSelected\", \"activeDateChange\"], exportAs: [\"matMultiYearView\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatCalendar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar', host: {\n 'class': 'mat-calendar',\n }, exportAs: 'matCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], template: \"\\n\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\", styles: [\".mat-calendar{display:block;font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size);font-weight:var(--mat-datepicker-calendar-period-button-text-weight)}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color)}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button,.mat-datepicker-content .mat-calendar-next-button{color:var(--mat-datepicker-calendar-navigation-button-icon-color)}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color);font-size:var(--mat-datepicker-calendar-header-text-size);font-weight:var(--mat-datepicker-calendar-header-text-weight)}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px) * -1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\\\"\\\"}.mat-calendar-hidden-label{display:none}\"] }]\n }], ctorParameters: function () { return [{ type: MatDatepickerIntl }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { headerComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], _userDragDrop: [{\n type: Output\n }], monthView: [{\n type: ViewChild,\n args: [MatMonthView]\n }], yearView: [{\n type: ViewChild,\n args: [MatYearView]\n }], multiYearView: [{\n type: ViewChild,\n args: [MatMultiYearView]\n }] } });\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nconst matDatepickerAnimations = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n style({ opacity: 1, transform: 'scale(1, 1)' }),\n ]))),\n transition('void => enter-dialog', animate('150ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(0.7)' }),\n style({ transform: 'none', opacity: 1 }),\n ]))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n ]),\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n ]),\n};\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n/** Injection token that determines the scroll handling while the calendar is open. */\nconst MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy');\n/** @docs-private */\nfunction MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nconst _MatDatepickerContentBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n});\n/**\n * Component used as the content for the datepicker overlay. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the overlay that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\nclass MatDatepickerContent extends _MatDatepickerContentBase {\n constructor(elementRef, _changeDetectorRef, _globalModel, _dateAdapter, _rangeSelectionStrategy, intl) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._globalModel = _globalModel;\n this._dateAdapter = _dateAdapter;\n this._rangeSelectionStrategy = _rangeSelectionStrategy;\n this._subscriptions = new Subscription();\n /** Emits when an animation has finished. */\n this._animationDone = new Subject();\n /** Whether there is an in-progress animation. */\n this._isAnimating = false;\n /** Portal with projected action buttons. */\n this._actionsPortal = null;\n this._closeButtonText = intl.closeCalendarLabel;\n }\n ngOnInit() {\n this._animationState = this.datepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\n }\n ngAfterViewInit() {\n this._subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n }));\n this._calendar.focusActiveCell();\n }\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n _handleUserSelection(event) {\n const selection = this._model.selection;\n const value = event.value;\n const isRange = selection instanceof DateRange;\n // If we're selecting a range and we have a selection strategy, always pass the value through\n // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n // A null value when picking a range means that the user cancelled the selection (e.g. by\n // pressing escape), whereas when selecting a single value it means that the value didn't\n // change. This isn't very intuitive, but it's here for backwards-compatibility.\n if (isRange && this._rangeSelectionStrategy) {\n const newSelection = this._rangeSelectionStrategy.selectionFinished(value, selection, event.event);\n this._model.updateSelection(newSelection, this);\n }\n else if (value &&\n (isRange || !this._dateAdapter.sameDate(value, selection))) {\n this._model.add(value);\n }\n // Delegate closing the overlay to the actions.\n if ((!this._model || this._model.isComplete()) && !this._actionsPortal) {\n this.datepicker.close();\n }\n }\n _handleUserDragDrop(event) {\n this._model.updateSelection(event.value, this);\n }\n _startExitAnimation() {\n this._animationState = 'void';\n this._changeDetectorRef.markForCheck();\n }\n _handleAnimationEvent(event) {\n this._isAnimating = event.phaseName === 'start';\n if (!this._isAnimating) {\n this._animationDone.next();\n }\n }\n _getSelected() {\n return this._model.selection;\n }\n /** Applies the current pending selection to the global model. */\n _applyPendingSelection() {\n if (this._model !== this._globalModel) {\n this._globalModel.updateSelection(this._model.selection, this);\n }\n }\n /**\n * Assigns a new portal containing the datepicker actions.\n * @param portal Portal with the actions to be assigned.\n * @param forceRerender Whether a re-render of the portal should be triggered. This isn't\n * necessary if the portal is assigned during initialization, but it may be required if it's\n * added at a later point.\n */\n _assignActions(portal, forceRerender) {\n // If we have actions, clone the model so that we have the ability to cancel the selection,\n // otherwise update the global model directly. Note that we want to assign this as soon as\n // possible, but `_actionsPortal` isn't available in the constructor so we do it in `ngOnInit`.\n this._model = portal ? this._globalModel.clone() : this._globalModel;\n this._actionsPortal = portal;\n if (forceRerender) {\n this._changeDetectorRef.detectChanges();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MatDateSelectionModel }, { token: i1$1.DateAdapter }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }, { token: MatDatepickerIntl }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerContent, selector: \"mat-datepicker-content\", inputs: { color: \"color\" }, host: { listeners: { \"@transformPanel.start\": \"_handleAnimationEvent($event)\", \"@transformPanel.done\": \"_handleAnimationEvent($event)\" }, properties: { \"@transformPanel\": \"_animationState\", \"class.mat-datepicker-content-touch\": \"datepicker.touchUi\" }, classAttribute: \"mat-datepicker-content\" }, viewQueries: [{ propertyName: \"_calendar\", first: true, predicate: MatCalendar, descendants: true }], exportAs: [\"matDatepickerContent\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n
\\n\", styles: [\".mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color);color:var(--mat-datepicker-calendar-container-text-color)}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i3.MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"directive\", type: i5.CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: [\"cdkTrapFocus\", \"cdkTrapFocusAutoCapture\"], exportAs: [\"cdkTrapFocus\"] }, { kind: \"directive\", type: i6.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"component\", type: MatCalendar, selector: \"mat-calendar\", inputs: [\"headerComponent\", \"startAt\", \"startView\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedChange\", \"yearSelected\", \"monthSelected\", \"viewChanged\", \"_userSelection\", \"_userDragDrop\"], exportAs: [\"matCalendar\"] }], animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerContent, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-content', host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.start)': '_handleAnimationEvent($event)',\n '(@transformPanel.done)': '_handleAnimationEvent($event)',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n }, animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], exportAs: 'matDatepickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n
\\n\", styles: [\".mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color);color:var(--mat-datepicker-calendar-container-text-color)}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: MatDateSelectionModel }, { type: i1$1.DateAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }] }, { type: MatDatepickerIntl }]; }, propDecorators: { _calendar: [{\n type: ViewChild,\n args: [MatCalendar]\n }] } });\n/** Base class for a datepicker. */\nclass MatDatepickerBase {\n /** The date to open the calendar to initially. */\n get startAt() {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this.datepickerInput ? this.datepickerInput.getStartValue() : null);\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** Color palette to use on the datepicker's calendar. */\n get color() {\n return (this._color || (this.datepickerInput ? this.datepickerInput.getThemePalette() : undefined));\n }\n set color(value) {\n this._color = value;\n }\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a dropdown and elements have more padding to allow for bigger touch targets.\n */\n get touchUi() {\n return this._touchUi;\n }\n set touchUi(value) {\n this._touchUi = coerceBooleanProperty(value);\n }\n /** Whether the datepicker pop-up should be disabled. */\n get disabled() {\n return this._disabled === undefined && this.datepickerInput\n ? this.datepickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n }\n /**\n * Whether to restore focus to the previously-focused element when the calendar is closed.\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\n * you provide your own equivalent, if you decide to turn it off.\n */\n get restoreFocus() {\n return this._restoreFocus;\n }\n set restoreFocus(value) {\n this._restoreFocus = coerceBooleanProperty(value);\n }\n /**\n * Classes to be passed to the date picker panel.\n * Supports string and string array values, similar to `ngClass`.\n */\n get panelClass() {\n return this._panelClass;\n }\n set panelClass(value) {\n this._panelClass = coerceStringArray(value);\n }\n /** Whether the calendar is open. */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n /** The minimum selectable date. */\n _getMinDate() {\n return this.datepickerInput && this.datepickerInput.min;\n }\n /** The maximum selectable date. */\n _getMaxDate() {\n return this.datepickerInput && this.datepickerInput.max;\n }\n _getDateFilter() {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n constructor(_overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _model) {\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._model = _model;\n this._inputStateChanges = Subscription.EMPTY;\n this._document = inject(DOCUMENT);\n /** The view that the calendar should start in. */\n this.startView = 'month';\n this._touchUi = false;\n /** Preferred position of the datepicker in the X axis. */\n this.xPosition = 'start';\n /** Preferred position of the datepicker in the Y axis. */\n this.yPosition = 'below';\n this._restoreFocus = true;\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when the datepicker has been opened. */\n this.openedStream = new EventEmitter();\n /** Emits when the datepicker has been closed. */\n this.closedStream = new EventEmitter();\n this._opened = false;\n /** The id for the datepicker calendar. */\n this.id = `mat-datepicker-${datepickerUid++}`;\n /** The element that was focused before the datepicker was opened. */\n this._focusedElementBeforeOpen = null;\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n this._backdropHarnessClass = `${this.id}-backdrop`;\n /** Emits when the datepicker's state changes. */\n this.stateChanges = new Subject();\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._scrollStrategy = scrollStrategy;\n }\n ngOnChanges(changes) {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n if (positionChange && !positionChange.firstChange && this._overlayRef) {\n const positionStrategy = this._overlayRef.getConfig().positionStrategy;\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this._setConnectedPositions(positionStrategy);\n if (this.opened) {\n this._overlayRef.updatePosition();\n }\n }\n }\n this.stateChanges.next(undefined);\n }\n ngOnDestroy() {\n this._destroyOverlay();\n this.close();\n this._inputStateChanges.unsubscribe();\n this.stateChanges.complete();\n }\n /** Selects the given date */\n select(date) {\n this._model.add(date);\n }\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Emits changed view */\n _viewChanged(view) {\n this.viewChanged.emit(view);\n }\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n * @returns Selection model that the input should hook itself up to.\n */\n registerInput(input) {\n if (this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._inputStateChanges.unsubscribe();\n this.datepickerInput = input;\n this._inputStateChanges = input.stateChanges.subscribe(() => this.stateChanges.next(undefined));\n return this._model;\n }\n /**\n * Registers a portal containing action buttons with the datepicker.\n * @param portal Portal to be registered.\n */\n registerActions(portal) {\n if (this._actionsPortal && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single actions row.');\n }\n this._actionsPortal = portal;\n this._componentRef?.instance._assignActions(portal, true);\n }\n /**\n * Removes a portal containing action buttons from the datepicker.\n * @param portal Portal to be removed.\n */\n removeActions(portal) {\n if (portal === this._actionsPortal) {\n this._actionsPortal = null;\n this._componentRef?.instance._assignActions(null, true);\n }\n }\n /** Open the calendar. */\n open() {\n // Skip reopening if there's an in-progress animation to avoid overlapping\n // sequences which can cause \"changed after checked\" errors. See #25837.\n if (this._opened || this.disabled || this._componentRef?.instance._isAnimating) {\n return;\n }\n if (!this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this._openOverlay();\n this._opened = true;\n this.openedStream.emit();\n }\n /** Close the calendar. */\n close() {\n // Skip reopening if there's an in-progress animation to avoid overlapping\n // sequences which can cause \"changed after checked\" errors. See #25837.\n if (!this._opened || this._componentRef?.instance._isAnimating) {\n return;\n }\n const canRestoreFocus = this._restoreFocus &&\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function';\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n }\n };\n if (this._componentRef) {\n const { instance, location } = this._componentRef;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => {\n const activeElement = this._document.activeElement;\n // Since we restore focus after the exit animation, we have to check that\n // the user didn't move focus themselves inside the `close` handler.\n if (canRestoreFocus &&\n (!activeElement ||\n activeElement === this._document.activeElement ||\n location.nativeElement.contains(activeElement))) {\n this._focusedElementBeforeOpen.focus();\n }\n this._focusedElementBeforeOpen = null;\n this._destroyOverlay();\n });\n }\n if (canRestoreFocus) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n setTimeout(completeClose);\n }\n else {\n completeClose();\n }\n }\n /** Applies the current pending selection on the overlay to the model. */\n _applyPendingSelection() {\n this._componentRef?.instance?._applyPendingSelection();\n }\n /** Forwards relevant values from the datepicker to the datepicker content inside the overlay. */\n _forwardContentValues(instance) {\n instance.datepicker = this;\n instance.color = this.color;\n instance._dialogLabelId = this.datepickerInput.getOverlayLabelId();\n instance._assignActions(this._actionsPortal, false);\n }\n /** Opens the overlay with the calendar. */\n _openOverlay() {\n this._destroyOverlay();\n const isDialog = this.touchUi;\n const portal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({\n positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\n hasBackdrop: true,\n backdropClass: [\n isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',\n this._backdropHarnessClass,\n ],\n direction: this._dir,\n scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\n panelClass: `mat-datepicker-${isDialog ? 'dialog' : 'popup'}`,\n })));\n this._getCloseStream(overlayRef).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this.close();\n });\n // The `preventDefault` call happens inside the calendar as well, however focus moves into\n // it inside a timeout which can give browsers a chance to fire off a keyboard event in-between\n // that can scroll the page (see #24969). Always block default actions of arrow keys for the\n // entire overlay so the page doesn't get scrolled by accident.\n overlayRef.keydownEvents().subscribe(event => {\n const keyCode = event.keyCode;\n if (keyCode === UP_ARROW ||\n keyCode === DOWN_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW ||\n keyCode === PAGE_UP ||\n keyCode === PAGE_DOWN) {\n event.preventDefault();\n }\n });\n this._componentRef = overlayRef.attach(portal);\n this._forwardContentValues(this._componentRef.instance);\n // Update the position once the calendar has rendered. Only relevant in dropdown mode.\n if (!isDialog) {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());\n }\n }\n /** Destroys the current overlay. */\n _destroyOverlay() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = this._componentRef = null;\n }\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDialogStrategy() {\n return this._overlay.position().global().centerHorizontally().centerVertically();\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDropdownStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n return this._setConnectedPositions(strategy);\n }\n /** Sets the positions of the datepicker in dropdown mode based on the current configuration. */\n _setConnectedPositions(strategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY,\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY,\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY,\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY,\n },\n ]);\n }\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\n _getCloseStream(overlayRef) {\n const ctrlShiftMetaModifiers = ['ctrlKey', 'shiftKey', 'metaKey'];\n return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (this.datepickerInput &&\n hasModifierKey(event, 'altKey') &&\n event.keyCode === UP_ARROW &&\n ctrlShiftMetaModifiers.every((modifier) => !hasModifierKey(event, modifier))));\n })));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerBase, deps: [{ token: i9.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MAT_DATEPICKER_SCROLL_STRATEGY }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MatDateSelectionModel }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerBase, inputs: { calendarHeaderComponent: \"calendarHeaderComponent\", startAt: \"startAt\", startView: \"startView\", color: \"color\", touchUi: \"touchUi\", disabled: \"disabled\", xPosition: \"xPosition\", yPosition: \"yPosition\", restoreFocus: \"restoreFocus\", dateClass: \"dateClass\", panelClass: \"panelClass\", opened: \"opened\" }, outputs: { yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", openedStream: \"opened\", closedStream: \"closed\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i9.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: MatDateSelectionModel }]; }, propDecorators: { calendarHeaderComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], color: [{\n type: Input\n }], touchUi: [{\n type: Input\n }], disabled: [{\n type: Input\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], dateClass: [{\n type: Input\n }], openedStream: [{\n type: Output,\n args: ['opened']\n }], closedStream: [{\n type: Output,\n args: ['closed']\n }], panelClass: [{\n type: Input\n }], opened: [{\n type: Input\n }] } });\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\nclass MatDatepicker extends MatDatepickerBase {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepicker, selector: \"mat-datepicker\", providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ], exportAs: [\"matDatepicker\"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepicker, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ],\n }]\n }] });\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nclass MatDatepickerInputEvent {\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n target, \n /** Reference to the native input element associated with the datepicker input. */\n targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n}\n/** Base class for datepicker inputs. */\nclass MatDatepickerInputBase {\n /** The value of the input. */\n get value() {\n return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n }\n set value(value) {\n this._assignValueProgrammatically(value);\n }\n /** Whether the datepicker-input is disabled. */\n get disabled() {\n return !!this._disabled || this._parentDisabled();\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (newValue && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n /** Gets the base validator functions. */\n _getValidators() {\n return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n }\n /** Registers a date selection model with the input. */\n _registerModel(model) {\n this._model = model;\n this._valueChangesSubscription.unsubscribe();\n if (this._pendingValue) {\n this._assignValue(this._pendingValue);\n }\n this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n if (this._shouldHandleChangeEvent(event)) {\n const value = this._getValueFromModel(event.selection);\n this._lastValueValid = this._isValidValue(value);\n this._cvaOnChange(value);\n this._onTouched();\n this._formatValue(value);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n });\n }\n constructor(_elementRef, _dateAdapter, _dateFormats) {\n this._elementRef = _elementRef;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /** Emits when a `change` event is fired on this ``. */\n this.dateChange = new EventEmitter();\n /** Emits when an `input` event is fired on this ``. */\n this.dateInput = new EventEmitter();\n /** Emits when the internal state has changed */\n this.stateChanges = new Subject();\n this._onTouched = () => { };\n this._validatorOnChange = () => { };\n this._cvaOnChange = () => { };\n this._valueChangesSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /** The form control validator for whether the input parses. */\n this._parseValidator = () => {\n return this._lastValueValid\n ? null\n : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n };\n /** The form control validator for the date filter. */\n this._filterValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !controlValue || this._matchesFilter(controlValue)\n ? null\n : { 'matDatepickerFilter': true };\n };\n /** The form control validator for the min date. */\n this._minValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const min = this._getMinDate();\n return !min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0\n ? null\n : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };\n };\n /** The form control validator for the max date. */\n this._maxValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const max = this._getMaxDate();\n return !max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0\n ? null\n : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };\n };\n /** Whether the last value set on the input was valid. */\n this._lastValueValid = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this._assignValueProgrammatically(this.value);\n });\n }\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n ngOnChanges(changes) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n ngOnDestroy() {\n this._valueChangesSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this.stateChanges.complete();\n }\n /** @docs-private */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /** @docs-private */\n validate(c) {\n return this._validator ? this._validator(c) : null;\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this._assignValueProgrammatically(value);\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._cvaOnChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n _onKeydown(event) {\n const ctrlShiftMetaModifiers = ['ctrlKey', 'shiftKey', 'metaKey'];\n const isAltDownArrow = hasModifierKey(event, 'altKey') &&\n event.keyCode === DOWN_ARROW &&\n ctrlShiftMetaModifiers.every((modifier) => !hasModifierKey(event, modifier));\n if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._openPopup();\n event.preventDefault();\n }\n }\n _onInput(value) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = this._isValidValue(date);\n date = this._dateAdapter.getValidDateOrNull(date);\n const hasChanged = !this._dateAdapter.sameDate(date, this.value);\n // We need to fire the CVA change event for all\n // nulls, otherwise the validators won't run.\n if (!date || hasChanged) {\n this._cvaOnChange(date);\n }\n else {\n // Call the CVA change handler for invalid values\n // since this is what marks the control as dirty.\n if (value && !this.value) {\n this._cvaOnChange(date);\n }\n if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n if (hasChanged) {\n this._assignValue(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n }\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n this._onTouched();\n }\n /** Formats a value and sets it on the input element. */\n _formatValue(value) {\n this._elementRef.nativeElement.value =\n value != null ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n /** Assigns a value to the model. */\n _assignValue(value) {\n // We may get some incoming values before the model was\n // assigned. Save the value so that we can assign it later.\n if (this._model) {\n this._assignValueToModel(value);\n this._pendingValue = null;\n }\n else {\n this._pendingValue = value;\n }\n }\n /** Whether a value is considered valid. */\n _isValidValue(value) {\n return !value || this._dateAdapter.isValid(value);\n }\n /**\n * Checks whether a parent control is disabled. This is in place so that it can be overridden\n * by inputs extending this one which can be placed inside of a group that can be disabled.\n */\n _parentDisabled() {\n return false;\n }\n /** Programmatically assigns a value to the input. */\n _assignValueProgrammatically(value) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = this._isValidValue(value);\n value = this._dateAdapter.getValidDateOrNull(value);\n this._assignValue(value);\n this._formatValue(value);\n }\n /** Gets whether a value matches the current date filter. */\n _matchesFilter(value) {\n const filter = this._getDateFilter();\n return !filter || filter(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerInputBase, deps: [{ token: i0.ElementRef }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerInputBase, inputs: { value: \"value\", disabled: \"disabled\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerInputBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }]; }, propDecorators: { value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dateChange: [{\n type: Output\n }], dateInput: [{\n type: Output\n }] } });\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nfunction dateInputsHaveChanged(changes, adapter) {\n const keys = Object.keys(changes);\n for (let key of keys) {\n const { previousValue, currentValue } = changes[key];\n if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n if (!adapter.sameDate(previousValue, currentValue)) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n return false;\n}\n\n/** @docs-private */\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** @docs-private */\nconst MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** Directive used to connect an input to a MatDatepicker. */\nclass MatDatepickerInput extends MatDatepickerInputBase {\n /** The datepicker that this input is associated with. */\n set matDatepicker(datepicker) {\n if (datepicker) {\n this._datepicker = datepicker;\n this._closedSubscription = datepicker.closedStream.subscribe(() => this._onTouched());\n this._registerModel(datepicker.registerInput(this));\n }\n }\n /** The minimum valid date. */\n get min() {\n return this._min;\n }\n set min(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._validatorOnChange();\n }\n }\n /** The maximum valid date. */\n get max() {\n return this._max;\n }\n set max(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._validatorOnChange();\n }\n }\n /** Function that can be used to filter out dates within the datepicker. */\n get dateFilter() {\n return this._dateFilter;\n }\n set dateFilter(value) {\n const wasMatchingValue = this._matchesFilter(this.value);\n this._dateFilter = value;\n if (this._matchesFilter(this.value) !== wasMatchingValue) {\n this._validatorOnChange();\n }\n }\n constructor(elementRef, dateAdapter, dateFormats, _formField) {\n super(elementRef, dateAdapter, dateFormats);\n this._formField = _formField;\n this._closedSubscription = Subscription.EMPTY;\n this._validator = Validators.compose(super._getValidators());\n }\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin() {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n /** Gets the ID of an element that should be used a description for the calendar overlay. */\n getOverlayLabelId() {\n if (this._formField) {\n return this._formField.getLabelId();\n }\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n }\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette() {\n return this._formField ? this._formField.color : undefined;\n }\n /** Gets the value at which the calendar should start. */\n getStartValue() {\n return this.value;\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._closedSubscription.unsubscribe();\n }\n /** Opens the associated datepicker. */\n _openPopup() {\n if (this._datepicker) {\n this._datepicker.open();\n }\n }\n _getValueFromModel(modelValue) {\n return modelValue;\n }\n _assignValueToModel(value) {\n if (this._model) {\n this._model.updateSelection(value, this);\n }\n }\n /** Gets the input's minimum date. */\n _getMinDate() {\n return this._min;\n }\n /** Gets the input's maximum date. */\n _getMaxDate() {\n return this._max;\n }\n /** Gets the input's date filtering function. */\n _getDateFilter() {\n return this._dateFilter;\n }\n _shouldHandleChangeEvent(event) {\n return event.source !== this;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerInput, deps: [{ token: i0.ElementRef }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: { matDatepicker: \"matDatepicker\", min: \"min\", max: \"max\", dateFilter: [\"matDatepickerFilter\", \"dateFilter\"] }, host: { listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"blur\": \"_onBlur()\", \"keydown\": \"_onKeydown($event)\" }, properties: { \"attr.aria-haspopup\": \"_datepicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"(_datepicker?.opened && _datepicker.id) || null\", \"attr.min\": \"min ? _dateAdapter.toIso8601(min) : null\", \"attr.max\": \"max ? _dateAdapter.toIso8601(max) : null\", \"attr.data-mat-calendar\": \"_datepicker ? _datepicker.id : null\", \"disabled\": \"disabled\" }, classAttribute: \"mat-datepicker-input\" }, providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ], exportAs: [\"matDatepickerInput\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ],\n host: {\n 'class': 'mat-datepicker-input',\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': '_datepicker ? _datepicker.id : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }]; }, propDecorators: { matDatepicker: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], dateFilter: [{\n type: Input,\n args: ['matDatepickerFilter']\n }] } });\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\nclass MatDatepickerToggleIcon {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerToggleIcon, selector: \"[matDatepickerToggleIcon]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerToggleIcon, decorators: [{\n type: Directive,\n args: [{\n selector: '[matDatepickerToggleIcon]',\n }]\n }] });\nclass MatDatepickerToggle {\n /** Whether the toggle button is disabled. */\n get disabled() {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n constructor(_intl, _changeDetectorRef, defaultTabIndex) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n ngOnChanges(changes) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n _open(event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n _watchStateChanges() {\n const datepickerStateChanged = this.datepicker ? this.datepicker.stateChanges : of();\n const inputStateChanged = this.datepicker && this.datepicker.datepickerInput\n ? this.datepicker.datepickerInput.stateChanges\n : of();\n const datepickerToggled = this.datepicker\n ? merge(this.datepicker.openedStream, this.datepicker.closedStream)\n : of();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerStateChanged, inputStateChanged, datepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerToggle, deps: [{ token: MatDatepickerIntl }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.1.1\", type: MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: { datepicker: [\"for\", \"datepicker\"], tabIndex: \"tabIndex\", ariaLabel: [\"aria-label\", \"ariaLabel\"], disabled: \"disabled\", disableRipple: \"disableRipple\" }, host: { listeners: { \"click\": \"_open($event)\" }, properties: { \"attr.tabindex\": \"null\", \"class.mat-datepicker-toggle-active\": \"datepicker && datepicker.opened\", \"class.mat-accent\": \"datepicker && datepicker.color === \\\"accent\\\"\", \"class.mat-warn\": \"datepicker && datepicker.color === \\\"warn\\\"\", \"attr.data-mat-calendar\": \"datepicker ? datepicker.id : null\" }, classAttribute: \"mat-datepicker-toggle\" }, queries: [{ propertyName: \"_customIcon\", first: true, predicate: MatDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: \"_button\", first: true, predicate: [\"button\"], descendants: true }], exportAs: [\"matDatepickerToggle\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n \\n \\n \\n\\n \\n\\n\", styles: [\".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color)}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color)}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\"], dependencies: [{ kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.1.1\", ngImport: i0, type: MatDatepickerToggle, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-toggle', host: {\n 'class': 'mat-datepicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its datepicker.\n '[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n }, exportAs: 'matDatepickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n \\n \\n \\n\\n \\n\\n\", styles: [\".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color)}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color)}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\"] }]\n }], ctorParameters: function () { return [{ type: MatDatepickerIntl }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }]; }, propDecorators: { datepicker: [{\n type: Input,\n args: ['for']\n }], tabIndex: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], disabled: [{\n type: Input\n }], disableRipple: [{\n type: Input\n }], _customIcon: [{\n type: ContentChild,\n args: [MatDatepickerToggleIcon]\n }], _button: [{\n type: ViewChild,\n args: ['button']\n }] } });\n\n// This file contains the `_computeAriaAccessibleName` function, which computes what the *expected*\n// ARIA accessible name would be for a given element. Implements a subset of ARIA specification\n// [Accessible Name and Description Computation 1.2](https://www.w3.org/TR/accname-1.2/).\n//\n// Specification accname-1.2 can be summarized by returning the result of the first method\n// available.\n//\n// 1. `aria-labelledby` attribute\n// ```\n// \n// \n// \n// ```\n// 2. `aria-label` attribute (e.g. ``)\n// 3. Label with `for`/`id`\n// ```\n// \n// \n// \n// ```\n// 4. `placeholder` attribute (e.g. ``)\n// 5. `title` attribute (e.g. ``)\n// 6. text content\n// ```\n// \n// \n// \n// ```\n/**\n * Computes the *expected* ARIA accessible name for argument element based on [accname-1.2\n * specification](https://www.w3.org/TR/accname-1.2/). Implements a subset of accname-1.2,\n * and should only be used for the Datepicker's specific use case.\n *\n * Intended use:\n * This is not a general use implementation. Only implements the parts of accname-1.2 that are\n * required for the Datepicker's specific use case. This function is not intended for any other\n * use.\n *\n * Limitations:\n * - Only covers the needs of `matStartDate` and `matEndDate`. Does not support other use cases.\n * - See NOTES's in implementation for specific details on what parts of the accname-1.2\n * specification are not implemented.\n *\n * @param element {HTMLInputElement} native <input/> element of `matStartDate` or\n * `matEndDate` component. Corresponds to the 'Root Element' from accname-1.2\n *\n * @return expected ARIA accessible name of argument <input/>\n */\nfunction _computeAriaAccessibleName(element) {\n return _computeAriaAccessibleNameInternal(element, true);\n}\n/**\n * Determine if argument node is an Element based on `nodeType` property. This function is safe to\n * use with server-side rendering.\n */\nfunction ssrSafeIsElement(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Determine if argument node is an HTMLInputElement based on `nodeName` property. This funciton is\n * safe to use with server-side rendering.\n */\nfunction ssrSafeIsHTMLInputElement(node) {\n return node.nodeName === 'INPUT';\n}\n/**\n * Determine if argument node is an HTMLTextAreaElement based on `nodeName` property. This\n * funciton is safe to use with server-side rendering.\n */\nfunction ssrSafeIsHTMLTextAreaElement(node) {\n return node.nodeName === 'TEXTAREA';\n}\n/**\n * Calculate the expected ARIA accessible name for given DOM Node. Given DOM Node may be either the\n * \"Root node\" passed to `_computeAriaAccessibleName` or \"Current node\" as result of recursion.\n *\n * @return the accessible name of argument DOM Node\n *\n * @param currentNode node to determine accessible name of\n * @param isDirectlyReferenced true if `currentNode` is the root node to calculate ARIA accessible\n * name of. False if it is a result of recursion.\n */\nfunction _computeAriaAccessibleNameInternal(currentNode, isDirectlyReferenced) {\n // NOTE: this differs from accname-1.2 specification.\n // - Does not implement Step 1. of accname-1.2: '''If `currentNode`'s role prohibits naming,\n // return the empty string (\"\")'''.\n // - Does not implement Step 2.A. of accname-1.2: '''if current node is hidden and not directly\n // referenced by aria-labelledby... return the empty string.'''\n // acc-name-1.2 Step 2.B.: aria-labelledby\n if (ssrSafeIsElement(currentNode) && isDirectlyReferenced) {\n const labelledbyIds = currentNode.getAttribute?.('aria-labelledby')?.split(/\\s+/g) || [];\n const validIdRefs = labelledbyIds.reduce((validIds, id) => {\n const elem = document.getElementById(id);\n if (elem) {\n validIds.push(elem);\n }\n return validIds;\n }, []);\n if (validIdRefs.length) {\n return validIdRefs\n .map(idRef => {\n return _computeAriaAccessibleNameInternal(idRef, false);\n })\n .join(' ');\n }\n }\n // acc-name-1.2 Step 2.C.: aria-label\n if (ssrSafeIsElement(currentNode)) {\n const ariaLabel = currentNode.getAttribute('aria-label')?.trim();\n if (ariaLabel) {\n return ariaLabel;\n }\n }\n // acc-name-1.2 Step 2.D. attribute or element that defines a text alternative\n //\n // NOTE: this differs from accname-1.2 specification.\n // Only implements Step 2.D. for `
\n
\n\n \n \n \n \n \n \n
\n
\n \n \n
\n
\n `, isInline: true, components: [{ type: ColorContrastSvgComponent, selector: \"[kendoColorContrastSvg]\", inputs: [\"wrapper\", \"hsva\", \"backgroundColor\"] }, { type: i2.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: SliderComponent, selector: \"kendo-slider\", inputs: [\"focusableId\", \"dragHandleTitle\", \"incrementTitle\", \"animate\", \"decrementTitle\", \"showButtons\", \"value\", \"tabIndex\"], exportAs: [\"kendoSlider\"] }, { type: ColorInputComponent, selector: \"kendo-colorinput\", inputs: [\"focusableId\", \"formatView\", \"tabindex\", \"value\", \"opacity\", \"disabled\", \"readonly\"], outputs: [\"valueChange\", \"tabOut\"] }, { type: ContrastComponent, selector: \"[kendoContrastTool]\", inputs: [\"value\", \"ratio\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i4.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorGradientComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorGradient',\n selector: 'kendo-colorgradient',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorGradientComponent)\n },\n ColorGradientLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorGradientLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorgradient'\n }\n ],\n template: `\n \n \n
\n
\n \n \n
\n
\n \n \n \n
\n\n \n \n \n \n \n \n
\n \n \n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorgradient']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], gradientId: [{\n type: HostBinding,\n args: ['attr.id']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], isControlInvalid: [{\n type: HostBinding,\n args: ['attr.aria-invalid']\n }], isDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], enterHandler: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }], escapeHandler: [{\n type: HostListener,\n args: ['keydown.escape', ['$event']]\n }], focusHandler: [{\n type: HostListener,\n args: ['focusin', ['$event']]\n }], id: [{\n type: Input\n }], opacity: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-readonly']\n }], clearButton: [{\n type: Input\n }], delay: [{\n type: Input\n }], value: [{\n type: Input\n }], contrastTool: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], format: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], gradientSliderStep: [{\n type: Input\n }], gradientSliderSmallStep: [{\n type: Input\n }], gradientDragHandle: [{\n type: ViewChild,\n args: ['gradientDragHandle']\n }], inputs: [{\n type: ViewChild,\n args: ['inputs']\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider']\n }], gradientWrapper: [{\n type: ViewChild,\n args: ['gradientWrapper']\n }], hsvRectangle: [{\n type: ViewChild,\n args: ['hsvRectangle']\n }] } });\n\n/**\n * @hidden\n */\nclass ColorPaletteLocalizationService extends LocalizationService {\n constructor(prefix, messageService, _rtl, flatColorPickerLocalization) {\n super(prefix, messageService, _rtl);\n this.flatColorPickerLocalization = flatColorPickerLocalization;\n }\n get(shortKey) {\n if (this.flatColorPickerLocalization) {\n return this.flatColorPickerLocalization.get(shortKey);\n }\n return super.get(shortKey);\n }\n}\nColorPaletteLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteLocalizationService, deps: [{ token: L10N_PREFIX }, { token: i1.MessageService, optional: true }, { token: RTL, optional: true }, { token: FlatColorPickerLocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteLocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteLocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: i1.MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }, { type: FlatColorPickerLocalizationService, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FlatColorPickerLocalizationService]\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ColorPaletteService {\n constructor() {\n this.colorRows = [];\n }\n setColorMatrix(palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (let start = 0; start < palette.length; start += columns) {\n const row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n }\n getCellCoordsFor(color) {\n if (!isPresent(color)) {\n return;\n }\n for (let row = 0; row < this.colorRows.length; row++) {\n for (let col = 0; col < this.colorRows[row].length; col++) {\n if (this.colorRows[row][col] === color) {\n return { row, col };\n }\n }\n }\n }\n getColorAt(cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n }\n getNextCell(current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n const row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n const col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row, col };\n }\n clampIndex(index, max) {\n const minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n}\nColorPaletteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColorPaletteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteService, decorators: [{\n type: Injectable\n }] });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst DEFAULT_TILE_SIZE = 24;\nconst DEFAULT_COLUMNS_COUNT = 10;\nconst DEFAULT_PRESET = 'office';\nconst DEFAULT_ACCESSIBLE_PRESET = 'accessible';\nlet serial$2 = 0;\n/**\n * The ColorPalette component provides a set of predefined palette presets and enables you to implement a custom color palette.\n * The ColorPalette is independently used by `kendo-colorpicker` and can be directly added to the page.\n */\nclass ColorPaletteComponent {\n constructor(host, service, cdr, renderer, localizationService, ngZone) {\n this.host = host;\n this.service = service;\n this.cdr = cdr;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n /**\n * @hidden\n */\n this.role = 'grid';\n /**\n * @hidden\n */\n this.id = `k-colorpalette-${serial$2++}`;\n /**\n * Specifies the output format of the ColorPaletteComponent.\n * The input value may be in a different format. However, it will be parsed into the output `format`\n * after the component processes it.\n *\n * The supported values are:\n * * (Default) `hex`\n * * `rgba`\n * * `name`\n */\n this.format = 'hex';\n /**\n * Sets the disabled state of the ColorPalette. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_colorpalette#toc-managing-the-colorpalette-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the ColorPalette.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the size of a color cell.\n *\n * The possible values are:\n * * (Default) `tileSize = 24`\n * * `{ width: number, height: number }`\n */\n this.tileSize = { width: DEFAULT_TILE_SIZE, height: DEFAULT_TILE_SIZE };\n /**\n * Fires each time the color selection is changed.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user selects a cell with the mouse or presses `Enter`.\n *\n * @hidden\n */\n this.cellSelection = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.uniqueId = guid();\n this._tabindex = 0;\n this.subs = new Subscription();\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get activeDescendant() {\n return this.activeCellId;\n }\n ;\n /**\n * @hidden\n */\n get paletteId() {\n return this.id;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the number of columns that will be displayed.\n * Defaults to `10`.\n */\n set columns(value) {\n const minColumnsCount = 1;\n this._columns = value > minColumnsCount ? value : minColumnsCount;\n }\n get columns() {\n return this._columns;\n }\n /**\n * The color palette that will be displayed.\n *\n * The supported values are:\n * * The name of the predefined palette preset (for example, `office`, `basic`, and `apex`).\n * * A string with comma-separated colors.\n * * A string array.\n */\n set palette(value) {\n if (!isPresent(value)) {\n value = DEFAULT_PRESET;\n }\n if (typeof value === 'string' && isPresent(PALETTEPRESETS[value])) {\n this.columns = this.columns || PALETTEPRESETS[value].columns;\n value = PALETTEPRESETS[value].colors;\n }\n const colors = (typeof value === 'string') ? value.split(',') : value;\n this._palette = colors.map(color => parseColor(color, this.format, false, false));\n }\n get palette() {\n return this._palette;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * @hidden\n */\n get tileLayout() {\n if (typeof this.tileSize !== 'number') {\n return this.tileSize;\n }\n return { width: this.tileSize, height: this.tileSize };\n }\n /**\n * @hidden\n */\n get colorRows() {\n return this.service.colorRows;\n }\n /**\n * @hidden\n */\n get hostTabindex() { return this.tabindex; }\n /**\n * @hidden\n */\n get disabledClass() { return this.disabled; }\n /**\n * @hidden\n */\n get readonlyAttribute() { return this.readonly; }\n ngOnInit() {\n if (this.colorRows.length === 0) {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET : DEFAULT_ACCESSIBLE_PRESET;\n this.palette = this.palette || defaultPreset;\n this.setRows();\n }\n const elem = this.host.nativeElement;\n this.subs.add(this.renderer.listen(elem, 'keydown', event => this.handleKeydown(event)));\n this.subs.add(this.renderer.listen(elem, 'focus', () => this.handleFocus()));\n this.subs.add(this.renderer.listen(elem, 'blur', () => this.handleHostBlur()));\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n if (this.value) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.selectCell(this.value);\n });\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n ngOnChanges(changes) {\n if (changes['palette'] || changes['columns']) {\n this.setRows();\n }\n if (changes['palette'] || changes['value'] || changes['columns']) {\n this.selectCell(this.value);\n this.setHostElementAriaLabel();\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event) {\n const isRTL = this.direction === 'rtl';\n switch (event.keyCode) {\n case Keys.ArrowDown:\n this.handleCellNavigation(0, 1);\n break;\n case Keys.ArrowUp:\n this.handleCellNavigation(0, -1);\n break;\n case Keys.ArrowRight:\n this.handleCellNavigation(isRTL ? -1 : 1, 0);\n break;\n case Keys.ArrowLeft:\n this.handleCellNavigation(isRTL ? 1 : -1, 0);\n break;\n case Keys.Enter:\n this.handleEnter();\n break;\n default: return;\n }\n event.preventDefault();\n }\n /**\n * @hidden\n */\n handleFocus() {\n if (!this.focusInComponent) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleHostBlur() {\n this.notifyNgTouched();\n this.handleCellFocusOnBlur();\n }\n /**\n * @hidden\n */\n handleCellSelection(value, focusedCell) {\n if (this.readonly) {\n return;\n }\n this.selectedCell = focusedCell;\n this.focusedCell = this.selectedCell;\n this.focusInComponent = true;\n const parsedColor = parseColor(value, this.format, false, false);\n this.cellSelection.emit(parsedColor);\n this.handleValueChange(parsedColor);\n if (this.selection !== parsedColor) {\n this.selection = parsedColor;\n this.selectionChange.emit(parsedColor);\n }\n if (focusedCell) {\n this.activeCellId = `k-${this.selectedCell.row}-${this.selectedCell.col}-${this.uniqueId}`;\n }\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.selectCell(value);\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n focus() {\n this.host.nativeElement.focus();\n if (!this.focusedCell && !this.readonly && !this.disabled) {\n this.focusedCell = {\n row: 0,\n col: 0\n };\n this.activeCellId = `k-${this.focusedCell.row}-${this.focusedCell.col}-${this.uniqueId}`;\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Clears the color value of the ColorPalette.\n */\n reset() {\n this.focusedCell = null;\n if (isPresent(this.value)) {\n this.handleValueChange(undefined);\n }\n this.selectedCell = undefined;\n }\n handleValueChange(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n handleCellFocusOnBlur() {\n this.focusInComponent = false;\n this.focusedCell = this.selectedCell;\n }\n selectCell(value) {\n const parsedColor = parseColor(value, 'hex');\n this.selectedCell = this.service.getCellCoordsFor(parsedColor);\n this.focusedCell = this.selectedCell;\n }\n setRows() {\n if (!isPresent(this.palette)) {\n return;\n }\n this.columns = this.columns || DEFAULT_COLUMNS_COUNT;\n this.service.setColorMatrix(this.palette, this.columns);\n }\n handleCellNavigation(horizontalStep, verticalStep) {\n if (this.readonly) {\n return;\n }\n this.focusedCell = this.service.getNextCell(this.focusedCell, horizontalStep, verticalStep);\n this.focusInComponent = true;\n if (this.focusedCell) {\n this.activeCellId = `k-${this.focusedCell.row}-${this.focusedCell.col}-${this.uniqueId}`;\n }\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format);\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', `${this.value ? parsed : this.localizationService.get('colorPaletteNoColor')}`);\n }\n handleEnter() {\n if (!isPresent(this.focusedCell)) {\n return;\n }\n const selectedColor = this.service.getColorAt(this.focusedCell);\n this.handleCellSelection(selectedColor, this.focusedCell);\n }\n}\nColorPaletteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteComponent, deps: [{ token: i0.ElementRef }, { token: ColorPaletteService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nColorPaletteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: { id: \"id\", format: \"format\", value: \"value\", columns: \"columns\", palette: \"palette\", tabindex: \"tabindex\", disabled: \"disabled\", readonly: \"readonly\", tileSize: \"tileSize\" }, outputs: { selectionChange: \"selectionChange\", valueChange: \"valueChange\", cellSelection: \"cellSelection\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"attr.role\": \"this.role\", \"attr.aria-activedescendant\": \"this.activeDescendant\", \"attr.id\": \"this.paletteId\", \"class.k-readonly\": \"this.readonly\", \"attr.tabindex\": \"this.hostTabindex\", \"class.k-colorpalette\": \"this.hostClasses\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.readonlyAttribute\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ], exportAs: [\"kendoColorPalette\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n
\n
\n `, isInline: true, directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPaletteComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPalette',\n selector: 'kendo-colorpalette',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPaletteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPaletteComponent)\n },\n ColorPaletteService,\n ColorPaletteLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPaletteLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpalette'\n }\n ],\n template: `\n \n \n \n \n \n \n \n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ColorPaletteService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], activeDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], paletteId: [{\n type: HostBinding,\n args: ['attr.id']\n }], id: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], columns: [{\n type: Input\n }], palette: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], readonly: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-readonly']\n }], tileSize: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], cellSelection: [{\n type: Output\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpalette']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], readonlyAttribute: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }] } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nclass FlatColorPickerHeaderComponent {\n constructor(localizationService, renderer) {\n this.localizationService = localizationService;\n this.renderer = renderer;\n this.hostClasses = true;\n this.innerTabIndex = -1;\n this.viewChange = new EventEmitter();\n this.valuePaneClick = new EventEmitter();\n this.clearButtonClick = new EventEmitter();\n this.tabOut = new EventEmitter();\n this.dropletSliderIcon = dropletSliderIcon;\n this.paletteIcon = paletteIcon;\n this.dropletSlashIcon = dropletSlashIcon;\n }\n ngAfterViewInit() {\n if (this.viewButtonsCollection.length > 0) {\n this.viewButtonsCollection.forEach((button) => {\n const buttonElem = button.nativeElement;\n const isViewActive = buttonElem.getAttribute('aria-pressed') === 'true';\n if (isViewActive) {\n this.renderer.addClass(buttonElem, 'k-selected');\n }\n });\n }\n }\n onViewButtonClick(view) {\n this.activeView = view;\n this.viewChange.emit(view);\n }\n get viewButtons() {\n return this.views && this.views.indexOf('gradient') >= 0 && this.views.indexOf('palette') >= 0;\n }\n getViewButtonIcon(view) {\n return view === 'gradient' ? 'color-canvas' : 'palette';\n }\n getViewButtonsSVGIcon(view) {\n return view === 'gradient' ? this.dropletSliderIcon : this.paletteIcon;\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n onHeaderTabOut(ev, index) {\n if (index === 0) {\n ev.preventDefault();\n this.tabOut.emit(ev);\n }\n }\n}\nFlatColorPickerHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerHeaderComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: { clearButton: \"clearButton\", activeView: \"activeView\", views: \"views\", preview: \"preview\", innerTabIndex: \"innerTabIndex\", value: \"value\", selection: \"selection\" }, outputs: { viewChange: \"viewChange\", valuePaneClick: \"valuePaneClick\", clearButtonClick: \"clearButtonClick\", tabOut: \"tabOut\" }, host: { properties: { \"class.k-coloreditor-header\": \"this.hostClasses\", \"class.k-hstack\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"clearButtonElement\", first: true, predicate: [\"clearButton\"], descendants: true, read: ElementRef }, { propertyName: \"viewButtonsCollection\", predicate: [\"viewButtons\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n
\n
\n \n
\n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n `, isInline: true, components: [{ type: i2.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerHeaderComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerHeader]',\n template: `\n
\n
\n \n
\n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-header']\n }, {\n type: HostBinding,\n args: ['class.k-hstack']\n }], clearButton: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], preview: [{\n type: Input\n }], innerTabIndex: [{\n type: Input\n }], value: [{\n type: Input\n }], selection: [{\n type: Input\n }], viewChange: [{\n type: Output\n }], valuePaneClick: [{\n type: Output\n }], clearButtonClick: [{\n type: Output\n }], tabOut: [{\n type: Output\n }], viewButtonsCollection: [{\n type: ViewChildren,\n args: ['viewButtons', { read: ElementRef }]\n }], clearButtonElement: [{\n type: ViewChild,\n args: ['clearButton', { read: ElementRef }]\n }] } });\n\n/**\n * @hidden\n */\nclass FlatColorPickerActionButtonsComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClasses = true;\n this.innerTabIndex = -1;\n this.actionButtonClick = new EventEmitter();\n this.tabOut = new EventEmitter();\n }\n getText(text) {\n return this.localizationService.get(text);\n }\n onActionButtonClick(type, ev) {\n const args = {\n target: type,\n originalEvent: ev\n };\n this.actionButtonClick.emit(args);\n }\n}\nFlatColorPickerActionButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerActionButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", inputs: { innerTabIndex: \"innerTabIndex\" }, outputs: { actionButtonClick: \"actionButtonClick\", tabOut: \"tabOut\" }, host: { properties: { \"class.k-coloreditor-footer\": \"this.hostClasses\", \"class.k-actions\": \"this.hostClasses\", \"class.k-actions-horizontal\": \"this.hostClasses\" } }, viewQueries: [{ propertyName: \"firstButton\", first: true, predicate: [\"first\"], descendants: true, read: ElementRef }, { propertyName: \"lastButton\", first: true, predicate: [\"last\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n \n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerActionButtonsComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoFlatColorPickerActionButtons]',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-coloreditor-footer']\n }, {\n type: HostBinding,\n args: ['class.k-actions']\n }, {\n type: HostBinding,\n args: ['class.k-actions-horizontal']\n }], innerTabIndex: [{\n type: Input\n }], actionButtonClick: [{\n type: Output\n }], tabOut: [{\n type: Output\n }], firstButton: [{\n type: ViewChild,\n args: ['first', { read: ElementRef }]\n }], lastButton: [{\n type: ViewChild,\n args: ['last', { read: ElementRef }]\n }] } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Represents the [Kendo UI FlatColorPicker component for Angular]({% slug overview_flatcolorpicker %}).\n *\n * The FlatColorPicker is a powerful tool which allows the user to choose colors through palettes with predefined sets of colors and\n * through a gradient that renders an hsv canvas. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass FlatColorPickerComponent {\n constructor(host, service, localizationService, cdr, renderer, ngZone, injector) {\n this.host = host;\n this.service = service;\n this.localizationService = localizationService;\n this.cdr = cdr;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.injector = injector;\n this.hostClasses = true;\n this.ariaRole = 'textbox';\n /**\n * Sets the read-only state of the FlatColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the FlatColorPicker. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_flatcolorpicker#toc-managing-the-flatcolorpicker-disabled-state-in-reactive-forms).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the FlatColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the FlatColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and a color preview pane.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * initial state i.e. to the current value.\n *\n * @default true\n */\n this.preview = true;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Specifies the views that will be rendered. Default value is gradient and palette.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Fires each time the component value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * The event is emitted on preview pane or on 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * @hidden\n * Fires each time the clear button is clicked.\n */\n this.clearButtonClick = new EventEmitter();\n /**\n * @hidden\n */\n this.actionButtonClick = new EventEmitter();\n this._tabindex = 0;\n this._gradientSettings = {\n opacity: true,\n delay: 0,\n gradientSliderStep: DRAGHANDLE_MOVE_SPEED,\n gradientSliderSmallStep: DRAGHANDLE_MOVE_SPEED_SMALL_STEP\n };\n this._paletteSettings = {};\n this.subscriptions = new Subscription();\n this.internalNavigation = false;\n this.notifyNgChanged = () => { };\n this.notifyNgTouched = () => { };\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get hostTabindex() {\n return this.tabindex?.toString() || '0';\n }\n get isControlInvalid() {\n return (this.control?.invalid)?.toString();\n }\n get isDisabled() {\n return this.disabled?.toString() || undefined;\n }\n /**\n * @hidden\n */\n enterHandler(event) {\n if (event.target !== this.host.nativeElement) {\n return;\n }\n event.preventDefault();\n this.internalNavigation = true;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.firstFocusable?.focus());\n }\n /**\n * @hidden\n */\n escapeHandler() {\n this.internalNavigation = false;\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n focusHandler(ev) {\n this.internalNavigation = ev.target !== this.host.nativeElement;\n }\n /**\n * Specifies the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n if (isPresent(value)) {\n const tabindex = Number(value);\n this._tabindex = !isNaN(tabindex) ? tabindex : 0;\n }\n else {\n // Allows removal of the tabindex attribute\n this._tabindex = value;\n }\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * Configures the gradient view.\n */\n set gradientSettings(value) {\n Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Configures the palette view.\n */\n set paletteSettings(value) {\n Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n /**\n * @hidden\n */\n get innerTabIndex() {\n return this.internalNavigation ? 0 : -1;\n }\n /**\n * @hidden\n */\n get firstFocusable() {\n if (this.headerHasContent) {\n return this.headerElement.nativeElement.querySelector('.k-button');\n }\n return this.activeView === 'gradient' ? this.gradient : this.palette;\n }\n ngOnInit() {\n this.selection = this.value;\n this.control = this.injector.get(NgControl, null);\n this._paletteSettings = this.service.getPaletteSettings(this._paletteSettings, this.format);\n this.setActiveView();\n }\n ngAfterViewInit() {\n this.setHostElementAriaLabel();\n this.initDomEvents();\n this.setSizingVariables();\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.removeGradientAttributes());\n }\n ngOnChanges(changes) {\n if (isChanged('value', changes)) {\n this.selection = this.value;\n this.setHostElementAriaLabel();\n }\n if (isChanged('paletteSettings', changes)) {\n this.setSizingVariables();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n focusFirstHeaderButton() {\n if (this.gradientElement.nativeElement === document.activeElement) {\n if (this.headerHasContent && !this.preview) {\n const firstHeaderButton = this.headerElement.nativeElement.querySelector('.k-button');\n firstHeaderButton.focus();\n }\n }\n }\n /**\n * @hidden\n */\n lastFocusable(event) {\n if (this.preview) {\n this.footer.lastButton.nativeElement.focus();\n return;\n }\n event.stopImmediatePropagation();\n const gradient = this.gradientElement?.nativeElement;\n const palette = this.palette?.host.nativeElement;\n this.activeView === 'gradient' ? gradient.focus() : palette.focus();\n }\n /**\n * @hidden\n */\n onTab(ev) {\n const { shiftKey } = ev;\n const nextTabStop = this.preview ? this.footer.firstButton.nativeElement : this.headerHasContent ? findFocusableChild(this.headerElement.nativeElement) : null;\n const previousTabStop = this.headerHasContent ? findFocusableChild(this.headerElement.nativeElement) : this.preview ? this.footer.lastButton.nativeElement : null;\n if (!nextTabStop && !previousTabStop) {\n return;\n }\n ev.preventDefault();\n // eslint-disable-next-line no-unused-expressions\n shiftKey ? previousTabStop?.focus() : nextTabStop?.focus();\n }\n /**\n * @hidden\n */\n get headerHasContent() {\n return this.preview || this.views.length > 1 || this.clearButton;\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Focuses the wrapper of the FlatColorPicker.\n */\n focus() {\n if (this.disabled || this.focused) {\n return;\n }\n this.host.nativeElement.focus();\n this.focused = true;\n }\n /**\n * Blurs the wrapper of the FlatColorPicker.\n */\n blur() {\n if (!this.focused) {\n return;\n }\n this.notifyNgTouched();\n this.host.nativeElement.blur();\n this.focused = false;\n }\n /**\n * Clears the value of the FlatColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this.value = undefined;\n this.notifyNgChanged(undefined);\n this.setHostElementAriaLabel();\n }\n /**\n * @hidden\n */\n onViewChange(view) {\n if (this.activeView === view) {\n return;\n }\n this.activeView = view;\n this.activeViewChange.emit(view);\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this[this.activeView]?.focus();\n });\n });\n if (this.activeView === 'gradient') {\n this.removeGradientAttributes();\n }\n }\n /**\n * @hidden\n */\n onClearButtonClick() {\n this.resetInnerComponentValue();\n this.clearButtonClick.emit();\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n // eslint-disable-next-line no-unused-expressions\n this.preview ? this.changeCurrentValue(color) : this.setFlatColorPickerValue(color);\n }\n /**\n * @hidden\n */\n onAction(ev) {\n // eslint-disable-next-line no-unused-expressions\n ev.target === 'apply' ? this.setFlatColorPickerValue(this.selection) : this.resetSelection(ev.originalEvent);\n this.actionButtonClick.emit();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n resetSelection(ev) {\n const eventArgs = new ColorPickerCancelEvent(ev);\n this.cancel.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.selection = this.value;\n }\n this.notifyNgTouched();\n }\n setHostElementAriaLabel() {\n const parsed = parseColor(this.value, this.format, this.gradientSettings.opacity);\n const ariaLabelValue = `${this.value ? parsed : this.localizationService.get('flatColorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n setSizingVariables() {\n const paletteTileSize = this.service.paletteTileLayout(this.paletteSettings.tileSize);\n const element = this.host.nativeElement.querySelector('.k-coloreditor-views.k-vstack');\n const cssProperties = `\n --kendo-color-preview-columns: ${this.paletteSettings.columns};\n --kendo-color-preview-width: ${paletteTileSize.width}px;\n --kendo-color-preview-height: ${paletteTileSize.height}px;\n `;\n this.renderer.setProperty(element, 'style', cssProperties);\n }\n changeCurrentValue(color) {\n this.selection = color;\n this.notifyNgTouched();\n }\n resetInnerComponentValue() {\n this.selection = null;\n if (this.gradient) {\n this.gradient.reset();\n return;\n }\n this.palette.reset();\n }\n setFlatColorPickerValue(color) {\n if (this.value === color) {\n return;\n }\n this.value = color;\n this.valueChange.emit(color);\n this.notifyNgChanged(color);\n this.setHostElementAriaLabel();\n }\n setActiveView() {\n if (!isPresent(this.activeView)) {\n this.activeView = this.views[0];\n return;\n }\n if (isDevMode() && this.views.indexOf(this.activeView) === -1) {\n throw new Error(\"Invalid configuration: The current activeView is not present in the views collection\");\n }\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n const hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focus', () => {\n this.focused = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'blur', () => {\n this.focused = false;\n this.notifyNgTouched();\n }));\n });\n }\n removeGradientAttributes() {\n this.gradientElement && this.renderer.removeAttribute(this.gradientElement.nativeElement, 'role');\n this.gradientElement && this.renderer.removeAttribute(this.gradientElement.nativeElement, 'aria-label');\n }\n}\nFlatColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: FlatColorPickerService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });\nFlatColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: { readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", tabindex: \"tabindex\", clearButton: \"clearButton\", preview: \"preview\", actionsLayout: \"actionsLayout\", activeView: \"activeView\", views: \"views\", gradientSettings: \"gradientSettings\", paletteSettings: \"paletteSettings\" }, outputs: { valueChange: \"valueChange\", cancel: \"cancel\", activeViewChange: \"activeViewChange\", clearButtonClick: \"clearButtonClick\", actionButtonClick: \"actionButtonClick\" }, host: { listeners: { \"keydown.enter\": \"enterHandler($event)\", \"keydown.escape\": \"escapeHandler()\", \"focusin\": \"focusHandler($event)\" }, properties: { \"class.k-flatcolorpicker\": \"this.hostClasses\", \"class.k-coloreditor\": \"this.hostClasses\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-disabled\": \"this.isDisabled\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.dir\": \"this.direction\", \"attr.tabindex\": \"this.hostTabindex\", \"attr.role\": \"this.ariaRole\", \"attr.aria-invalid\": \"this.isControlInvalid\", \"class.k-readonly\": \"this.readonly\" } }, providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"headerElement\", first: true, predicate: [\"header\"], descendants: true, read: ElementRef }, { propertyName: \"gradient\", first: true, predicate: [\"gradient\"], descendants: true }, { propertyName: \"gradientElement\", first: true, predicate: [\"gradient\"], descendants: true, read: ElementRef }, { propertyName: \"palette\", first: true, predicate: [\"palette\"], descendants: true }, { propertyName: \"footer\", first: true, predicate: [\"footer\"], descendants: true }], exportAs: [\"kendoFlatColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
\n
\n \n \n
\n
\n`, isInline: true, components: [{ type: FlatColorPickerHeaderComponent, selector: \"[kendoFlatColorPickerHeader]\", inputs: [\"clearButton\", \"activeView\", \"views\", \"preview\", \"innerTabIndex\", \"value\", \"selection\"], outputs: [\"viewChange\", \"valuePaneClick\", \"clearButtonClick\", \"tabOut\"] }, { type: ColorGradientComponent, selector: \"kendo-colorgradient\", inputs: [\"id\", \"opacity\", \"disabled\", \"readonly\", \"clearButton\", \"delay\", \"value\", \"contrastTool\", \"tabindex\", \"format\", \"gradientSliderStep\", \"gradientSliderSmallStep\"], outputs: [\"valueChange\"], exportAs: [\"kendoColorGradient\"] }, { type: ColorPaletteComponent, selector: \"kendo-colorpalette\", inputs: [\"id\", \"format\", \"value\", \"columns\", \"palette\", \"tabindex\", \"disabled\", \"readonly\", \"tileSize\"], outputs: [\"selectionChange\", \"valueChange\", \"cellSelection\"], exportAs: [\"kendoColorPalette\"] }, { type: FlatColorPickerActionButtonsComponent, selector: \"[kendoFlatColorPickerActionButtons]\", inputs: [\"innerTabIndex\"], outputs: [\"actionButtonClick\", \"tabOut\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FlatColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoFlatColorPicker',\n selector: 'kendo-flatcolorpicker',\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => FlatColorPickerComponent)\n },\n FlatColorPickerService,\n FlatColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: FlatColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.flatcolorpicker'\n }\n ],\n template: `\n \n \n
\n
\n \n \n
\n
\n`\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FlatColorPickerService }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-flatcolorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-coloreditor']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], isControlInvalid: [{\n type: HostBinding,\n args: ['attr.aria-invalid']\n }], isDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], enterHandler: [{\n type: HostListener,\n args: ['keydown.enter', ['$event']]\n }], escapeHandler: [{\n type: HostListener,\n args: ['keydown.escape']\n }], focusHandler: [{\n type: HostListener,\n args: ['focusin', ['$event']]\n }], readonly: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-readonly']\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], activeView: [{\n type: Input\n }], views: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], cancel: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], clearButtonClick: [{\n type: Output\n }], actionButtonClick: [{\n type: Output\n }], header: [{\n type: ViewChild,\n args: ['header']\n }], headerElement: [{\n type: ViewChild,\n args: ['header', { read: ElementRef }]\n }], gradient: [{\n type: ViewChild,\n args: ['gradient']\n }], gradientElement: [{\n type: ViewChild,\n args: ['gradient', { read: ElementRef }]\n }], palette: [{\n type: ViewChild,\n args: ['palette']\n }], footer: [{\n type: ViewChild,\n args: ['footer']\n }] } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst DOM_FOCUS_EVENTS = ['focus', 'blur'];\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\n/**\n * @hidden\n */\nlet nextColorPickerId = 0;\n/**\n * Represents the [Kendo UI ColorPicker component for Angular]({% slug overview_colorpicker %}).\n *\n * The ColorPicker is a powerful tool for choosing colors from Gradient and Palette views\n * which are rendered in its popup. It supports previewing the selected color, reverting it to its previous state or clearing it completely.\n */\nclass ColorPickerComponent {\n constructor(host, popupService, cdr, localizationService, ngZone, renderer, injector) {\n this.host = host;\n this.popupService = popupService;\n this.cdr = cdr;\n this.localizationService = localizationService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.injector = injector;\n this.hostClasses = true;\n this.role = 'combobox';\n this.hasPopup = 'dialog';\n /**\n * Specifies the views that will be rendered in the popup.\n * By default both the gradient and palette views will be rendered.\n */\n this.views = ['gradient', 'palette'];\n /**\n * Sets the read-only state of the ColorPicker.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the ColorPicker. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_colorpicker#toc-managing-the-colorpicker-disabled-state-in-reactive-forms).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the output format of the ColorPicker.\n *\n * If the input value is in a different format, it will be parsed into the specified output `format`.\n *\n * The supported values are:\n * * `rgba` (default)\n * * `hex`\n */\n this.format = 'rgba';\n /**\n * Specifies whether the ColorPicker should display a 'Clear color' button.\n *\n * @default true\n */\n this.clearButton = true;\n /**\n * Displays `Apply` and `Cancel` action buttons and color preview panes.\n *\n * When enabled, the component value will not change immediately upon\n * color selection, but only after the `Apply` button is clicked.\n *\n * The `Cancel` button reverts the current selection to its\n * previous state i.e. to the current value.\n *\n * @default false\n */\n this.preview = false;\n /**\n * Configures the layout of the `Apply` and `Cancel` action buttons.\n *\n * The possible values are:\n * * `start`\n * * `center`\n * * `end` (default)\n * * `stretch`\n */\n this.actionsLayout = 'end';\n /**\n * Fires each time the value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time ColorPicker is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ColorPicker is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user cancels the current color selection.\n *\n * Fires on preview pane or 'Cancel' button click.\n */\n this.cancel = new EventEmitter();\n /**\n * Fires each time the left side of the ColorPicker wrapper is clicked.\n * The event is triggered regardless of whether a ColorPicker icon is set or not.\n *\n * The [ActiveColorClickEvent]({% slug api_inputs_activecolorclickevent %}) event provides the option to prevent the popup opening.\n */\n this.activeColorClick = new EventEmitter();\n /**\n * @hidden\n * Fires each time the clear button is clicked.\n */\n this.clearButtonClick = new EventEmitter();\n /**\n * Fires each time the view is about to change.\n * Used to provide a two-way binding for the `activeView` property.\n */\n this.activeViewChange = new EventEmitter();\n /**\n * Indicates whether the ColorPicker wrapper is focused.\n */\n this.isFocused = false;\n /**\n * @hidden\n */\n this.arrowDownIcon = caretAltDownIcon;\n this._tabindex = 0;\n this._popupSettings = { animate: true };\n this._paletteSettings = {};\n this._gradientSettings = { opacity: true, delay: 0 };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this.subscriptions = new Subscription();\n this.popupSubs = new Subscription();\n this.notifyNgTouched = () => { };\n this.notifyNgChanged = () => { };\n this.domFocusListener = (event) => event.stopImmediatePropagation();\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.colorPickerId = nextColorPickerId++;\n }\n get focusedClass() {\n return this.isFocused;\n }\n get disabledClass() {\n return this.disabled;\n }\n get ariaReadonly() {\n return this.readonly;\n }\n get ariaExpanded() {\n return this.isOpen;\n }\n get hostTabindex() {\n return this.tabindex;\n }\n get isControlInvalid() {\n return (this.control?.invalid)?.toString();\n }\n /**\n * @hidden\n */\n set view(view) {\n this.views = [view];\n }\n get view() {\n return (this.views && this.views.length > 0) ? this.views[0] : null;\n }\n /**\n * Specifies the value of the initially selected color.\n */\n set value(value) {\n this._value = parseColor(value, this.format, this.gradientSettings.opacity);\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the ColorPicker.\n */\n set popupSettings(value) {\n this._popupSettings = Object.assign(this._popupSettings, value);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Configures the palette that is displayed in the ColorPicker popup.\n */\n set paletteSettings(value) {\n this._paletteSettings = Object.assign(this._paletteSettings, value);\n }\n get paletteSettings() {\n return this._paletteSettings;\n }\n /**\n * Configures the gradient that is displayed in the ColorPicker popup.\n */\n set gradientSettings(value) {\n this._gradientSettings = Object.assign(this._gradientSettings, value);\n }\n get gradientSettings() {\n return this._gradientSettings;\n }\n /**\n * Defines an SVGIcon to be rendered within the button.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n if (isDevMode() && icon && this.icon && this.iconClass) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * The size property specifies the padding of the ColorPicker internal elements\n * ([see example]({% slug appearance_colorpicker %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * The fillMode property specifies the background and border styles of the ColorPicker\n * ([see example]({% slug appearance_colorpicker %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.handleClasses(newFillMode, 'fillMode');\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Indicates whether the ColorPicker popup is open.\n */\n get isOpen() {\n return isPresent(this.popupRef);\n }\n /**\n * @hidden\n */\n get customIconStyles() {\n if (this.iconClass) {\n let parsedIconClass = '';\n parseCSSClassNames(this.iconClass).forEach(iconClass => {\n parsedIconClass += iconClass + ' ';\n });\n return parsedIconClass.slice(0, -1);\n }\n return '';\n }\n /**\n * @hidden\n */\n get iconStyles() {\n if (this.icon && !this.iconClass) {\n return `${this.icon}`;\n }\n return '';\n }\n ngOnInit() {\n const defaultPreset = (this.format !== 'name') ? DEFAULT_PRESET$1 : DEFAULT_ACCESSIBLE_PRESET$1;\n const settingsPalette = this._paletteSettings.palette;\n const presetColumns = typeof settingsPalette === 'string' && PALETTEPRESETS[settingsPalette] ?\n PALETTEPRESETS[settingsPalette].columns :\n undefined;\n this._paletteSettings = {\n palette: settingsPalette || defaultPreset,\n tileSize: this._paletteSettings.tileSize || 24,\n columns: this._paletteSettings.columns || presetColumns || 10\n };\n this.handleHostId();\n this.renderer.setAttribute(this.host.nativeElement, 'aria-controls', `k-colorpicker-popup-${this.colorPickerId}`);\n this.control = this.injector.get(NgControl, null);\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded', 'fillMode'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n this.setHostElementAriaLabel();\n this.initDomEvents();\n }\n ngOnChanges(changes) {\n if (changes.format && changes.format.currentValue === 'name') {\n this.activeView = 'palette';\n }\n if (this.activeView === 'gradient' && this.gradientSettings.opacity) {\n this.format = 'rgba';\n this.value = parseColor(this.value, this.format, this.gradientSettings.opacity);\n }\n if (isChanged('value', changes)) {\n this.setHostElementAriaLabel();\n }\n }\n ngOnDestroy() {\n this.closePopup();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n this.handleDomEvents('remove', DOM_FOCUS_EVENTS);\n }\n /**\n * @hidden\n */\n handleCancelEvent(ev) {\n this.cancel.emit(ev);\n }\n /**\n * @hidden\n */\n togglePopup() {\n this.focus();\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * @hidden\n */\n handleWrapperClick(event) {\n if (this.disabled) {\n return;\n }\n this.focus();\n if (closest$1(event.target, (element) => element === this.activeColor.nativeElement)) {\n const event = new ActiveColorClickEvent(this.value);\n this.activeColorClick.emit(event);\n if (!event.isOpenPrevented() || this.isOpen) {\n this.toggleWithEvents(!this.isOpen);\n }\n return;\n }\n this.toggleWithEvents(!this.isOpen);\n }\n /**\n * Focuses the wrapper of the ColorPicker.\n */\n focus() {\n this.isFocused = true;\n this.host.nativeElement.focus();\n }\n /**\n * @hidden\n */\n handleWrapperFocus() {\n if (this.isFocused) {\n return;\n }\n this.ngZone.run(() => {\n this.focus();\n this.onFocus.emit();\n });\n }\n /**\n * Blurs the ColorPicker.\n */\n blur() {\n this.isFocused = false;\n this.host.nativeElement.blur();\n this.notifyNgTouched();\n }\n /**\n * @hidden\n */\n handleWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.ngZone.run(() => {\n this.onBlur.emit();\n this.isFocused = false;\n });\n }\n /**\n * Clears the value of the ColorPicker.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this._value = undefined;\n this.setHostElementAriaLabel();\n this.notifyNgChanged(undefined);\n }\n /**\n * Toggles the popup of the ColorPicker.\n * Does not trigger the `open` and `close` events of the component.\n *\n * @param open An optional parameter. Specifies whether the popup will be opened or closed.\n */\n toggle(open) {\n if (this.disabled || this.readonly) {\n return;\n }\n this.cdr.markForCheck();\n this.closePopup();\n open = isPresent(open) ? open : !this.isOpen;\n if (open) {\n this.openPopup();\n this.focusFirstElement();\n }\n }\n /**\n * @hidden\n */\n handleValueChange(color) {\n const parsedColor = parseColor(color, this.format, this.gradientSettings.opacity);\n const valueChange = parsedColor !== this.value;\n if (valueChange) {\n this.value = parsedColor;\n this.valueChange.emit(parsedColor);\n this.setHostElementAriaLabel();\n this.notifyNgChanged(parsedColor);\n }\n }\n /**\n * @hidden\n */\n handlePopupBlur(event) {\n if (this.popupBlurInvalid(event)) {\n return;\n }\n this.isFocused = false;\n this.onBlur.emit();\n this.notifyNgTouched();\n this.toggleWithEvents(false);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n handleWrapperKeyDown(event) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.Enter) {\n event.preventDefault();\n this.ngZone.run(() => {\n this.toggleWithEvents(true);\n });\n }\n }\n /**\n * @hidden\n */\n handlePopupKeyDown(event) {\n if (event.keyCode === Keys.Escape) {\n this.toggleWithEvents(false);\n this.host.nativeElement.focus();\n }\n if (event.keyCode === Keys.Tab) {\n const currentElement = event.shiftKey ? this.firstFocusableElement.nativeElement : this.lastFocusableElement.nativeElement;\n const nextElement = event.shiftKey ? this.lastFocusableElement.nativeElement : this.firstFocusableElement.nativeElement;\n if (event.target === currentElement) {\n event.preventDefault();\n nextElement.focus();\n }\n }\n }\n /**\n * @hidden\n * Used by the FloatingLabel to determine if the component is empty.\n */\n isEmpty() {\n return false;\n }\n setHostElementAriaLabel() {\n const ariaLabelValue = `${this.value ? this.value : this.localizationService.get('colorPickerNoColor')}`;\n this.renderer.setAttribute(this.host.nativeElement, 'aria-label', ariaLabelValue);\n }\n handleClasses(value, input) {\n const elem = this.host.nativeElement;\n const classes = getStylingClasses('picker', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n popupBlurInvalid(ev) {\n const focusInFlatColorPickerElement = this.popupRef.popupElement.contains(ev.relatedTarget);\n const hostClicked = closest$1(ev.relatedTarget, (element) => element === this.host.nativeElement);\n return Boolean(hostClicked || focusInFlatColorPickerElement);\n }\n toggleWithEvents(open) {\n const sameState = this.isOpen === open;\n if (this.disabled || this.readonly || sameState) {\n return;\n }\n let eventArgs;\n if (open) {\n eventArgs = new ColorPickerOpenEvent();\n this.open.emit(eventArgs);\n }\n else {\n eventArgs = new ColorPickerCloseEvent();\n this.close.emit(eventArgs);\n }\n if (!eventArgs.isDefaultPrevented()) {\n this.toggle(open);\n }\n if (open) {\n this.focusFirstElement();\n }\n }\n focusFirstElement() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this.flatColorPicker) {\n const gradientDragHandle = this.flatColorPicker.gradient?.gradientDragHandle;\n const palette = this.flatColorPicker.palette?.host;\n const elementToFocus = gradientDragHandle ? gradientDragHandle : palette;\n elementToFocus.nativeElement.focus();\n }\n });\n }\n openPopup() {\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = { horizontal: horizontalAlign, vertical: \"bottom\" };\n const popupPosition = { horizontal: horizontalAlign, vertical: \"top\" };\n this.popupRef = this.popupService.open({\n anchor: this.activeColor,\n animate: this.popupSettings.animate,\n appendTo: this.popupSettings.appendTo,\n popupAlign: popupPosition,\n anchorAlign: anchorPosition,\n popupClass: 'k-colorpicker-popup',\n content: this.popupTemplate,\n positionMode: 'absolute'\n });\n this.renderer.setAttribute(this.popupRef.popupElement.querySelector('.k-colorpicker-popup'), 'id', `k-colorpicker-popup-${this.colorPickerId}`);\n this.popupSubs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.toggleWithEvents(false);\n if (!this.isOpen) {\n this.host.nativeElement.focus({\n preventScroll: true\n });\n }\n }));\n }\n closePopup() {\n if (!this.isOpen) {\n return;\n }\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n get firstFocusableElement() {\n if (!this.flatColorPicker.header || (this.views.length <= 1 && !this.flatColorPicker.clearButton)) {\n const gradient = this.flatColorPicker.gradient;\n return gradient ? gradient.gradientDragHandle : this.flatColorPicker.palette.host;\n }\n return this.views.length > 1 ? this.flatColorPicker.header.viewButtonsCollection.toArray()[0] : this.flatColorPicker.header.clearButtonElement;\n }\n get lastFocusableElement() {\n if (this.preview) {\n return this.flatColorPicker.footer.lastButton;\n }\n if (this.flatColorPicker.palette) {\n return this.flatColorPicker.palette.host;\n }\n const gradient = this.flatColorPicker.gradient;\n const inputs = gradient && gradient.inputs;\n if (gradient && inputs && inputs.formatView === 'hex') {\n return inputs.hexInput;\n }\n return this.gradientSettings.opacity ? inputs.opacityInput.numericInput : inputs.blueInput.numericInput;\n }\n handleDomEvents(action, events) {\n const hostElement = this.host.nativeElement;\n events.forEach(ev => hostElement[`${action}EventListener`](ev, this.domFocusListener, true));\n }\n initDomEvents() {\n if (!this.host) {\n return;\n }\n const hostElement = this.host.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n this.handleWrapperFocus();\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', (event) => {\n const closestPopup = this.popupRef ?\n closest$1(event.relatedTarget, (element) => element === this.flatColorPicker.host.nativeElement) :\n false;\n const closestWrapper = closest$1(event.relatedTarget, (element) => element === this.host.nativeElement);\n if (!closestPopup && !closestWrapper) {\n this.handleWrapperBlur();\n }\n }));\n this.handleDomEvents('add', DOM_FOCUS_EVENTS);\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', (event) => {\n this.handleWrapperKeyDown(event);\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'click', (event) => {\n this.ngZone.run(() => {\n this.handleWrapperClick(event);\n });\n }));\n });\n }\n handleHostId() {\n const hostElement = this.host.nativeElement;\n const existingId = hostElement.getAttribute('id');\n if (existingId) {\n this.focusableId = existingId;\n }\n else {\n const id = `k-${guid()}`;\n hostElement.setAttribute('id', id);\n this.focusableId = id;\n }\n }\n}\nColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.PopupService }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ColorPickerComponent, selector: \"kendo-colorpicker\", inputs: { views: \"views\", view: \"view\", activeView: \"activeView\", readonly: \"readonly\", disabled: \"disabled\", format: \"format\", value: \"value\", popupSettings: \"popupSettings\", paletteSettings: \"paletteSettings\", gradientSettings: \"gradientSettings\", icon: \"icon\", iconClass: \"iconClass\", svgIcon: \"svgIcon\", clearButton: \"clearButton\", tabindex: \"tabindex\", preview: \"preview\", actionsLayout: \"actionsLayout\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", cancel: \"cancel\", activeColorClick: \"activeColorClick\", clearButtonClick: \"clearButtonClick\", activeViewChange: \"activeViewChange\" }, host: { properties: { \"class.k-colorpicker\": \"this.hostClasses\", \"class.k-icon-picker\": \"this.hostClasses\", \"class.k-picker\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-readonly\": \"this.ariaReadonly\", \"attr.aria-expanded\": \"this.ariaExpanded\", \"attr.tabindex\": \"this.hostTabindex\", \"attr.dir\": \"this.direction\", \"attr.role\": \"this.role\", \"attr.aria-haspopup\": \"this.hasPopup\", \"attr.aria-invalid\": \"this.isControlInvalid\", \"class.k-readonly\": \"this.readonly\" } }, providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }\n ], viewQueries: [{ propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"activeColor\", first: true, predicate: [\"activeColor\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"flatColorPicker\", first: true, predicate: [\"flatColorPicker\"], descendants: true }], exportAs: [\"kendoColorPicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }, { type: i2.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: FlatColorPickerComponent, selector: \"kendo-flatcolorpicker\", inputs: [\"readonly\", \"disabled\", \"format\", \"value\", \"tabindex\", \"clearButton\", \"preview\", \"actionsLayout\", \"activeView\", \"views\", \"gradientSettings\", \"paletteSettings\"], outputs: [\"valueChange\", \"cancel\", \"activeViewChange\", \"clearButtonClick\", \"actionButtonClick\"], exportAs: [\"kendoFlatColorPicker\"] }], directives: [{ type: LocalizedColorPickerMessagesDirective, selector: \"[kendoColorPickerLocalizedMessages], [kendoFlatColorPickerLocalizedMessages], [kendoColorGradientLocalizedMessages], [kendoColorPaletteLocalizedMessages]\" }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoColorPicker',\n selector: 'kendo-colorpicker',\n providers: [{\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ColorPickerComponent)\n },\n ColorPickerLocalizationService,\n {\n provide: LocalizationService,\n useExisting: ColorPickerLocalizationService\n },\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.colorpicker'\n }],\n template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.PopupService }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-colorpicker']\n }, {\n type: HostBinding,\n args: ['class.k-icon-picker']\n }, {\n type: HostBinding,\n args: ['class.k-picker']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], ariaReadonly: [{\n type: HostBinding,\n args: ['attr.aria-readonly']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], hasPopup: [{\n type: HostBinding,\n args: ['attr.aria-haspopup']\n }], isControlInvalid: [{\n type: HostBinding,\n args: ['attr.aria-invalid']\n }], views: [{\n type: Input\n }], view: [{\n type: Input\n }], activeView: [{\n type: Input\n }], readonly: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-readonly']\n }], disabled: [{\n type: Input\n }], format: [{\n type: Input\n }], value: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], paletteSettings: [{\n type: Input\n }], gradientSettings: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], clearButton: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], preview: [{\n type: Input\n }], actionsLayout: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], cancel: [{\n type: Output\n }], activeColorClick: [{\n type: Output\n }], clearButtonClick: [{\n type: Output\n }], activeViewChange: [{\n type: Output\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], activeColor: [{\n type: ViewChild,\n args: ['activeColor', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], flatColorPicker: [{\n type: ViewChild,\n args: ['flatColorPicker', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ColorPickerCustomMessagesComponent extends ColorPickerMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nColorPickerCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ColorPickerCustomMessagesComponent, selector: \"kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages\", providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ColorPickerMessages,\n useExisting: forwardRef(() => ColorPickerCustomMessagesComponent)\n }\n ],\n selector: 'kendo-colorpicker-messages, kendo-flatcolorpicker-messages, kendo-colorgradient-messages, kendo-colorpalette-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass FocusOnDomReadyDirective {\n constructor(host, ngZone) {\n this.host = host;\n this.ngZone = ngZone;\n }\n ngAfterContentInit() {\n this.focusOnNextTick();\n }\n focusOnNextTick() {\n this.ngZone.runOutsideAngular(() => setTimeout(() => this.host.nativeElement.focus()));\n }\n}\nFocusOnDomReadyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FocusOnDomReadyDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nFocusOnDomReadyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FocusOnDomReadyDirective, selector: \"[kendoFocusOnDomReady]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FocusOnDomReadyDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoFocusOnDomReady]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } });\n\nconst PUBLIC_DIRECTIVES$1 = [\n ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent\n];\nconst INTERNAL_DIRECTIVES = [\n NumericLabelDirective,\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the ColorPicker.\n */\nclass ColorPickerModule {\n}\nColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent, NumericLabelDirective,\n ColorInputComponent,\n FocusOnDomReadyDirective,\n ContrastComponent,\n ContrastValidationComponent,\n FlatColorPickerHeaderComponent,\n FlatColorPickerActionButtonsComponent,\n ColorContrastSvgComponent], imports: [SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule,\n ButtonModule,\n IconsModule], exports: [ColorPickerComponent,\n ColorPaletteComponent,\n ColorGradientComponent,\n FlatColorPickerComponent,\n LocalizedColorPickerMessagesDirective,\n ColorPickerCustomMessagesComponent] });\nColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerModule, imports: [[\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule,\n ButtonModule,\n IconsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n PUBLIC_DIRECTIVES$1,\n INTERNAL_DIRECTIVES\n ],\n exports: [PUBLIC_DIRECTIVES$1],\n imports: [\n SliderModule,\n NumericTextBoxModule,\n CommonModule,\n PopupModule,\n DraggableModule,\n ButtonModule,\n IconsModule\n ]\n }]\n }] });\n\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI CheckBox]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"checkbox\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass CheckBoxDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n this._rounded = 'medium';\n }\n /**\n * The size property specifies the width and height of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * The rounded property specifies the border radius of the CheckBox\n * ([see example]({% slug appearance_checkboxdirective %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.handleClasses(newRounded, 'rounded');\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('checkbox', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nCheckBoxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCheckBoxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CheckBoxDirective, selector: \"input[kendoCheckBox]\", inputs: { size: \"size\", rounded: \"rounded\" }, host: { properties: { \"class.k-checkbox\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoCheckBox]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-checkbox']\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the CheckBox directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the CheckBox module\n * import { CheckBoxModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, CheckBoxModule], // import CheckBox module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass CheckBoxModule {\n}\nCheckBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCheckBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxModule, declarations: [CheckBoxDirective], imports: [CommonModule], exports: [CheckBoxDirective] });\nCheckBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CheckBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CheckBoxDirective],\n exports: [CheckBoxDirective],\n imports: [CommonModule]\n }]\n }] });\n\nconst DEFAULT_SIZE$1 = 'medium';\n/**\n * Represents the directive that renders the [Kendo UI RadioButton]({% slug overview_checkbox %}) input component.\n * The directive is placed on input type=\"radio\" elements.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass RadioButtonDirective {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.kendoClass = true;\n this._size = 'medium';\n validatePackage(packageMetadata);\n }\n /**\n * The size property specifies the width and height of the RadioButton\n * ([see example]({% slug appearance_radiobuttondirective %}#toc-size)).\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n ngAfterViewInit() {\n // kept in sync with other inputs for easier refactoring\n // to a common base class\n const stylingInputs = ['size'];\n stylingInputs.forEach(input => {\n this.handleClasses(this[input], input);\n });\n }\n handleClasses(value, input) {\n const elem = this.hostElement.nativeElement;\n const classes = getStylingClasses('radio', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nRadioButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nRadioButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: RadioButtonDirective, selector: \"input[kendoRadioButton]\", inputs: { size: \"size\" }, host: { properties: { \"class.k-radio\": \"this.kendoClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[kendoRadioButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { kendoClass: [{\n type: HostBinding,\n args: ['class.k-radio']\n }], size: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the RadioButton directive.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the RadioButton module\n * import { RadioButtonModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, RadioButtonModule], // import RadioButton module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RadioButtonModule {\n}\nRadioButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRadioButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonModule, declarations: [RadioButtonDirective], imports: [CommonModule], exports: [RadioButtonDirective] });\nRadioButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RadioButtonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [RadioButtonDirective],\n exports: [RadioButtonDirective],\n imports: [CommonModule]\n }]\n }] });\n\nlet serial$1 = 0;\n/**\n * Represents an error message that will be shown underneath\n * a Kendo control or native HTML form-bound component after a validation.\n */\nclass ErrorComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the alignment of the Error message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-error-${serial$1++}`;\n this.roleAttribute = 'alert';\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ErrorComponent, selector: \"kendo-formerror\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-error\": \"this.hostClass\", \"attr.role\": \"this.roleAttribute\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ErrorComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formerror',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-error']\n }], align: [{\n type: Input\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\nlet serial = 0;\n/**\n * Represents a hint message that will be shown underneath a form-bound component.\n */\nclass HintComponent {\n constructor() {\n /**\n * Specifies the alignment of the Hint message.\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.align = 'start';\n /**\n * @hidden\n */\n this.id = `kendo-hint-${serial++}`;\n this.hostClass = true;\n }\n get startClass() {\n return this.align === 'start';\n }\n get endClass() {\n return this.align === 'end';\n }\n get idAttribute() {\n return this.id;\n }\n}\nHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: HintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: HintComponent, selector: \"kendo-formhint\", inputs: { align: \"align\" }, host: { properties: { \"class.k-form-hint\": \"this.hostClass\", \"class.k-text-start\": \"this.startClass\", \"class.k-text-end\": \"this.endClass\", \"attr.id\": \"this.idAttribute\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: HintComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formhint',\n template: `\n \n `\n }]\n }], propDecorators: { align: [{\n type: Input\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-form-hint']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-text-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-text-end']\n }], idAttribute: [{\n type: HostBinding,\n args: ['attr.id']\n }] } });\n\n/**\n * Specifies a container for form-bound controls (Kendo controls or native HTML controls).\n * Applies styling and behavior rules.\n */\nclass FormFieldComponent {\n constructor(renderer, localizationService, hostElement) {\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.hostElement = hostElement;\n this.hostClass = true;\n /**\n *\n * Specifies when the Hint messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying hints when the form-bound component state is\n * `valid` or `untouched` and `pristine`.\n * * `always`—Allows full control over the visibility of the hints.\n *\n */\n this.showHints = 'initial';\n /**\n * Specifies the layout orientation of the form field.\n *\n * * The possible values are:\n *\n * * (Default) `vertical`\n * * `horizontal`\n */\n this.orientation = 'vertical';\n /**\n * Specifies when the Error messages will be shown.\n *\n * The possible values are:\n *\n * * (Default) `initial`—Allows displaying errors when the form-bound component state is\n * `invalid` and `touched` or `dirty`.\n * * `always`—Allows full control over the visibility of the errors.\n *\n */\n this.showErrors = 'initial';\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n }));\n }\n get errorClass() {\n if (!this.control) {\n return false;\n }\n return this.control.invalid && (this.control.touched || this.control.dirty);\n }\n get disabledClass() {\n if (!this.control) {\n return false;\n }\n // radiobutton group\n if (this.isRadioControl(this.control)) {\n return false;\n }\n return this.disabledControl() ||\n this.disabledElement() ||\n this.disabledKendoInput();\n }\n set formControls(formControls) {\n this.validateFormControl(formControls);\n this.control = formControls.first;\n }\n /**\n * @hidden\n */\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n /**\n * @hidden\n */\n get hasHints() {\n return this.showHints === 'always' ? true : this.showHintsInitial();\n }\n /**\n * @hidden\n */\n get hasErrors() {\n return this.showErrors === 'always' ? true : this.showErrorsInitial();\n }\n ngAfterViewInit() {\n this.setDescription();\n }\n ngAfterViewChecked() {\n this.updateDescription();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n disabledKendoInput() {\n return this.kendoInput && this.kendoInput.disabled;\n }\n disabledControl() {\n return this.control.disabled;\n }\n disabledElement() {\n const elements = this.controlElementRefs.toArray();\n return elements.every(e => e.nativeElement.hasAttribute('disabled'));\n }\n validateFormControl(formControls) {\n if (isDevMode() && formControls.length !== 1 && !this.isControlGroup(formControls)) {\n throw new Error('The `kendo-formfield` component should contain ' +\n 'only one control of type NgControl with a formControlName(https://angular.io/api/forms/FormControlName)' +\n 'or an ngModel(https://angular.io/api/forms/NgModel) binding.');\n }\n }\n isControlGroup(formControls) {\n if (!formControls.length) {\n return false;\n }\n const name = formControls.first.name;\n return formControls.toArray().every(c => c.name === name && (this.isRadioControl(c)));\n }\n isRadioControl(control) {\n return control.valueAccessor instanceof RadioControlValueAccessor;\n }\n updateDescription() {\n const controls = this.findControlElements();\n if (!controls) {\n return;\n }\n controls.forEach((control) => {\n if (this.errorChildren.length > 0 || this.hintChildren.length > 0) {\n const ariaIds = this.generateDescriptionIds(control);\n if (ariaIds !== '') {\n this.renderer.setAttribute(control, 'aria-describedby', ariaIds);\n }\n else {\n this.renderer.removeAttribute(control, 'aria-describedby');\n }\n }\n });\n }\n findControlElements() {\n if (!this.controlElementRefs) {\n return;\n }\n // if the control is KendoInput and has focusableId - dropdowns, dateinputs\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n return [this.hostElement.nativeElement.querySelector(`#${this.kendoInput.focusableId}`)];\n }\n return this.controlElementRefs.map(el => el.nativeElement);\n }\n generateDescriptionIds(control) {\n const ids = new Set();\n let errorAttribute = '';\n if (control.hasAttribute('aria-describedby')) {\n const attributes = control.getAttribute('aria-describedby').split(' ');\n errorAttribute = attributes.filter(attr => attr.includes('kendo-error-'))[0];\n attributes.forEach((attr) => {\n if (attr.includes('kendo-hint-') || attr.includes('kendo-error-')) {\n return;\n }\n ids.add(attr);\n });\n }\n this.hintChildren.forEach((hint) => {\n ids.add(hint.id);\n });\n if (this.hasErrors) {\n this.errorChildren.forEach((error) => {\n ids.add(error.id);\n });\n }\n else {\n ids.delete(errorAttribute);\n }\n return Array.from(ids).join(' ');\n }\n showHintsInitial() {\n if (!this.control) {\n return true;\n }\n const { valid, untouched, pristine } = this.control;\n return valid || (untouched && pristine);\n }\n showErrorsInitial() {\n if (!this.control) {\n return false;\n }\n const { invalid, dirty, touched } = this.control;\n return invalid && (dirty || touched);\n }\n setDescription() {\n this.updateDescription();\n this.subscriptions.add(this.errorChildren.changes.subscribe(() => this.updateDescription()));\n this.subscriptions.add(this.hintChildren.changes.subscribe(() => this.updateDescription()));\n }\n}\nFormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nFormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FormFieldComponent, selector: \"kendo-formfield\", inputs: { showHints: \"showHints\", orientation: \"orientation\", showErrors: \"showErrors\" }, host: { properties: { \"class.k-form-field\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"class.k-form-field-error\": \"this.errorClass\", \"class.k-form-field-disabled\": \"this.disabledClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }, { propertyName: \"formControls\", predicate: NgControl, descendants: true }, { propertyName: \"controlElementRefs\", predicate: NgControl, descendants: true, read: ElementRef }, { propertyName: \"errorChildren\", predicate: ErrorComponent, descendants: true }, { propertyName: \"hintChildren\", predicate: HintComponent, descendants: true }], ngImport: i0, template: `\n \n
\n \n \n \n
\n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-formfield',\n template: `\n \n
\n \n \n \n
\n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.formfield'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-form-field']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], errorClass: [{\n type: HostBinding,\n args: ['class.k-form-field-error']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-form-field-disabled']\n }], formControls: [{\n type: ContentChildren,\n args: [NgControl, { descendants: true }]\n }], controlElementRefs: [{\n type: ContentChildren,\n args: [NgControl, { read: ElementRef, descendants: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }], errorChildren: [{\n type: ContentChildren,\n args: [ErrorComponent, { descendants: true }]\n }], hintChildren: [{\n type: ContentChildren,\n args: [HintComponent, { descendants: true }]\n }], showHints: [{\n type: Input\n }], orientation: [{\n type: Input\n }], showErrors: [{\n type: Input\n }] } });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the FormField, Error and Hint components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the FormField module\n * import { FormFieldModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FormFieldModule], // import FormField module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FormFieldModule {\n}\nFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldModule, declarations: [HintComponent, ErrorComponent, FormFieldComponent], imports: [CommonModule], exports: [HintComponent, ErrorComponent, FormFieldComponent] });\nFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [HintComponent, ErrorComponent, FormFieldComponent],\n exports: [HintComponent, ErrorComponent, FormFieldComponent],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nclass SignatureMessages extends ComponentMessages {\n}\nSignatureMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nSignatureMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SignatureMessages, selector: \"kendo-signature-messages-base\", inputs: { clear: \"clear\", minimize: \"minimize\", maximize: \"maximize\", canvasLabel: \"canvasLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-signature-messages-base'\n }]\n }], propDecorators: { clear: [{\n type: Input\n }], minimize: [{\n type: Input\n }], maximize: [{\n type: Input\n }], canvasLabel: [{\n type: Input\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass SignatureCustomMessagesComponent extends SignatureMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nSignatureCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nSignatureCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SignatureCustomMessagesComponent, selector: \"kendo-signature-messages\", providers: [\n {\n provide: SignatureMessages,\n useExisting: forwardRef(() => SignatureCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: SignatureMessages,\n useExisting: forwardRef(() => SignatureCustomMessagesComponent)\n }\n ],\n selector: 'kendo-signature-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass LocalizedSignatureMessagesDirective extends SignatureMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedSignatureMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedSignatureMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedSignatureMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedSignatureMessagesDirective, selector: \"[kendoSignatureLocalizedMessages]\", providers: [\n {\n provide: SignatureMessages,\n useExisting: forwardRef(() => LocalizedSignatureMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedSignatureMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: SignatureMessages,\n useExisting: forwardRef(() => LocalizedSignatureMessagesDirective)\n }\n ],\n selector: '[kendoSignatureLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Arguments for the `close` event of the Signature component.\n */\nclass SignatureCloseEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `open` event of the Signature component.\n */\nclass SignatureOpenEvent extends PreventableEvent {\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst noop = () => { };\nlet _id = 0;\nconst nextId = () => 'k-signature-focusable-' + _id++;\nconst FOCUSED_CLASS = 'k-focus';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\nconst DEFAULT_POPUP_SCALE = 3;\nconst DEFAULT_EXPORT_SCALE = 2;\nconst DEFAULT_COLOR = '#000000';\nconst DEFAULT_BACKGROUND_COLOR = '#ffffff';\nconst iconsMap = { xIcon, hyperlinkOpenIcon };\n/**\n * Represents the [Kendo UI Signature component for Angular]({% slug overview_signature %}).\n *\n * The Signature allows users to add a hand-drawn signature to forms.\n */\nclass SignatureComponent {\n constructor(element, renderer, ngZone, cd, localization, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.cd = cd;\n this.localization = localization;\n this.cdr = cdr;\n this.staticHostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = nextId();\n /**\n * Sets the read-only state of the Signature.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Sets the disabled state of the Signature. To disable the component in reactive forms, visit the following [article](slug:formssupport_signature#toc-managing-the-signature-disabled-state-in-reactive-forms)\n *\n * @default false\n */\n this.disabled = false;\n /**\n * The size property specifies the padding of the Signature internal controls\n * ([see example]({% slug appearance_signature %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n this.size = DEFAULT_SIZE;\n /**\n * The rounded property specifies the border radius of the signature\n * ([see example]({% slug appearance_signature %}#toc-rounded)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full` (not supported by the Signature)\n * * `none`\n */\n this.rounded = DEFAULT_ROUNDED;\n /**\n * The fillMode property specifies the background and border styles of the signature\n * ([see example]({% slug appearance_signature %}#toc-fillMode)).\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n */\n this.fillMode = DEFAULT_FILL_MODE;\n /**\n * The stroke width of the signature.\n *\n * @default 1\n */\n this.strokeWidth = 1;\n /**\n * A flag indicating whether to smooth out signature lines.\n *\n * @default false\n */\n this.smooth = false;\n /**\n * A flag indicating if the signature can be maximized.\n *\n * @default true\n */\n this.maximizable = true;\n /**\n * @hidden\n */\n this.maximized = false;\n /**\n * The scale factor for the popup.\n *\n * The Signature width and height will be multiplied by the scale when showing the popup.\n *\n * @default 3\n */\n this.popupScale = DEFAULT_POPUP_SCALE;\n /**\n * The scale factor for the exported image.\n *\n * The Signature width and height will be multiplied by the scale when converting the signature to an image.\n *\n * @default 2\n */\n this.exportScale = DEFAULT_EXPORT_SCALE;\n /**\n * A flag indicating whether the dotted line should be displayed in the background.\n *\n * @default false\n */\n this.hideLine = false;\n /**\n * Fires each time the signature value is changed.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires each time Signature is focused.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the Signature is blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.minimize = new EventEmitter();\n /**\n * Indicates whether the Signature wrapper is focused.\n */\n this.isFocused = false;\n /**\n * @hidden\n */\n this.isDrawing = false;\n this.notifyNgTouched = noop;\n this.notifyNgChanged = noop;\n this._tabindex = 0;\n this.hostClasses = [];\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Gets or sets the value of the signature.\n *\n * The value is a Base64-encoded PNG image.\n */\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n if (this.instance) {\n this.instance.loadImage(value);\n }\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n svgIcon(name) {\n return iconsMap[name];\n }\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n *\n * @default 0\n */\n set tabindex(value) {\n const tabindex = Number(value);\n const defaultValue = 0;\n this._tabindex = !isNaN(tabindex) ? tabindex : defaultValue;\n }\n get tabindex() {\n return !this.disabled ? this._tabindex : undefined;\n }\n /**\n * @hidden\n */\n get isEmpty() {\n return !this.value;\n }\n /**\n * @hidden\n */\n get canvasLabel() {\n return this.getMessage('canvasLabel');\n }\n /**\n * @hidden\n */\n get clearTitle() {\n return this.getMessage('clear');\n }\n /**\n * @hidden\n */\n get minimizeTitle() {\n return this.getMessage('minimize');\n }\n /**\n * @hidden\n */\n get maximizeTitle() {\n return this.getMessage('maximize');\n }\n /**\n * @hidden\n */\n get baseWidth() {\n return this.width || this.element.nativeElement.offsetWidth;\n }\n /**\n * @hidden\n */\n get baseHeight() {\n return this.height || this.element.nativeElement.offsetHeight;\n }\n /**\n * @hidden\n */\n get popupWidth() {\n return this.baseWidth * this.popupScale;\n }\n /**\n * @hidden\n */\n get popupHeight() {\n return this.baseHeight * this.popupScale;\n }\n /**\n * @hidden\n */\n get showMaximize() {\n return !(this.maximized || this.isDrawing || !this.maximizable || this.disabled);\n }\n /**\n * @hidden\n */\n get showMinimize() {\n return this.maximized && !this.isDrawing;\n }\n /**\n * @hidden\n */\n get showClear() {\n return !(this.isEmpty || this.isDrawing || this.readonly || this.disabled);\n }\n /**\n * @hidden\n */\n get focused() {\n return this.isFocused;\n }\n set focused(value) {\n if (this.isFocused !== value && this.element) {\n const wrap = this.element.nativeElement;\n if (value && !this.maximized) {\n this.renderer.addClass(wrap, FOCUSED_CLASS);\n }\n else {\n this.renderer.removeClass(wrap, FOCUSED_CLASS);\n }\n this.isFocused = value;\n }\n }\n get options() {\n return {\n scale: this.maximized ? this.popupScale : 1,\n color: this.color,\n backgroundColor: this.backgroundColor,\n strokeWidth: this.strokeWidth,\n smooth: this.smooth,\n readonly: this.readonly\n };\n }\n ngOnInit() {\n this.subscriptions = this.localization\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.applyHostClasses();\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.readThemeColors();\n this.instance.setOptions(this.options);\n });\n this.ngZone.runOutsideAngular(() => {\n const element = this.canvas.nativeElement;\n this.instance = new SignaturePad(element, {\n ...this.options,\n onChange: () => this.onValueChange(),\n onDraw: () => this.onDraw(),\n onDrawEnd: () => this.onDrawEnd()\n });\n if (this.value) {\n this.instance.loadImage(this.value);\n }\n if (this.maximized) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.minimizeButton?.nativeElement.focus();\n });\n }\n this.addEventListeners();\n });\n }\n ngOnChanges(changes) {\n if (anyChanged(['readonly', 'color', 'backgroundColor', 'strokeWidth', 'smooth'], changes, true)) {\n this.instance.setOptions(this.options);\n }\n this.applyHostClasses();\n }\n ngOnDestroy() {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n }\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n this.subscriptions = null;\n }\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n /**\n * @hidden\n */\n onClear() {\n this.reset();\n this.valueChange.emit(undefined);\n this.canvas.nativeElement.focus();\n }\n /**\n * @hidden\n */\n async onValueChange() {\n const value = await this.instance.exportImage({\n width: this.baseWidth * this.exportScale,\n height: this.baseHeight * this.exportScale\n });\n this._value = value;\n this.cd.markForCheck();\n this.ngZone.run(() => {\n this.valueChange.emit(value);\n this.notifyNgChanged(value);\n });\n }\n /**\n * @hidden\n */\n onDialogValueChange(value) {\n this.value = value;\n this.valueChange.emit(value);\n this.notifyNgTouched();\n this.notifyNgChanged(value);\n }\n /**\n * @hidden\n */\n onDialogClick(e) {\n if (e.target.classList.contains('k-overlay')) {\n this.isOpen = false;\n this.maximizeButton?.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onDialogKeydown(e) {\n if (e.keyCode === Keys.Escape) {\n this.isOpen = false;\n this.cd.detectChanges();\n this.maximizeButton?.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onDialogClose() {\n const args = new SignatureCloseEvent();\n this.close.next(args);\n if (!args.isDefaultPrevented()) {\n this.isOpen = false;\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n (this.maximizeButton || this.element)?.nativeElement?.focus();\n });\n }\n }\n /**\n * Clears the value of the Signature.\n */\n reset() {\n if (!isPresent(this.value)) {\n return;\n }\n this.instance?.clear();\n this.value = this._value = undefined;\n this.notifyNgChanged(undefined);\n }\n /**\n * Toggles the popup of the Signature.\n * Does not trigger the `open` and `close` events of the component.\n *\n * @param open An optional parameter. Specifies whether the popup will be opened or closed.\n */\n toggle(open) {\n if (this.disabled || this.readonly) {\n return;\n }\n open = isPresent(open) ? open : !this.isOpen;\n this.isOpen = open;\n }\n /**\n * @hidden\n */\n async onMaximize() {\n const args = new SignatureOpenEvent();\n this.open.next(args);\n if (!args.isDefaultPrevented()) {\n this.popupValue = await this.instance.exportImage({\n width: this.popupWidth * this.exportScale,\n height: this.popupHeight * this.exportScale\n });\n this.isOpen = true;\n this.cd.detectChanges();\n }\n }\n /**\n * @hidden\n */\n onMinimize() {\n this.minimize.next();\n }\n applyHostClasses() {\n const classList = this.element.nativeElement.classList;\n this.hostClasses.forEach(([name]) => classList.remove(name));\n this.hostClasses = [\n [`k-signature-${SIZE_MAP[this.size || DEFAULT_SIZE]}`, !isNone(this.size)],\n [`k-input-${this.fillMode || DEFAULT_FILL_MODE}`, !isNone(this.fillMode)],\n [`k-rounded-${ROUNDED_MAP[this.rounded || DEFAULT_ROUNDED]}`, !isNone(this.rounded)]\n ];\n this.hostClasses.forEach(([name, enabled]) => classList.toggle(name, enabled));\n }\n readThemeColors() {\n let defaultColor = DEFAULT_COLOR;\n let defaultBackgroundColor = DEFAULT_BACKGROUND_COLOR;\n if (isDocumentAvailable()) {\n const el = this.element.nativeElement;\n defaultColor = getComputedStyle(el).color;\n defaultBackgroundColor = getComputedStyle(el).backgroundColor;\n }\n this.color = this.color || defaultColor;\n this.backgroundColor = this.backgroundColor || defaultBackgroundColor;\n }\n /**\n * Focuses the wrapper of the Signature.\n */\n focus() {\n this.focused = true;\n this.element.nativeElement.focus();\n }\n /**\n * @hidden\n */\n onWrapperFocus() {\n if (this.focused) {\n return;\n }\n this.ngZone.run(() => {\n this.focus();\n this.onFocus.emit();\n });\n }\n /**\n * Blurs the Signature.\n */\n blur() {\n this.focused = false;\n this.element.nativeElement.blur();\n this.notifyNgTouched();\n }\n /**\n * @hidden\n */\n onWrapperBlur() {\n if (this.isOpen) {\n return;\n }\n this.ngZone.run(() => {\n this.onBlur.emit();\n this.focused = false;\n this.notifyNgTouched();\n });\n }\n /**\n * @hidden\n */\n onWrapperClick(_event) {\n if (this.disabled) {\n return;\n }\n this.focus();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.notifyNgChanged = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.notifyNgTouched = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n onDraw() {\n this.isDrawing = true;\n this.cd.markForCheck();\n }\n onDrawEnd() {\n this.isDrawing = false;\n this.cd.markForCheck();\n }\n addEventListeners() {\n const element = this.element.nativeElement;\n const focusIn = this.renderer.listen(element, 'focusin', () => this.onWrapperFocus());\n const focusOut = this.renderer.listen(element, 'focusout', (e) => {\n const insideWrapper = closest$1(e.relatedTarget, element => element === this.element.nativeElement);\n if (!insideWrapper) {\n this.onWrapperBlur();\n }\n });\n const click = this.renderer.listen(element, 'click', () => {\n this.ngZone.run((e) => {\n this.onWrapperClick(e);\n });\n });\n this.unsubscribe = () => {\n focusIn();\n focusOut();\n click();\n };\n }\n getMessage(key) {\n if (this.maximized && this.parentLocalization) {\n return this.parentLocalization.get(key);\n }\n return this.localization.get(key);\n }\n}\nSignatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSignatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SignatureComponent, selector: \"kendo-signature\", inputs: { focusableId: \"focusableId\", readonly: \"readonly\", disabled: \"disabled\", width: \"width\", height: \"height\", value: \"value\", tabindex: \"tabindex\", size: \"size\", rounded: \"rounded\", fillMode: \"fillMode\", color: \"color\", backgroundColor: \"backgroundColor\", strokeWidth: \"strokeWidth\", smooth: \"smooth\", maximizable: \"maximizable\", maximized: \"maximized\", popupScale: \"popupScale\", exportScale: \"exportScale\", parentLocalization: \"parentLocalization\", hideLine: \"hideLine\" }, outputs: { valueChange: \"valueChange\", open: \"open\", close: \"close\", onFocus: \"focus\", onBlur: \"blur\", minimize: \"minimize\" }, host: { properties: { \"class.k-signature\": \"this.staticHostClasses\", \"class.k-input\": \"this.staticHostClasses\", \"attr.dir\": \"this.direction\", \"class.k-readonly\": \"this.readonly\", \"class.k-disabled\": \"this.disabled\", \"style.width.px\": \"this.width\", \"style.height.px\": \"this.height\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.signature' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SignatureComponent) }\n ], viewQueries: [{ propertyName: \"canvas\", first: true, predicate: [\"canvas\"], descendants: true }, { propertyName: \"minimizeButton\", first: true, predicate: [\"minimize\"], descendants: true, read: ElementRef }, { propertyName: \"maximizeButton\", first: true, predicate: [\"maximize\"], descendants: true, read: ElementRef }], exportAs: [\"kendoSignature\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n\n \n\n
\n \n \n \n \n
\n \n
\n \n \n
\n\n \n \n \n \n `, isInline: true, components: [{ type: i2.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i3$1.DialogComponent, selector: \"kendo-dialog\", inputs: [\"actions\", \"actionsLayout\", \"autoFocusedElement\", \"title\", \"width\", \"minWidth\", \"maxWidth\", \"height\", \"minHeight\", \"maxHeight\", \"animation\", \"themeColor\"], outputs: [\"action\", \"close\"], exportAs: [\"kendoDialog\"] }, { type: SignatureComponent, selector: \"kendo-signature\", inputs: [\"focusableId\", \"readonly\", \"disabled\", \"width\", \"height\", \"value\", \"tabindex\", \"size\", \"rounded\", \"fillMode\", \"color\", \"backgroundColor\", \"strokeWidth\", \"smooth\", \"maximizable\", \"maximized\", \"popupScale\", \"exportScale\", \"parentLocalization\", \"hideLine\"], outputs: [\"valueChange\", \"open\", \"close\", \"focus\", \"blur\", \"minimize\"], exportAs: [\"kendoSignature\"] }], directives: [{ type: LocalizedSignatureMessagesDirective, selector: \"[kendoSignatureLocalizedMessages]\" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSignature',\n selector: 'kendo-signature',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.signature' },\n { multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SignatureComponent) }\n ],\n template: `\n \n \n\n \n\n
\n \n \n \n \n
\n \n
\n \n \n
\n\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { staticHostClasses: [{\n type: HostBinding,\n args: ['class.k-signature']\n }, {\n type: HostBinding,\n args: ['class.k-input']\n }], focusableId: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], readonly: [{\n type: HostBinding,\n args: ['class.k-readonly']\n }, {\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }, {\n type: Input\n }], width: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.width.px']\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height.px']\n }], value: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], color: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], smooth: [{\n type: Input\n }], maximizable: [{\n type: Input\n }], maximized: [{\n type: Input\n }], popupScale: [{\n type: Input\n }], exportScale: [{\n type: Input\n }], parentLocalization: [{\n type: Input\n }], hideLine: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], onFocus: [{\n type: Output,\n args: ['focus']\n }], onBlur: [{\n type: Output,\n args: ['blur']\n }], minimize: [{\n type: Output\n }], canvas: [{\n type: ViewChild,\n args: ['canvas']\n }], minimizeButton: [{\n type: ViewChild,\n args: ['minimize', { read: ElementRef }]\n }], maximizeButton: [{\n type: ViewChild,\n args: ['maximize', { read: ElementRef }]\n }] } });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Signature component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Signature module\n * import { SignatureModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, SignatureModule], // import Signature module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass SignatureModule {\n}\nSignatureModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSignatureModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureModule, declarations: [SignatureComponent,\n SignatureCustomMessagesComponent,\n LocalizedSignatureMessagesDirective], imports: [ButtonModule,\n CommonModule,\n DialogsModule,\n IconsModule], exports: [SignatureComponent,\n SignatureCustomMessagesComponent] });\nSignatureModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureModule, imports: [[\n ButtonModule,\n CommonModule,\n DialogsModule,\n IconsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SignatureModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SignatureComponent,\n SignatureCustomMessagesComponent,\n LocalizedSignatureMessagesDirective\n ],\n exports: [\n SignatureComponent,\n SignatureCustomMessagesComponent\n ],\n imports: [\n ButtonModule,\n CommonModule,\n DialogsModule,\n IconsModule\n ]\n }]\n }] });\n\n/**\n * Renders the rating item content. To define an item template, nest an `` tag\n * with the `kendoRatingItemTemplate` directive inside the `` tag\n * [see example]({% slug templates_rating %}#toc-item-template).\n * The index of the current item is available as an implicit context using the `let-index=\"index\"` syntax.\n */\nclass RatingItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nRatingItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nRatingItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: RatingItemTemplateDirective, selector: \"[kendoRatingItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoRatingItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the hovered rating item content. To define an item template, nest an `` tag\n * with the `kendoRatingHoveredItemTemplate` directive inside the `` tag\n * [see example]({% slug templates_rating %}#toc-hovered-item-template).\n * The index of the currently hovered item is available as an implicit context using the `let-index=\"index\"` syntax.\n */\nclass RatingHoveredItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nRatingHoveredItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingHoveredItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nRatingHoveredItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: RatingHoveredItemTemplateDirective, selector: \"[kendoRatingHoveredItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingHoveredItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoRatingHoveredItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Renders the selected rating item content. To define an item template, nest an `` tag\n * with the `kendoRatingSelectedItemTemplate` directive inside the `` tag\n * [see example]({% slug templates_rating %}#toc-selected-item-template).\n * The index of the currently selected item is available as an implicit context using the `let-index=\"index\"` syntax.\n */\nclass RatingSelectedItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nRatingSelectedItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingSelectedItemTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nRatingSelectedItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: RatingSelectedItemTemplateDirective, selector: \"[kendoRatingSelectedItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingSelectedItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoRatingSelectedItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the [Kendo UI Rating component for Angular]({% slug overview_rating %}).\n */\nclass RatingComponent {\n constructor(element, renderer, localizationService, cdr, zone) {\n this.element = element;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.cdr = cdr;\n this.zone = zone;\n /**\n * Determines whether the Rating is disabled ([see example]({% slug disabledstate_rating %})). To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_rating#toc-managing-the-rating-disabled-state-in-reactive-forms).\n *\n * @default false\n *\n */\n this.disabled = false;\n /**\n * Determines whether the Rating is in its read-only state ([see example]({% slug readonly_rating %})).\n *\n * @default false\n *\n */\n this.readonly = false;\n /**\n * Specifies the [tabindex](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the Rating.\n *\n * @default 0\n *\n */\n this.tabindex = 0;\n /**\n * Sets the number of rating items ([see example]({% slug itemscount_rating %})).\n *\n * @default 5\n *\n */\n this.itemsCount = 5;\n /**\n * Sets custom Rating SVG icon. It is the icon that is used for selected/hovered state ([see example]({% slug icon_rating %})).\n */\n this.svgIcon = starIcon;\n /**\n * Sets custom Rating SVG icon. It is the icon that is used for not selected/hovered state ([see example]({% slug icon_rating %})).\n */\n this.svgIconOutline = starOutlineIcon;\n /**\n * Fires each time the user selects a new value.\n */\n this.valueChange = new EventEmitter();\n this.hostClass = true;\n this.valueMin = 0;\n this.ariaRole = 'slider';\n /**\n * @hidden\n */\n this.ratingItems = [];\n this.ngChange = (_) => { };\n this.ngTouched = () => { };\n this._selection = 'continuous';\n this._precision = 'item';\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n }\n /**\n * The initial value of the Rating component.\n * The component can use either NgModel or the `value` binding but not both of them at the same time.\n *\n */\n set value(value) {\n this._value = value;\n this.updateRatingItems();\n }\n get value() {\n return this._value;\n }\n /**\n * Sets the selection mode of the Rating ([see example]({% slug selection_rating %})).\n *\n * @default 'continuous'\n *\n */\n set selection(selection) {\n this._selection = selection;\n this.updateRatingItems();\n }\n get selection() {\n return this._selection;\n }\n /**\n * Determines the precision of the Rating ([see example]({% slug precision_rating %})).\n *\n * @default 'item'\n *\n */\n set precision(precision) {\n this._precision = precision;\n this.updateRatingItems();\n }\n get precision() {\n return this._precision;\n }\n get isControlInvalid() {\n return (this.control?.invalid)?.toString();\n }\n get valueMax() {\n return this.itemsCount;\n }\n get valueNow() {\n return this.value;\n }\n ngOnInit() {\n this.subscriptions.add(this.localizationService\n .changes\n .subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n this.subscriptions.add(this.renderer.listen(this.element.nativeElement, 'blur', () => this.ngTouched()));\n this.subscriptions.add(this.renderer.listen(this.element.nativeElement, 'keydown', event => this.onKeyDown(event)));\n this.createRatingItems();\n }\n ngAfterViewInit() {\n const items = this.element.nativeElement.querySelectorAll('.k-rating-item');\n this.zone.runOutsideAngular(() => {\n items.forEach((item, index) => this.subscriptions.add(this.renderer.listen(item, 'mousemove', (event) => this.onMouseMove(index, event))));\n });\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * Focuses the Rating component.\n */\n focus() {\n if (isDocumentAvailable() && !this.disabled) {\n this.element.nativeElement.focus();\n }\n }\n /**\n * Blurs the Rating component.\n */\n blur() {\n if (isDocumentAvailable()) {\n this.element.nativeElement.blur();\n }\n }\n /**\n * @hidden\n */\n createRatingItems() {\n for (let i = 0; i < this.itemsCount; i++) {\n const item = {\n title: this.isHalf(i, this.value) ? String(i + 0.5) : String(i + 1),\n selected: this.isSelected(i, this.value),\n selectedIndicator: false,\n hovered: false,\n half: this.isHalf(i, this.value)\n };\n this.ratingItems.push(item);\n }\n }\n /**\n * @hidden\n */\n onMouseEnter(event) {\n this.rect = event.target.getBoundingClientRect();\n }\n /**\n * @hidden\n */\n onMouseMove(value, event) {\n const halfPrecision = this.precision === 'half';\n const isFirstHalf = halfPrecision && this.isFirstHalf(this.rect, event.clientX);\n this.zone.run(() => this.ratingItems.forEach((item, index) => {\n item.title = (halfPrecision && value === index && isFirstHalf) ? String(index + 0.5) : String(index + 1);\n item.selected = item.hovered = this.isSelected(index, value + 1);\n item.selectedIndicator = this.isSelected(index, this.value);\n item.half = (halfPrecision && value === index) ? isFirstHalf : false;\n }));\n }\n /**\n * @hidden\n */\n onMouseOut() {\n this.rect = null;\n this.updateRatingItems();\n }\n /**\n * @hidden\n * Called when the status of the component changes to or from `disabled`.\n * Depending on the value, it enables or disables the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n changeValue(index, event) {\n const rect = event.target.getBoundingClientRect();\n const isFirstHalf = this.isFirstHalf(rect, event.clientX);\n const value = (this.precision === 'half' && isFirstHalf) ? index + 0.5 : index + 1;\n if (!areSame(this.value, value)) {\n this.value = value;\n this.ngChange(this.value);\n this.valueChange.emit(this.value);\n this.updateRatingItems();\n this.cdr.markForCheck();\n }\n }\n /**\n * @hidden\n */\n updateRatingItems() {\n this.ratingItems.forEach((item, index) => {\n item.title = this.isHalf(index, this.value) ? String(index + 0.5) : String(index + 1);\n item.selected = this.isSelected(index, this.value);\n item.selectedIndicator = this.isSelected(index, this.value);\n item.hovered = false;\n item.half = this.isHalf(index, this.value);\n });\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n this.updateRatingItems();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.ngChange = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.ngTouched = fn;\n }\n isSelected(index, value) {\n return this.selection === 'single' ? index === Math.ceil(value - 1) : index <= Math.ceil(value - 1);\n }\n isHalf(index, value) {\n return (this.precision === 'half' && (value > index) && (value < index + 1));\n }\n isFirstHalf(rect, clientX) {\n const elementPosition = rect.x + (rect.width / 2);\n return this.direction === 'ltr' ? clientX < elementPosition : clientX > elementPosition;\n }\n onKeyDown(event) {\n const decreaseValue = () => {\n if (this.value <= 0) {\n return;\n }\n this.value = (this.precision === 'half') ? this.value - 0.5 : this.value - 1;\n this.ngChange(this.value);\n this.valueChange.emit(this.value);\n this.updateRatingItems();\n this.cdr.markForCheck();\n };\n const increaseValue = () => {\n if (this.value >= this.itemsCount) {\n return;\n }\n this.value = (this.precision === 'half') ? this.value + 0.5 : this.value + 1;\n this.ngChange(this.value);\n this.valueChange.emit(this.value);\n this.updateRatingItems();\n this.cdr.markForCheck();\n };\n const setMinValue = () => {\n if (!areSame(this.value, this.valueMin)) {\n this.value = this.valueMin;\n this.ngChange(this.value);\n this.valueChange.emit(this.value);\n this.updateRatingItems();\n this.cdr.markForCheck();\n }\n };\n const setMaxValue = () => {\n if (!areSame(this.value, this.valueMax)) {\n this.value = this.valueMax;\n this.ngChange(this.value);\n this.valueChange.emit(this.value);\n this.updateRatingItems();\n this.cdr.markForCheck();\n }\n };\n if (event.keyCode === Keys.ArrowDown) {\n decreaseValue();\n }\n if (event.keyCode === Keys.ArrowLeft) {\n if (this.direction === 'ltr') {\n decreaseValue();\n }\n else {\n increaseValue();\n }\n }\n if (event.keyCode === Keys.ArrowUp) {\n increaseValue();\n }\n if (event.keyCode === Keys.ArrowRight) {\n if (this.direction === 'ltr') {\n increaseValue();\n }\n else {\n decreaseValue();\n }\n }\n if (event.keyCode === Keys.Home) {\n setMinValue();\n }\n if (event.keyCode === Keys.End) {\n setMaxValue();\n }\n }\n}\nRatingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nRatingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: RatingComponent, selector: \"kendo-rating\", inputs: { disabled: \"disabled\", readonly: \"readonly\", tabindex: \"tabindex\", itemsCount: \"itemsCount\", value: \"value\", selection: \"selection\", precision: \"precision\", label: \"label\", icon: \"icon\", svgIcon: \"svgIcon\", svgIconOutline: \"svgIconOutline\" }, outputs: { valueChange: \"valueChange\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabled\", \"class.k-disabled\": \"this.disabled\", \"attr.aria-readonly\": \"this.readonly\", \"class.k-readonly\": \"this.readonly\", \"attr.tabindex\": \"this.tabindex\", \"class.k-rating\": \"this.hostClass\", \"attr.dir\": \"this.direction\", \"attr.aria-invalid\": \"this.isControlInvalid\", \"attr.aria-valuemin\": \"this.valueMin\", \"attr.aria-valuemax\": \"this.valueMax\", \"attr.aria-valuenow\": \"this.valueNow\", \"attr.role\": \"this.ariaRole\" } }, providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rating' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RatingComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => RatingComponent)\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: RatingItemTemplateDirective, descendants: true }, { propertyName: \"hoveredItemTemplate\", first: true, predicate: RatingHoveredItemTemplateDirective, descendants: true }, { propertyName: \"selectedItemTemplate\", first: true, predicate: RatingSelectedItemTemplateDirective, descendants: true }], exportAs: [\"kendoRating\"], ngImport: i0, template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {{ label }}\r\n `, isInline: true, components: [{ type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoRating',\n providers: [\n LocalizationService,\n { provide: L10N_PREFIX, useValue: 'kendo.rating' },\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RatingComponent) /* eslint-disable-line*/\n },\n {\n provide: KendoInput,\n useExisting: forwardRef(() => RatingComponent)\n }\n ],\n selector: 'kendo-rating',\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {{ label }}\r\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { itemTemplate: [{\n type: ContentChild,\n args: [RatingItemTemplateDirective]\n }], hoveredItemTemplate: [{\n type: ContentChild,\n args: [RatingHoveredItemTemplateDirective]\n }], selectedItemTemplate: [{\n type: ContentChild,\n args: [RatingSelectedItemTemplateDirective]\n }], disabled: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], readonly: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.aria-readonly']\n }, {\n type: HostBinding,\n args: ['class.k-readonly']\n }], tabindex: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['attr.tabindex']\n }], itemsCount: [{\n type: Input\n }], value: [{\n type: Input\n }], selection: [{\n type: Input\n }], precision: [{\n type: Input\n }], label: [{\n type: Input\n }], icon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], svgIconOutline: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-rating']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], isControlInvalid: [{\n type: HostBinding,\n args: ['attr.aria-invalid']\n }], valueMin: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], valueMax: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }], valueNow: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }] } });\n\nconst PUBLIC_DIRECTIVES = [\n RatingComponent,\n RatingItemTemplateDirective,\n RatingHoveredItemTemplateDirective,\n RatingSelectedItemTemplateDirective\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Rating component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Rating module\n * import { RatingModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, RatingModule], // import Rating module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass RatingModule {\n}\nRatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingModule, declarations: [RatingComponent,\n RatingItemTemplateDirective,\n RatingHoveredItemTemplateDirective,\n RatingSelectedItemTemplateDirective], imports: [CommonModule, IconsModule], exports: [RatingComponent,\n RatingItemTemplateDirective,\n RatingHoveredItemTemplateDirective,\n RatingSelectedItemTemplateDirective] });\nRatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingModule, imports: [[CommonModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RatingModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [PUBLIC_DIRECTIVES],\n exports: [PUBLIC_DIRECTIVES],\n imports: [CommonModule, IconsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Inputs components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Inputs module\n * import { InputsModule } from '@progress/kendo-angular-inputs';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BrowserAnimationsModule, InputsModule], // import Inputs module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass InputsModule {\n}\nInputsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: InputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nInputsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: InputsModule, imports: [CommonModule], exports: [TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule,\n SignatureModule,\n RatingModule] });\nInputsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: InputsModule, imports: [[CommonModule], TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule,\n SignatureModule,\n RatingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: InputsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n TextAreaModule,\n TextBoxModule,\n SliderModule,\n RangeSliderModule,\n SwitchModule,\n NumericTextBoxModule,\n MaskedTextBoxModule,\n ColorPickerModule,\n CheckBoxModule,\n RadioButtonModule,\n FormFieldModule,\n SignatureModule,\n RatingModule\n ],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Arguments for the `blur` event of the Switch component.\n */\nclass SwitchBlurEvent {\n}\n\n/**\n * Arguments for the `focus` event of the Switch component.\n */\nclass SwitchFocusEvent {\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActiveColorClickEvent, CheckBoxDirective, CheckBoxModule, ColorGradientComponent, ColorPaletteComponent, ColorPickerCancelEvent, ColorPickerCloseEvent, ColorPickerComponent, ColorPickerCustomMessagesComponent, ColorPickerModule, ColorPickerOpenEvent, ErrorComponent, FlatColorPickerComponent, FormFieldComponent, FormFieldModule, HintComponent, InputSeparatorComponent, InputsModule, LabelTemplateDirective, LocalizedColorPickerMessagesDirective, LocalizedNumericTextBoxMessagesDirective, LocalizedRangeSliderMessagesDirective, LocalizedSignatureMessagesDirective, LocalizedSliderMessagesDirective, LocalizedSwitchMessagesDirective, LocalizedTextBoxMessagesDirective, MaskedTextBoxComponent, MaskedTextBoxModule, MaskingService, NumericLabelDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, NumericTextBoxModule, RadioButtonDirective, RadioButtonModule, RangeSliderComponent, RangeSliderCustomMessagesComponent, RangeSliderModule, RatingComponent, RatingHoveredItemTemplateDirective, RatingItemTemplateDirective, RatingModule, RatingSelectedItemTemplateDirective, SharedModule, SignatureCloseEvent, SignatureComponent, SignatureCustomMessagesComponent, SignatureMessages, SignatureModule, SignatureOpenEvent, SliderComponent, SliderCustomMessagesComponent, SliderModule, SliderTicksComponent, SwitchBlurEvent, SwitchComponent, SwitchCustomMessagesComponent, SwitchFocusEvent, SwitchModule, TextAreaComponent, TextAreaDirective, TextAreaModule, TextAreaPrefixComponent, TextAreaSuffixComponent, TextBoxComponent, TextBoxCustomMessagesComponent, TextBoxDirective, TextBoxModule, TextBoxPrefixTemplateDirective, TextBoxSuffixTemplateDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as intl from '@progress/kendo-intl';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142153,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\nconst DOCS_URL = 'http://www.telerik.com/kendo-angular-ui/components/internationalization/troubleshooting/';\n/**\n * @hidden\n */\nconst errorSolutions = {\n 'NoCurrency': `Solution: ${DOCS_URL}#toc-no-currency`,\n 'NoCurrencyDisplay': `Solution: ${DOCS_URL}#toc-no-currency-display`,\n 'NoCurrencyRegion': `Solution: ${DOCS_URL}#toc-no-currency-region`,\n 'NoDateFieldNames': `Solution: ${DOCS_URL}#toc-no-date-filed-names`,\n 'NoFirstDay': `Solution: ${DOCS_URL}#toc-no-first-day`,\n 'NoGMTInfo': `Solution: ${DOCS_URL}#toc-no-gmt-info`,\n 'NoLocale': `Solution: ${DOCS_URL}#toc-no-locale`,\n 'NoValidCurrency': `Solution: ${DOCS_URL}#toc-no-valid-currency`,\n 'NoWeekData': `Solution: ${DOCS_URL}#toc-no-week-data`\n};\n\nfunction formatMessage(error) {\n const message = error.message;\n const errorSolution = errorSolutions[Object.keys(errorSolutions).filter(key => message.indexOf(key) === 0)[0]];\n return errorSolution ? `${message} ${errorSolution}` : message;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction intlMethod(fn) {\n return function (...values) {\n try {\n return fn(...values);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n };\n}\n/**\n * @hidden\n */\nconst dateFormatNames = intlMethod(intl.dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName = intlMethod(intl.dateFieldName);\n/**\n * @hidden\n */\nconst firstDay = intlMethod(intl.firstDay);\n/**\n * @hidden\n */\nconst format = intlMethod(intl.format);\n/**\n * @hidden\n */\nconst formatDate = intlMethod(intl.formatDate);\n/**\n * @hidden\n */\nconst formatNumber = intlMethod(intl.formatNumber);\n/**\n * @hidden\n */\nconst load = intlMethod(intl.load);\n/**\n * @hidden\n */\nconst numberSymbols = intlMethod(intl.numberSymbols);\n/**\n * @hidden\n */\nconst parseDate = intlMethod(intl.parseDate);\n/**\n * @hidden\n */\nconst parseNumber = intlMethod(intl.parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat = intlMethod(intl.splitDateFormat);\n/**\n * @hidden\n */\nconst toString = intlMethod(intl.toString);\n/**\n * @hidden\n */\nconst weekendRange = intlMethod(intl.weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData = (data) => intl.setData(data);\n/**\n * Retrieves the locale data for the specified locale.\n *\n * @params locale - The locale id.\n * @returns data - The locale data.\n */\nconst localeData = (locale) => {\n try {\n return intl.localeInfo(locale);\n }\n catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n};\n\nconst LOCALE_REGEX = /_/g;\n/**\n * @hidden\n */\nfunction cldrServiceFactory(localeId) {\n return new CldrIntlService(localeId);\n}\n/**\n * An abstract base class that implements\n * the Internationalization service methods\n * for the current locale.\n */\nclass IntlService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new EventEmitter();\n validatePackage(packageMetadata);\n }\n /**\n * Notifies that the service was changed.\n */\n notify() {\n this.changes.emit();\n }\n}\nIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlService, providedIn: 'root', useFactory: cldrServiceFactory, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], ctorParameters: function () { return []; } });\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@progress/kendo-intl` package.\n */\nclass CldrIntlService extends IntlService {\n /**\n * Creates a new instance of the service with the ID of the specified locale.\n *\n * Note that the parts of the locale ID can be separated by either `_` (underscore)\n * or `-` (dash).\n *\n * @param localeId - The default locale ID.\n */\n constructor(localeId) {\n super();\n this.localeId = localeId;\n }\n /**\n * Gets or sets the current locale ID.\n */\n get localeId() {\n return this.locale;\n }\n set localeId(value) {\n // Angular locales use underscore, for example, en_US\n // while IETF BCP-47 specifies a dash.\n // https://tools.ietf.org/html/bcp47\n const locale = value.replace(LOCALE_REGEX, '-');\n if (locale !== this.locale) {\n this.locale = locale;\n this.notify();\n }\n }\n /**\n * Formats a string with placeholders such as\n * `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n format(format$1, ...values) {\n return format(format$1, values, this.localeId);\n }\n /**\n * Converts an object into a string based on the specified format.\n *\n * @param value - The value to format.\n * @param format - The format to use.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted object.\n */\n toString(value, format, localeId) {\n return toString(value, format, localeId || this.localeId);\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted date.\n */\n formatDate(value, format, localeId) {\n return formatDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Date` object based on the specified format.\n *\n * @param value - The string to convert.\n * @param format - The format strings or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed date.\n */\n parseDate(value, format, localeId) {\n return parseDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Number`.\n *\n * @param value - The string to convert.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed number.\n */\n parseNumber(value, format, localeId) {\n return parseNumber(value, localeId || this.localeId, format);\n }\n /**\n * Converts a `Number` into a string based on the specified format.\n *\n * @param value - The number to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted number.\n */\n formatNumber(value, format, localeId) {\n return formatNumber(value, format, localeId || this.localeId);\n }\n /**\n * Returns the date names from the current locale based on the option.\n *\n * The available `type` values are:\n * - `era`\n * - `year`\n * - `quarter`\n * - `month`\n * - `week`\n * - `day`\n * - `dayperiod`\n * - `hour`\n * - `minute`\n * - `second`\n * - `zone`\n *\n * The available `nameType` values are:\n * - `wide`\n * - `narrow`\n * - `short`\n *\n * @param options - Detailed configuration for the desired date field name.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n * @returns The localized date field name from the current locale based on the option.\n *\n * @example\n * ```\n * dateFieldName({ type: 'day' }); //returns 'day';\n * dateFieldName({ type: 'day', nameType: 'wide' }); //returns 'day';\n * dateFieldName({ type: 'month', nameType: 'short' }); //returns 'mo.';\n * dateFieldName({ type: 'month', nameType: 'wide' }); //returns 'month';\n * ```\n */\n dateFieldName(options, localeId) {\n return dateFieldName(options, localeId || this.localeId);\n }\n /**\n * Returns a localized date field name based on specific dateFieldName options.\n *\n * The available type values are:\n * - `day`\n * - `dayperiod`\n * - `months`\n * - `quarters`\n * - `eras`\n *\n * @param options - Detailed configuration for the desired date format.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n */\n dateFormatNames(options, localeId) {\n return dateFormatNames(localeId || this.localeId, options);\n }\n /**\n * Splits the date format into objects containing information about each part of the pattern.\n *\n * @param format The format string or options.\n * @param localeId The optional locale id. If not specified, the `\"en\"` locale id is used.\n * @returns The date format parts.\n */\n splitDateFormat(format, localeId) {\n return splitDateFormat(format, localeId || this.localeId);\n }\n /**\n * Returns the number symbols from the current locale based on the option.\n *\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The number symbols from the current locale.\n */\n numberSymbols(localeId) {\n return numberSymbols(localeId || this.localeId);\n }\n /**\n * Returns the first day index starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The index of the first day of the week (0 == Sunday).\n */\n firstDay(localeId) {\n return firstDay(localeId || this.localeId);\n }\n /**\n * Returns the start and end index of the locale weekend starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The the start and end index of the locale weekend (0 == Sunday).\n */\n weekendRange(localeId) {\n return weekendRange(localeId || this.localeId);\n }\n}\nCldrIntlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CldrIntlService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nCldrIntlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CldrIntlService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CldrIntlService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst isNumeric = (value) => !isNaN(value - parseFloat(value));\n/**\n * Formats a date value to a string based on the requested format.\n * This pipe uses the [IntlService]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
    \n *
  • {{date | kendoDate }}
  • \n *
  • {{milliseconds | kendoDate: 'M/dd/yyy' }}
  • \n *
  • {{stringDate | kendoDate: 'G' }}
  • \n *
\n * ```\n */\nclass DatePipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - (Optional) The ID of the locale which will be used instead of the default one.\n * @return - The formatted date.\n */\n transform(value, format = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format, localeId);\n }\n return value;\n }\n normalize(value) {\n if (value && typeof value === 'string') {\n value = this.intlService.parseDate(value);\n }\n else if (value && isNumeric(value)) {\n value = new Date(parseFloat(value));\n }\n return value;\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DatePipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DatePipe, name: \"kendoDate\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoDate'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\n/**\n * Formats a number value to a string based on the requested format.\n * This pipe uses the [`IntlService`]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n *
    \n *
  • {{decimal | kendoNumber:'c' }}
  • \n *
  • {{stringNumber | kendoNumber:'p' }}
  • \n *
  • {{int | kendoNumber:'##.00' }}
  • \n *
\n * ```\n */\nclass NumberPipe {\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Number` object into a string based on the specified format.\n * If no format is provided, the value is formatted as decimal number using the\n * [`\"n\"`](https://github.com/telerik/kendo-intl/blob/master/docs/num-formatting/index.md#standard) format.\n *\n * @param value - The numer that will be formatted.\n * @param format - The format string or options.\n * @param localeId - (Optional) The locale ID that will be used in place of the default one.\n * @return - The formatted number.\n */\n transform(value, format, localeId) {\n if (typeof value === 'string') {\n value = this.intlService.parseNumber(value);\n }\n if (value !== null && value !== undefined) {\n return this.intlService.formatNumber(value, format, localeId);\n }\n return value;\n }\n}\nNumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NumberPipe, deps: [{ token: IntlService }], target: i0.ɵɵFactoryTarget.Pipe });\nNumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NumberPipe, name: \"kendoNumber\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NumberPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'kendoNumber'\n }]\n }], ctorParameters: function () { return [{ type: IntlService }]; } });\n\nconst pipes = [\n DatePipe,\n NumberPipe\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi']docs/ts/latest/guide/ngmodule.html)\n * definition for the Intl services.\n */\nclass IntlModule {\n}\nIntlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nIntlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlModule, declarations: [DatePipe,\n NumberPipe], exports: [DatePipe,\n NumberPipe] });\nIntlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: IntlModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [pipes],\n exports: [pipes]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CldrIntlService, DatePipe, IntlModule, IntlService, NumberPipe, cldrServiceFactory, dateFieldName, dateFormatNames, firstDay, format, formatDate, formatNumber, load, localeData, numberSymbols, parseDate, parseNumber, setData, splitDateFormat, toString, weekendRange };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, InjectionToken, Inject, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { skip, map, tap } from 'rxjs/operators';\n\n/**\n * A base class for a service that returns localized messages.\n *\n * For more information, refer to the section on [using the message service]({% slug messages_l10n %}#toc-using-the-message-service).\n */\nclass MessageService {\n /**\n * @hidden\n */\n constructor() {\n /**\n * @hidden\n */\n this.changes = new BehaviorSubject({ rtl: undefined });\n /* noop */\n }\n /**\n * Notifies the components that the messages were changed.\n *\n * @param rtl - (Optional) A new value for the [text direction token]({% slug api_l10n_rtl %}).\n */\n notify(rtl) {\n this.changes.next({ rtl });\n }\n /**\n * Returns a localized message for the supplied key.\n *\n * @param _key - The message key. For example, `\"kendo.grid.noRecords\"`.\n * @return - The localized message for this key or `undefined` if not found.\n */\n get(_key) {\n return undefined;\n }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: MessageService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * Base class that acts as a component messages container.\n *\n * For internal use.\n * @hidden\n */\nclass ComponentMessages {\n get override() {\n return false;\n }\n ngOnChanges(changes) {\n this.register(changes);\n if (Object.keys(changes).some(field => !changes[field].isFirstChange())) {\n this.service.notifyChanges();\n }\n }\n ngOnInit() {\n this.subscription = this.service.changes.pipe(skip(1)).subscribe(() => this.register(this));\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n register(changes) {\n const keys = Object.keys(changes);\n keys.forEach(key => this.service.register(key, this[key], this.override));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\nComponentMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ComponentMessages, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nComponentMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ComponentMessages, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ComponentMessages, decorators: [{\n type: Directive,\n args: [{}]\n }] });\n\n/**\n * A token that specifies the text direction of Kendo UI for Angular components.\n *\n * {% embed_file rtl/app.module.ts preview %}\n * {% embed_file rtl/app.component.ts %}\n * {% embed_file shared/main.ts hidden %}\n *\n */\nconst RTL = new InjectionToken(\"Kendo UI Right-to-Left token\");\n\n/**\n * Localization prefix for the component messages.\n *\n * For internal use.\n * @hidden\n */\nconst L10N_PREFIX = new InjectionToken('Localization key prefix');\n/**\n * Component localization service.\n *\n * For internal use.\n * @hidden\n */\nclass LocalizationService {\n constructor(prefix, messageService, _rtl) {\n this.prefix = prefix;\n this.messageService = messageService;\n this._rtl = _rtl;\n this.changes = new BehaviorSubject({ rtl: this._rtl });\n this.dictionary = {};\n if (messageService) {\n this.subscription = messageService.changes\n .pipe(map(({ rtl }) => rtl !== undefined ? rtl : this._rtl), tap(rtl => this._rtl = rtl))\n .subscribe(rtl => {\n this.dictionary = {};\n this.changes.next({ rtl });\n });\n }\n }\n get rtl() {\n return this._rtl;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n get(shortKey) {\n const key = this.key(shortKey);\n return this.dictionary[key];\n }\n register(shortKey, value, override = false) {\n const key = this.key(shortKey);\n let message = value;\n if (!override) {\n if (Object.hasOwnProperty.call(this.dictionary, key)) {\n return;\n }\n message = this.defaultValue(key, value);\n }\n this.dictionary[key] = message;\n }\n notifyChanges() {\n this.changes.next({ rtl: this.rtl });\n }\n key(shortKey) {\n return this.prefix + '.' + shortKey;\n }\n defaultValue(key, value) {\n if (!this.messageService) {\n return value;\n }\n const alt = this.messageService.get(key);\n return (alt === undefined) ? value : alt;\n }\n}\nLocalizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizationService, deps: [{ token: L10N_PREFIX }, { token: MessageService, optional: true }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLocalizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [L10N_PREFIX]\n }] }, { type: MessageService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [RTL]\n }] }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ComponentMessages, L10N_PREFIX, LocalizationService, MessageService, RTL };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Input, HostBinding, forwardRef, Component, NgModule, EventEmitter, isDevMode, Output, ContentChild, ViewChild } from '@angular/core';\nimport { isDocumentAvailable, guid, hasObservers, KendoInput } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgControl } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * @hidden\n */\nconst isInputElement = (component) => component instanceof HTMLElement;\n/**\n * @hidden\n */\nconst inputElementHasAttr = (element, attribute) => element.hasAttribute(attribute);\n/**\n * @hidden\n */\nconst getWrappedNativeInput = (element) => element.querySelector('kendo-label > input, kendo-label > textarea, kendo-label > select');\n/**\n * @hidden\n */\nconst getRootElement = (element) => {\n if (!element) {\n return null;\n }\n let rootElement = element;\n while (rootElement.parentElement) {\n rootElement = rootElement.parentElement;\n }\n return rootElement;\n};\n\n/**\n * Represents the [Kendo UI Label directive for Angular]({% slug overview_label %}).\n * The Label associates a focusable Angular component or an HTML element\n * with a `label` tag by using the `[for]` property binding.\n *\n * To associate a component by using the `label` element, either:\n * * Set the `[for]` property binding to a\n * [template reference variable](link:site.data.urls.angular['templatesyntax']#template-reference-variables--var-), or\n * * Set the `[for]` property binding to an `id` HTML string value.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n *
\n * \n * \n *
\n *\n *
\n * \n * \n *
\n *
\n * `\n * })\n * class AppComponent { }\n * ```\n */\nclass LabelDirective {\n constructor(label, renderer, zone) {\n this.label = label;\n this.renderer = renderer;\n this.zone = zone;\n /**\n * @hidden\n *\n * Allows the user to specify if the label CSS class should be rendered or not.\n */\n this.labelClass = true;\n this.handleClick = () => {\n const component = this.getFocusableComponent();\n if (!component) {\n return;\n }\n if (component.focus) {\n component.focus();\n }\n };\n }\n get labelFor() {\n if (typeof this.for === 'string') {\n return this.for;\n }\n if (!isDocumentAvailable()) {\n return null;\n }\n const component = this.getFocusableComponent() || {};\n if (isInputElement(component) && !inputElementHasAttr(component, 'id')) {\n this.renderer.setAttribute(component, 'id', `k-${guid()}`);\n }\n return component.focusableId || component.id || null;\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.setAriaLabelledby();\n this.zone.runOutsideAngular(() => this.clickListener = this.renderer.listen(this.label.nativeElement, 'click', this.handleClick));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.clickListener) {\n this.clickListener();\n }\n }\n /**\n * @hidden\n */\n setAriaLabelledby() {\n if (!isDocumentAvailable()) {\n return;\n }\n const component = this.getFocusableComponent();\n if (component && component.focusableId) {\n const rootElement = getRootElement(this.label.nativeElement);\n const labelTarget = rootElement.querySelector(`#${component.focusableId}`);\n const labelElement = this.label.nativeElement;\n const id = labelElement.id || `k-${guid()}`;\n if (!labelElement.getAttribute('id')) {\n this.renderer.setAttribute(labelElement, 'id', id);\n }\n // Editor in iframe mode needs special treatment\n if (component.focusableId.startsWith('k-editor') && component.iframe) {\n component.contentAreaLoaded.subscribe(() => {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n const editableElement = component.container.element.nativeElement.contentDocument.body.firstElementChild;\n this.renderer.setAttribute(editableElement, 'aria-label', labelElement.textContent);\n });\n });\n });\n }\n if (!labelTarget) {\n return;\n }\n this.renderer.setAttribute(labelTarget, 'aria-labelledby', id);\n }\n }\n getFocusableComponent() {\n const target = this.for;\n return target && target.focus !== undefined ? target : null;\n }\n}\nLabelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nLabelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LabelDirective, selector: \"label[for]\", inputs: { for: \"for\", labelClass: \"labelClass\" }, host: { properties: { \"attr.for\": \"this.labelFor\", \"class.k-label\": \"this.labelClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'label[for]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { for: [{\n type: Input\n }], labelFor: [{\n type: HostBinding,\n args: ['attr.for']\n }], labelClass: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.k-label']\n }] } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: Messages, selector: \"kendo-label-messages-base\", inputs: { optional: \"optional\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-label-messages-base'\n }]\n }], propDecorators: { optional: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `\n [kendoLabelLocalizedMessages],\n [kendoFloatingLabelLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug label_globalization %}#toc-localization)).\n */\nclass CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CustomMessagesComponent, selector: \"kendo-label-messages, kendo-floatinglabel-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-label-messages, kendo-floatinglabel-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst SHARED_DIRECTIVES = [\n LocalizedMessagesDirective,\n CustomMessagesComponent\n];\n/**\n * @hidden\n */\nclass SharedDirectivesModule {\n}\nSharedDirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SharedDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedDirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SharedDirectivesModule, declarations: [LocalizedMessagesDirective,\n CustomMessagesComponent], exports: [LocalizedMessagesDirective,\n CustomMessagesComponent] });\nSharedDirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SharedDirectivesModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SharedDirectivesModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SHARED_DIRECTIVES],\n exports: [SHARED_DIRECTIVES]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-label',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142387,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * @hidden\n */\nclass FloatingLabelInputAdapter {\n constructor(component, formControl) {\n this.component = component;\n const isObservableOrEventEmitter = (event) => event instanceof Observable || event instanceof EventEmitter;\n if (isObservableOrEventEmitter(component.onFocus)) {\n this.onFocus = component.onFocus;\n }\n if (isObservableOrEventEmitter(component.autoFillStart)) {\n this.autoFillStart = component.autoFillStart;\n }\n if (isObservableOrEventEmitter(component.autoFillEnd)) {\n this.autoFillEnd = component.autoFillEnd;\n }\n if (isObservableOrEventEmitter(component.onBlur)) {\n this.onBlur = component.onBlur;\n }\n if (formControl) {\n this.onValueChange = formControl.valueChanges;\n }\n else if (component.valueChange) {\n this.onValueChange = component.valueChange;\n }\n }\n get focusableId() {\n const component = this.component;\n if ('focusableId' in component) {\n return component.focusableId;\n }\n else if ('id' in component) {\n return component.id;\n }\n return \"\";\n }\n set focusableId(value) {\n const component = this.component;\n if ('focusableId' in component) {\n component.focusableId = value;\n }\n else if ('id' in component) {\n component.id = value;\n }\n }\n}\n\nconst isFunction = (x) => Object.prototype.toString.call(x) === '[object Function]';\n/**\n * Represents the [Kendo UI FloatingLabel component for Angular]({% slug overview_floatinglabel %}).\n * Provides floating labels to `input` elements.\n *\n * The FloatingLabel supports both Template and Reactive Forms and\n * [can contain Kendo UI for Angular Input components such as `kendo-combobox` and `kendo-numerictextbox`,\n * or `kendo-textbox`](slug:overview_floatinglabel#toc-implementing-floating-labels).\n *\n * @example\n * ```html\n * \n * \n * \n * ```\n */\nclass FloatingLabelComponent {\n constructor(elementRef, renderer, changeDetectorRef, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\n this.localization = localization;\n this.hostClasses = true;\n /**\n * Fires after the floating label position is changed.\n */\n this.positionChange = new EventEmitter();\n /**\n * @hidden\n */\n this.focused = false;\n /**\n * @hidden\n */\n this.empty = true;\n /**\n * @hidden\n */\n this.invalid = false;\n /**\n * @hidden\n */\n this.labelId = `k-${guid()}`;\n this.autoFillStarted = false;\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, \"id\");\n }\n /**\n * Represents the current floating label position.\n */\n get labelPosition() {\n if (!this.empty) {\n return 'Out';\n }\n return this.focused ? 'Out' : 'In';\n }\n get focusedClass() {\n return this.focused;\n }\n get invalidClass() {\n return this.invalid;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.validateSetup();\n const control = new FloatingLabelInputAdapter(this.kendoInput || this.formControl.valueAccessor, this.formControl);\n this.addHandlers(control);\n this.setLabelFor(control);\n }\n ngAfterViewInit() {\n if (this.kendoInput) {\n this.setAriaLabelledby(this.kendoInput);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n subscribe(control, eventName, handler) {\n if (control[eventName] instanceof EventEmitter) {\n const subscription = control[eventName].subscribe(handler);\n if (!this.subscription) {\n this.subscription = subscription;\n }\n else {\n this.subscription.add(subscription);\n }\n }\n }\n updateState() {\n const empty = value => {\n // zero is not an empty value (e.g., NumericTextBox)\n if (value === 0 || value === false) {\n return false;\n }\n // empty arrays are an empty value (e.g., MultiSelect)\n if (Array.isArray(value) && !value.length) {\n return true;\n }\n return !value;\n };\n const formControl = this.formControl;\n if (formControl) {\n const valueAccessor = formControl.valueAccessor;\n if (isFunction(valueAccessor.isEmpty)) {\n this.empty = valueAccessor.isEmpty();\n }\n else {\n this.empty = empty(formControl.value);\n }\n this.invalid = formControl.invalid && (formControl.touched || formControl.dirty);\n }\n else {\n this.empty = isFunction(this.kendoInput.isEmpty) ?\n this.kendoInput.isEmpty() : empty(this.kendoInput.value);\n }\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n }\n this.changeDetectorRef.markForCheck();\n }\n setAriaLabelledby(component) {\n const componentId = component.focusableId || component.id;\n if (componentId) {\n const focusableElement = this.elementRef.nativeElement.querySelector(`#${componentId}`);\n this.renderer.setAttribute(focusableElement, 'aria-labelledby', this.labelId);\n }\n }\n setLabelFor(control) {\n const controlId = control.focusableId || control.id;\n if (this.id && controlId) {\n // input wins\n this.id = controlId;\n }\n else if (this.id) {\n control.focusableId = this.id;\n }\n else if (controlId) {\n this.id = controlId;\n }\n else {\n const id = `k-${guid()}`;\n control.focusableId = id;\n this.id = id;\n }\n }\n handleAutofill(control) {\n this.subscribe(control, 'autoFillStart', () => {\n this.autoFillStarted = true;\n this.renderer.removeClass(this.elementRef.nativeElement, 'k-empty');\n });\n this.subscribe(control, 'autoFillEnd', () => {\n if (this.autoFillStarted) {\n this.autoFillStarted = false;\n if (this.empty) {\n this.renderer.addClass(this.elementRef.nativeElement, 'k-empty');\n }\n }\n });\n }\n addHandlers(control) {\n const setFocus = (isFocused) => () => {\n this.focused = isFocused;\n this.updateState();\n if (!this.empty) {\n return;\n }\n if (hasObservers(this.positionChange)) {\n this.positionChange.emit(isFocused ? 'Out' : 'In');\n }\n };\n this.subscribe(control, 'onFocus', setFocus(true));\n this.subscribe(control, 'onBlur', setFocus(false));\n this.handleAutofill(control);\n const updateState = () => this.updateState();\n updateState();\n this.subscribe(control, 'onValueChange', updateState);\n }\n validateSetup() {\n if (!this.formControl && !this.kendoInput) {\n if (isDevMode()) {\n throw new Error(\"The FloatingLabelComponent requires a Kendo Input component\" +\n \" or a forms-bound component to function properly.\");\n }\n return;\n }\n }\n}\nFloatingLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nFloatingLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: FloatingLabelComponent, selector: \"kendo-floatinglabel\", inputs: { labelCssStyle: \"labelCssStyle\", labelCssClass: \"labelCssClass\", id: \"id\", text: \"text\", optional: \"optional\" }, outputs: { positionChange: \"positionChange\" }, host: { properties: { \"class.k-floating-label-container\": \"this.hostClasses\", \"class.k-focus\": \"this.focusedClass\", \"class.k-invalid\": \"this.invalidClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true }, { propertyName: \"formControl\", first: true, predicate: NgControl, descendants: true }], exportAs: [\"kendoFloatingLabel\"], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-floatinglabel',\n exportAs: 'kendoFloatingLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.floatinglabel'\n }\n ],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-floating-label-container']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], invalidClass: [{\n type: HostBinding,\n args: ['class.k-invalid']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], labelCssStyle: [{\n type: Input\n }], labelCssClass: [{\n type: Input\n }], id: [{\n type: Input\n }], text: [{\n type: Input\n }], optional: [{\n type: Input\n }], positionChange: [{\n type: Output\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: false }]\n }], formControl: [{\n type: ContentChild,\n args: [NgControl, { static: false }]\n }] } });\n\nconst COMPONENT_DIRECTIVES$1 = [FloatingLabelComponent];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the TextBox directive.\n *\n * @example\n *\n * ```ts-no-run\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, FloatingLabelModule], // import FloatingLabel module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass FloatingLabelModule {\n}\nFloatingLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFloatingLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelModule, declarations: [FloatingLabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [FloatingLabelComponent, SharedDirectivesModule] });\nFloatingLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelModule, imports: [[CommonModule, SharedDirectivesModule], SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: FloatingLabelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [...COMPONENT_DIRECTIVES$1],\n exports: [...COMPONENT_DIRECTIVES$1, SharedDirectivesModule],\n imports: [CommonModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI Label component for Angular]({% slug overview_label %}).\n *\n * Associates a label with input elements or components.\n *\n * @example\n * ```html\n * \n * \n * \n * ```\n */\nclass LabelComponent {\n constructor(elementRef, renderer, localization) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.localization = localization;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'id');\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n if (this.for) {\n this.control = this.for;\n return;\n }\n const wrappedNativeInput = getWrappedNativeInput(this.elementRef.nativeElement);\n if (wrappedNativeInput) {\n if (!wrappedNativeInput.hasAttribute('id')) {\n this.renderer.setAttribute(wrappedNativeInput, 'id', `k-${guid()}`);\n }\n this.control = wrappedNativeInput;\n return;\n }\n this.control = this.kendoInput;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.labelDirective.setAriaLabelledby();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n}\nLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LabelComponent, selector: \"kendo-label\", inputs: { text: \"text\", for: \"for\", optional: \"optional\", labelCssStyle: \"labelCssStyle\", labelCssClass: \"labelCssClass\" }, host: { properties: { \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ], queries: [{ propertyName: \"kendoInput\", first: true, predicate: KendoInput, descendants: true, static: true }], viewQueries: [{ propertyName: \"labelDirective\", first: true, predicate: LabelDirective, descendants: true, static: true }], exportAs: [\"kendoLabel\"], ngImport: i0, template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `, isInline: true, directives: [{ type: LocalizedMessagesDirective, selector: \"\\n [kendoLabelLocalizedMessages],\\n [kendoFloatingLabelLocalizedMessages]\\n \" }, { type: LabelDirective, selector: \"label[for]\", inputs: [\"for\", \"labelClass\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-label',\n exportAs: 'kendoLabel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.label'\n }\n ],\n template: `\n \n \n \n {{ text }}({{textFor('optional')}})\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], text: [{\n type: Input\n }], for: [{\n type: Input\n }], optional: [{\n type: Input\n }], labelCssStyle: [{\n type: Input\n }], labelCssClass: [{\n type: Input\n }], labelDirective: [{\n type: ViewChild,\n args: [LabelDirective, { static: true }]\n }], kendoInput: [{\n type: ContentChild,\n args: [KendoInput, { static: true }]\n }] } });\n\nconst COMPONENT_DIRECTIVES = [\n LabelDirective,\n LabelComponent\n];\n/**\n * The exported package module.\n *\n * The package exports:\n * - `LabelDirective`—The Label directive class.\n * - `LabelComponent`—The Label component class\n * - `FLoatingLabel`—The FloatingLabel component class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Label module\n * import { LabelModule } from '@progress/kendo-angular-label';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LabelModule], // import Label module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass LabelModule {\n}\nLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelModule, declarations: [LabelDirective,\n LabelComponent], imports: [CommonModule, SharedDirectivesModule], exports: [LabelDirective,\n LabelComponent, FloatingLabelModule, SharedDirectivesModule] });\nLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelModule, imports: [[CommonModule, SharedDirectivesModule], FloatingLabelModule, SharedDirectivesModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LabelModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, SharedDirectivesModule],\n declarations: [...COMPONENT_DIRECTIVES],\n exports: [...COMPONENT_DIRECTIVES, FloatingLabelModule, SharedDirectivesModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, FloatingLabelComponent, FloatingLabelModule, LabelComponent, LabelDirective, LabelModule, LocalizedMessagesDirective, SharedDirectivesModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i0 from '@angular/core';\nimport { isDevMode, Component, HostBinding, Input, Directive, forwardRef, EventEmitter, Output, ViewChild, ContentChild, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i2 from '@progress/kendo-angular-common';\nimport { hasObservers, isDocumentAvailable, isChanged, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-progressbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142230,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * @hidden\n */\nconst MIN_MAX_ERROR_MESSAGE = `The max value should be greater than the min.`;\n/**\n * @hidden\n */\nconst LABEL_DECIMALS = 3;\n/**\n * @hidden\n */\nconst MIN_RATIO = 0.0001;\n\n/**\n * @hidden\n */\nconst formatValue = (value, min, max, label) => {\n const defaultFormattedValue = truncateNumber(value);\n if (typeof label !== 'boolean') {\n if (typeof label.format === 'string') {\n switch (label.format) {\n case 'value':\n return defaultFormattedValue;\n case 'percent':\n return `${Math.floor(calculatePercentage(value, min, max))}%`;\n default:\n return defaultFormattedValue;\n }\n }\n else if (typeof label.format === 'function') {\n return label.format(value);\n }\n else {\n return defaultFormattedValue;\n }\n }\n return defaultFormattedValue;\n};\n/**\n * @hidden\n */\nconst validateRange = (min, max) => {\n if (isDevMode && min > max) {\n throw new Error(MIN_MAX_ERROR_MESSAGE);\n }\n};\n/**\n * @hidden\n */\nconst adjustValueToRange = (min, max, value) => Math.max(Math.min(value, max), min);\n/**\n * @hidden\n */\nconst calculatePercentage = (value, min, max) => {\n const decimalValue = Math.abs((value - min) / (max - min));\n return decimalValue * 100;\n};\n/**\n * @hidden\n */\nconst truncateNumber = (value) => {\n const numberParts = value.toString().split('.');\n return numberParts.length === 1 ? `${numberParts[0]}` : `${numberParts[0]}.${numberParts[1].substr(0, LABEL_DECIMALS)}`;\n};\n/**\n * @hidden\n */\nconst calculateRatio = (min, max, value) => Math.max((value - min) / (max - min), MIN_RATIO);\n/**\n * @hidden\n */\nconst extractValueFromChanges = (changes, type, value) => changes[type] && changes[type].currentValue !== undefined ? changes[type].currentValue : value;\n/**\n * @hidden\n */\nconst runAnimation = (changes, animation, previousValue, displayValue) => animation && typeof requestAnimationFrame !== 'undefined' && changes['value'] && previousValue !== displayValue;\n/**\n * @hidden\n */\nconst stopCurrentAnimation = (changes) => {\n const isAnimationChanged = Boolean(changes['animation']);\n const hasAnimation = isAnimationChanged && changes['animation'].currentValue;\n return isAnimationChanged && !hasAnimation;\n};\n/**\n * @hidden\n */\nconst setProgressBarStyles = (props, renderer) => {\n props.forEach(prop => {\n renderer[prop.method](prop.el, prop.attr, `${prop.attrValue}`);\n });\n};\n/**\n * @hidden\n */\nconst removeProgressBarStyles = (props, renderer) => {\n props.forEach(prop => {\n renderer[prop.method](prop.el, prop.attr);\n });\n};\n/**\n * @hidden\n */\nconst hasElementSize = (element) => {\n return !!(element.style.width && element.style.height);\n};\n\n/**\n * @hidden\n */\nclass ProgressBarBase {\n /**\n * @hidden\n */\n constructor(elem, renderer, localization) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.hostClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * The maximum value of the ProgressBar.\n * Defaults to `100`.\n */\n this.max = 100;\n /**\n * The minimum value of the ProgressBar.\n * Defaults to `0`.\n */\n this.min = 0;\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * By default, the value is equal to the `min` value.\n */\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * Defaults to `0`.\n */\n this.value = 0;\n /**\n * Defines the orientation of the ProgressBar\n * ([see example]({% slug progressbar_orientation %})).\n * Defaults to `horizontal`.\n */\n this.orientation = 'horizontal';\n /**\n * If set to `true`, the ProgressBar will be disabled\n * ([see example]({% slug progressbar_disabled %})).\n * It will still allow you to change its value.\n * Defaults to `false`.\n */\n this.disabled = false;\n /**\n * If set to `true`, the ProgressBar will be reversed\n * ([see example]({% slug progressbar_direction %})).\n * Defaults to `false`.\n */\n this.reverse = false;\n /**\n * Sets the `indeterminate` state of the ProgressBar.\n * Defaults to `false`.\n */\n this.indeterminate = false;\n this.displayValue = 0;\n this.previousValue = 0;\n validatePackage(packageMetadata);\n this.localizationChangeSubscription = localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n get isVertical() {\n return this.orientation === 'vertical';\n }\n get disabledClass() {\n return this.disabled;\n }\n get reverseClass() {\n return this.reverse;\n }\n get indeterminateClass() {\n return this.indeterminate;\n }\n get dirAttribute() {\n return this.direction;\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.displayValue);\n }\n /**\n * @hidden\n */\n get isCompleted() {\n return this.value === this.max;\n }\n /**\n * @hidden\n */\n get statusWidth() {\n return this.orientation === 'horizontal' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusHeight() {\n return this.orientation === 'vertical' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperWidth() {\n return this.orientation === 'horizontal' ? 100 / this._progressRatio : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperHeight() {\n return this.orientation === 'vertical' ? 100 / this._progressRatio : 100;\n }\n get _progressRatio() {\n return calculateRatio(this.min, this.max, this.displayValue);\n }\n ngAfterViewInit() {\n const elem = this.elem.nativeElement;\n const label = this.localization.get('progressBarLabel');\n this.renderer.setAttribute(elem, 'aria-label', label);\n }\n ngOnChanges(changes) {\n const min = extractValueFromChanges(changes, 'min', this.min);\n const max = extractValueFromChanges(changes, 'max', this.max);\n const value = extractValueFromChanges(changes, 'value', this.value);\n if (changes['min'] || changes['max'] || changes['value']) {\n if (changes['min'] || changes['max']) {\n validateRange(min, max);\n }\n if (changes['value']) {\n if (value == null || Number.isNaN(value)) {\n this.value = min;\n }\n const previousValue = this.displayValue;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n this.previousValue = previousValue;\n }\n this.min = min;\n this.max = max;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n}\nProgressBarBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarBase, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nProgressBarBase.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ProgressBarBase, selector: \"ng-component\", inputs: { max: \"max\", min: \"min\", value: \"value\", orientation: \"orientation\", disabled: \"disabled\", reverse: \"reverse\", indeterminate: \"indeterminate\" }, host: { properties: { \"class.k-progressbar\": \"this.hostClasses\", \"class.k-progressbar-horizontal\": \"this.isHorizontal\", \"class.k-progressbar-vertical\": \"this.isVertical\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-progressbar-reverse\": \"this.reverseClass\", \"class.k-progressbar-indeterminate\": \"this.indeterminateClass\", \"attr.dir\": \"this.dirAttribute\", \"attr.role\": \"this.roleAttribute\", \"attr.aria-valuemin\": \"this.ariaMinAttribute\", \"attr.aria-valuemax\": \"this.ariaMaxAttribute\", \"attr.aria-valuenow\": \"this.ariaValueAttribute\" } }, usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarBase, decorators: [{\n type: Component,\n args: [{\n template: ''\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-progressbar']\n }], isHorizontal: [{\n type: HostBinding,\n args: ['class.k-progressbar-horizontal']\n }], isVertical: [{\n type: HostBinding,\n args: ['class.k-progressbar-vertical']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], reverseClass: [{\n type: HostBinding,\n args: ['class.k-progressbar-reverse']\n }], indeterminateClass: [{\n type: HostBinding,\n args: ['class.k-progressbar-indeterminate']\n }], dirAttribute: [{\n type: HostBinding,\n args: ['attr.dir']\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], ariaMinAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], ariaMaxAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }], ariaValueAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], value: [{\n type: Input\n }], orientation: [{\n type: Input\n }], disabled: [{\n type: Input\n }], reverse: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass ProgressBarMessages extends ComponentMessages {\n}\nProgressBarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nProgressBarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ProgressBarMessages, inputs: { progressBarLabel: \"progressBarLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarMessages, decorators: [{\n type: Directive,\n args: [{}]\n }], propDecorators: { progressBarLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedProgressBarMessagesDirective extends ProgressBarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedProgressBarMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedProgressBarMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedProgressBarMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedProgressBarMessagesDirective, selector: \"[kendoProgressBarLocalizedMessages]\", providers: [\n {\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => LocalizedProgressBarMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedProgressBarMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => LocalizedProgressBarMessagesDirective)\n }\n ],\n selector: `[kendoProgressBarLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI ProgressBar component for Angular]({% slug overview_progressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 50;\n * }\n * ```\n */\nclass ProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, elem, renderer, zone) {\n super(elem, renderer, localization);\n this.localization = localization;\n this.elem = elem;\n this.renderer = renderer;\n this.zone = zone;\n /**\n * Determines whether the status label will be visible.\n * Defaults to `true`—the label will be visible and displayed with the default\n * `LabelSettings` having its position set to `end` and its format set to `value`.\n */\n this.label = true;\n /**\n * The animation configuration of the ProgressBar.\n * Defaults to `false`.\n */\n this.animation = false;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n }\n /**\n * @hidden\n */\n get showLabel() {\n if (typeof this.label === 'boolean') {\n return this.label;\n }\n else {\n if (this.label && !this.label.hasOwnProperty('visible')) {\n this.label.visible = true;\n }\n return this.label.visible;\n }\n }\n /**\n * @hidden\n */\n get labelPosition() {\n if (typeof this.label === 'boolean') {\n return 'end';\n }\n else {\n if (this.label && !this.label.hasOwnProperty('position')) {\n this.label.position = 'end';\n }\n return this.label.position;\n }\n }\n /**\n * @hidden\n */\n get isPositionStart() {\n return this.labelPosition === 'start';\n }\n /**\n * @hidden\n */\n get isPositionCenter() {\n return this.labelPosition === 'center';\n }\n /**\n * @hidden\n */\n get isPositionEnd() {\n return this.labelPosition === 'end';\n }\n /**\n * @hidden\n */\n get formattedLabelValue() {\n return formatValue(this.displayValue, this.min, this.max, this.label);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (this.isAnimationInProgress && stopCurrentAnimation(changes)) {\n this.cancelCurrentAnimation = true;\n }\n if (runAnimation(changes, this.animation, this.previousValue, this.displayValue) && !changes['value'].firstChange) {\n this.startAnimation(this.previousValue);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n /**\n * @hidden\n */\n startAnimation(previousValue) {\n this.isAnimationInProgress = true;\n const element = this.progressStatusElement.nativeElement;\n const wrapperElement = this.progressStatusWrapperElement.nativeElement;\n const animationOptions = this.getAnimationOptions(previousValue);\n this.zone.runOutsideAngular(() => {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n const animate = () => {\n const elapsed = new Date().getTime() - animationOptions.startTime;\n const position = Math.min(elapsed / animationOptions.duration, 1);\n const size = animationOptions.startSize + animationOptions.deltaSize * position;\n const wrapperSize = (100 / size) * 100;\n this.renderValueChange(element, wrapperElement, animationOptions.property, size, wrapperSize);\n if (position < 1) {\n if (this.cancelCurrentAnimation) {\n this.resetProgress(element, wrapperElement, animationOptions.property);\n return;\n }\n this.animationFrame = requestAnimationFrame(animate);\n }\n else {\n this.stopAnimation(previousValue);\n }\n };\n animate();\n });\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'boolean') {\n return 400;\n }\n else {\n if (this.animation && !this.animation.hasOwnProperty('duration')) {\n this.animation.duration = 400;\n }\n return this.animation.duration;\n }\n }\n stopAnimation(value) {\n if (hasObservers(this.animationEnd)) {\n this.zone.run(() => {\n this.animationEnd.emit({\n from: value,\n to: this.displayValue\n });\n });\n }\n this.zone.run(() => {\n this.isAnimationInProgress = false;\n });\n }\n getAnimationOptions(value) {\n const isHorizontal = this.orientation === 'horizontal';\n const previousRatio = calculateRatio(this.min, this.max, value);\n const previousStatusWidth = isHorizontal ? previousRatio * 100 : 100;\n const previousStatusHeight = !isHorizontal ? previousRatio * 100 : 100;\n const property = isHorizontal ? 'width' : 'height';\n const startTime = new Date().getTime();\n const startSize = isHorizontal ? previousStatusWidth : previousStatusHeight;\n const deltaSize = isHorizontal ? this.statusWidth - previousStatusWidth : this.statusHeight - previousStatusHeight;\n const duration = this.animationDuration * Math.abs((deltaSize / 100));\n return {\n property,\n startTime,\n startSize,\n deltaSize,\n duration\n };\n }\n renderValueChange(element, wrapperElement, property, size, wrapperSize) {\n this.renderer.setStyle(element, property, size + '%');\n this.renderer.setStyle(wrapperElement, property, wrapperSize + '%');\n }\n resetProgress(element, wrapperElement, property) {\n const size = calculateRatio(this.min, this.max, this.value);\n const newSize = size * 100;\n const newWrapperSize = 100 / size;\n this.renderValueChange(element, wrapperElement, property, newSize, newWrapperSize);\n this.zone.run(() => {\n this.cancelCurrentAnimation = false;\n this.isAnimationInProgress = false;\n });\n }\n}\nProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ProgressBarComponent, selector: \"kendo-progressbar\", inputs: { label: \"label\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\", animation: \"animation\" }, outputs: { animationEnd: \"animationEnd\" }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ], viewQueries: [{ propertyName: \"progressStatusElement\", first: true, predicate: [\"progressStatus\"], descendants: true }, { propertyName: \"progressStatusWrapperElement\", first: true, predicate: [\"progressStatusWrap\"], descendants: true }], exportAs: [\"kendoProgressBar\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n \n \n \n {{formattedLabelValue}}\n \n \n \n {{formattedLabelValue}}\n \n \n `, isInline: true, directives: [{ type: LocalizedProgressBarMessagesDirective, selector: \"[kendoProgressBarLocalizedMessages]\" }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoProgressBar',\n selector: 'kendo-progressbar',\n template: `\n \n \n \n {{formattedLabelValue}}\n \n \n \n {{formattedLabelValue}}\n \n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { label: [{\n type: Input\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }], animation: [{\n type: Input\n }], animationEnd: [{\n type: Output\n }], progressStatusElement: [{\n type: ViewChild,\n args: ['progressStatus', { static: false }]\n }], progressStatusWrapperElement: [{\n type: ViewChild,\n args: ['progressStatusWrap', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ChunkProgressBar component for Angular]({% slug overview_chunkprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 40;\n * }\n * ```\n */\nclass ChunkProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, elem, renderer) {\n super(elem, renderer, localization);\n this.localization = localization;\n this.elem = elem;\n this.renderer = renderer;\n this.chunkClass = true;\n /**\n * Sets the number of chunks into which the ChunkProgressBar will be split.\n * Defaults to `5`.\n */\n this.chunkCount = 5;\n this._orientationStyles = {\n width: `${this.chunkSizePercentage}%`,\n height: null\n };\n }\n /**\n * @hidden\n */\n get chunks() {\n const count = this.chunkCount;\n const chunks = Array(count).fill(false);\n const completedChunks = Math.floor(this._progressRatio * count);\n for (let i = 0; i < completedChunks; i++) {\n chunks[i] = true;\n }\n return chunks;\n }\n /**\n * @hidden\n */\n get chunkSizePercentage() {\n return 100 / this.chunkCount;\n }\n /**\n * @hidden\n */\n get orientationStyles() {\n if (this.orientation === 'horizontal') {\n this._orientationStyles.width = `${this.chunkSizePercentage}%`;\n this._orientationStyles.height = null;\n }\n else {\n this._orientationStyles.height = `${this.chunkSizePercentage}%`;\n this._orientationStyles.width = null;\n }\n return this._orientationStyles;\n }\n}\nChunkProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ChunkProgressBarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nChunkProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ChunkProgressBarComponent, selector: \"kendo-chunkprogressbar\", inputs: { chunkCount: \"chunkCount\", progressCssStyle: \"progressCssStyle\", progressCssClass: \"progressCssClass\", emptyCssStyle: \"emptyCssStyle\", emptyCssClass: \"emptyCssClass\" }, host: { properties: { \"class.k-chunk-progressbar\": \"this.chunkClass\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ], exportAs: [\"kendoChunkProgressBar\"], usesInheritance: true, ngImport: i0, template: `\n \n \n
    \n
  • \n
  • \n
\n `, isInline: true, directives: [{ type: LocalizedProgressBarMessagesDirective, selector: \"[kendoProgressBarLocalizedMessages]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ChunkProgressBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoChunkProgressBar',\n selector: 'kendo-chunkprogressbar',\n template: `\n \n \n
    \n
  • \n
  • \n
\n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { chunkClass: [{\n type: HostBinding,\n args: ['class.k-chunk-progressbar']\n }], chunkCount: [{\n type: Input\n }], progressCssStyle: [{\n type: Input\n }], progressCssClass: [{\n type: Input\n }], emptyCssStyle: [{\n type: Input\n }], emptyCssClass: [{\n type: Input\n }] } });\n\n/**\n * A directive that selects a template within the component which will be used for the center template.\n * ([see example]({% slug center_template_circularprogressbar %})).\n */\nclass CircularProgressbarCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCircularProgressbarCenterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CircularProgressbarCenterTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCircularProgressbarCenterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CircularProgressbarCenterTemplateDirective, selector: \"[kendoCircularProgressbarCenterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CircularProgressbarCenterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCircularProgressbarCenterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nconst DEFAULT_SURFACE_SIZE = 200;\n/**\n * Represents the [Kendo UI Circular ProgressBar component for Angular]({% slug overview_circularprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public value: number = 50;\n * }\n * ```\n */\nclass CircularProgressBarComponent {\n constructor(renderer, cdr, localization, element, zone) {\n this.renderer = renderer;\n this.cdr = cdr;\n this.localization = localization;\n this.element = element;\n this.zone = zone;\n this.hostClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * Indicates whether an animation will be played on value changes.\n *\n * @default false\n */\n this.animation = false;\n /**\n * The opacity of the value arc.\n * @default 1\n */\n this.opacity = 1;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n this.centerTemplateContext = {};\n this._indeterminate = false;\n this._max = 100;\n this._min = 0;\n this._value = 0;\n this.previousValue = 0;\n this.internalValue = 0;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localization.changes.subscribe(this.rtlChange.bind(this)));\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.value);\n }\n /**\n * Sets the default value of the Circular Progressbar between `min` and `max`.\n *\n * @default 0\n */\n set value(value) {\n if (value > this.max) {\n this.handleErrors('value > max');\n }\n if (value < this.min) {\n this.handleErrors('value < min');\n }\n this.previousValue = this.value;\n this._value = value;\n }\n get value() {\n return this._value;\n }\n /**\n * The maximum value which the Circular Progressbar can accept.\n *\n * @default 100\n */\n set max(max) {\n if (max < this.min) {\n this.handleErrors('max < min');\n }\n this._max = max;\n }\n get max() {\n return this._max;\n }\n /**\n * The minimum value which the Circular Progressbar can accept.\n *\n * @default 0\n */\n set min(min) {\n if (min > this.max) {\n this.handleErrors('max < min');\n }\n this._min = min;\n }\n get min() {\n return this._min;\n }\n /**\n * Puts the Circular ProgressBar in indeterminate state.\n * @default false\n */\n set indeterminate(indeterminate) {\n this._indeterminate = indeterminate;\n }\n get indeterminate() {\n return this._indeterminate;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n const elem = this.element.nativeElement;\n const ariaLabel = this.localization.get('progressBarLabel');\n this.renderer.setAttribute(elem, 'aria-label', ariaLabel);\n this.initProgressArc();\n }\n ngOnChanges(changes) {\n const skipFirstChange = true;\n if (isChanged('value', changes, skipFirstChange) && this.progress) {\n if (this.animation) {\n this.progressbarAnimation();\n }\n else {\n const value = this.value - this.min;\n this.internalValue = changes['value'].currentValue;\n this.calculateProgress(value);\n }\n }\n if (changes['opacity'] && this.progress) {\n setProgressBarStyles([{ method: 'setAttribute', el: this.progress.nativeElement, attr: 'opacity', attrValue: this.opacity.toString() }], this.renderer);\n }\n if (changes['indeterminate'] && !changes['indeterminate'].firstChange) {\n this.indeterminateState();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onResize() {\n this.setStyles();\n const value = this.animation ? this.internalValue : this.value;\n this.calculateProgress(value);\n this.updateCenterTemplate(value);\n }\n initProgressArc() {\n this.setStyles();\n if (this.indeterminate) {\n this.indeterminateState();\n }\n else {\n if (!this.animation) {\n const value = this.value - this.min;\n this.calculateProgress(value);\n }\n else {\n this.progressbarAnimation();\n }\n }\n }\n calculateProgress(value) {\n if (this.progressColor) {\n this.updateProgressColor(value);\n }\n // needed when we have *ngIf inside the template to render different content depending on some condition\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n this.updateCenterTemplate(value + this.min);\n });\n const progressArc = this.progress.nativeElement;\n const radius = this.progress.nativeElement.r.baseVal.value;\n const circumference = Math.PI * (radius * 2);\n const dir = this.rtl ? circumference * -1 : circumference;\n const strokeDashOffest = circumference - dir * (value / (this.max - this.min));\n const progressCalculations = [\n { method: 'setStyle', el: progressArc, attr: 'strokeDasharray', attrValue: circumference.toString() },\n { method: 'setStyle', el: progressArc, attr: 'strokeDashoffset', attrValue: strokeDashOffest.toString() }\n ];\n setProgressBarStyles(progressCalculations, this.renderer);\n }\n progressbarAnimation() {\n const forwardProgress = {\n isOngoing: this.internalValue > this.value - this.min,\n isPositive: this.value >= this.previousValue\n };\n const backwardProgress = {\n isOngoing: this.internalValue < this.value - this.min,\n isNegative: this.value <= this.previousValue\n };\n if (forwardProgress.isOngoing && forwardProgress.isPositive ||\n backwardProgress.isOngoing && backwardProgress.isNegative) {\n return;\n }\n this.calculateProgress(this.internalValue);\n const from = this.internalValue;\n if (hasObservers(this.animationEnd)) {\n this.animationEnd.emit({\n from: from,\n to: this.internalValue\n });\n }\n // eslint-disable-next-line no-unused-expressions\n forwardProgress.isPositive ? this.internalValue += 1 : this.internalValue -= 1;\n requestAnimationFrame(this.progressbarAnimation.bind(this));\n }\n setStyles() {\n const progressArc = this.progress.nativeElement;\n const scale = this.scale.nativeElement;\n const surface = this.surface.nativeElement;\n const element = this.element.nativeElement;\n let elWidth = element.getBoundingClientRect().width;\n ;\n if (!hasElementSize(element)) {\n const surfaceSize = [\n { method: 'setStyle', el: surface, attr: 'width', attrValue: `${DEFAULT_SURFACE_SIZE}px` },\n { method: 'setStyle', el: surface, attr: 'height', attrValue: `${DEFAULT_SURFACE_SIZE}px` }\n ];\n elWidth = DEFAULT_SURFACE_SIZE;\n setProgressBarStyles(surfaceSize, this.renderer);\n }\n const attributesArray = [\n { method: 'setAttribute', el: progressArc, attr: 'r', attrValue: String((elWidth / 2) - 10) },\n { method: 'setAttribute', el: progressArc, attr: 'cx', attrValue: String((elWidth / 2)) },\n { method: 'setAttribute', el: progressArc, attr: 'cy', attrValue: String((elWidth / 2)) },\n { method: 'setAttribute', el: progressArc, attr: 'opacity', attrValue: String(this.opacity) },\n { method: 'setAttribute', el: scale, attr: 'r', attrValue: String((elWidth / 2) - 10) },\n { method: 'setAttribute', el: scale, attr: 'cx', attrValue: String(elWidth / 2) },\n { method: 'setAttribute', el: scale, attr: 'cy', attrValue: String(elWidth / 2) }\n ];\n setProgressBarStyles(attributesArray, this.renderer);\n }\n indeterminateState() {\n const progressArc = this.progress.nativeElement;\n if (this.indeterminate) {\n // the indeterminate state wont work as the `k-circular-progressbar-arc` has a transform: rotate(-90deg) which is\n // interfering with the svg animation as the animateTransform brings its own transform: rotate()\n // This will be like this until the themes release a new version, bringing a new class `k-circular-progressbar-indeterminate-arc`\n // containing only the necassery CSS styles and we will switch between them when the state of the progressbar is switched.\n this.calculateProgress(this.value - this.min);\n const rotate = this.rtl ? { from: 360, to: 0 } : { from: 0, to: 360 };\n let color;\n if (!this.progressColor) {\n color = getComputedStyle(progressArc).stroke;\n }\n const indeterminateStyles = [\n { method: 'setStyle', el: progressArc, attr: 'transform-origin', attrValue: 'center' },\n { method: 'setStyle', el: progressArc, attr: 'fill', attrValue: 'none' },\n { method: 'setStyle', el: progressArc, attr: 'stroke-linecap', attrValue: 'round' },\n { method: 'setStyle', el: progressArc, attr: 'stroke', attrValue: color ? color : this.currentColor }\n ];\n setProgressBarStyles(indeterminateStyles, this.renderer);\n this.renderer.removeClass(progressArc, 'k-circular-progressbar-arc');\n progressArc.innerHTML = ``;\n }\n else {\n this.renderer.addClass(progressArc, 'k-circular-progressbar-arc');\n const removeIndeterminateStyles = [\n { method: 'removeStyle', el: progressArc, attr: 'transform-origin' },\n { method: 'removeStyle', el: progressArc, attr: 'fill' },\n { method: 'removeStyle', el: progressArc, attr: 'stroke-linecap' }\n ];\n removeProgressBarStyles(removeIndeterminateStyles, this.renderer);\n progressArc.innerHTML = '';\n if (this.animation) {\n this.progressbarAnimation();\n }\n }\n }\n updateCenterTemplate(value) {\n if (!this.centerTemplate) {\n return;\n }\n this.centerTemplateContext.value = value;\n this.centerTemplateContext.color = this.currentColor;\n this.cdr.detectChanges();\n this.positionLabel();\n }\n positionLabel() {\n const labelEl = this.labelElement.nativeElement;\n const element = this.element.nativeElement;\n const surface = this.surface.nativeElement;\n let elWidth;\n let elHeight;\n if (!hasElementSize(element)) {\n const surfaceSize = surface.getBoundingClientRect();\n elWidth = surfaceSize.width;\n elHeight = surfaceSize.height;\n }\n else {\n const elementSize = element.getBoundingClientRect();\n elWidth = elementSize.width;\n elHeight = elementSize.height;\n }\n const left = (elWidth / 2) - (labelEl.offsetWidth / 2);\n const top = (elHeight / 2) - (labelEl.offsetHeight / 2);\n const labelCalculations = [\n { method: 'setStyle', el: labelEl, attr: 'left', attrValue: `${left}px` },\n { method: 'setStyle', el: labelEl, attr: 'top', attrValue: `${top}px` }\n ];\n setProgressBarStyles(labelCalculations, this.renderer);\n }\n get currentColor() {\n const currentColor = this.progress.nativeElement.style.stroke;\n return currentColor;\n }\n updateProgressColor(value) {\n const progressArc = this.progress.nativeElement;\n if (typeof this.progressColor === 'string') {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor);\n }\n else {\n for (let i = 0; i < this.progressColor.length; i++) {\n const from = this.progressColor[i].from;\n const to = this.progressColor[i].to;\n if (value >= from && value <= to || (!from && value <= to)) {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor[i].color);\n break;\n }\n if (!to && value >= from) {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor[i].color);\n }\n }\n }\n }\n handleErrors(type) {\n if (isDevMode()) {\n switch (type) {\n case 'value > max':\n throw new Error('The value of the CircularProgressbar cannot exceed the max value');\n case 'value < min':\n throw new Error('The value of the CircularProgressbar cannot be lower than the min value');\n case 'max < min':\n throw new Error('The min value cannot be higher than the max value');\n default:\n }\n }\n }\n setDirection() {\n this.rtl = this.localization.rtl;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n if (this.labelElement) {\n this.renderer.setAttribute(this.labelElement.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n rtlChange() {\n if (this.element && this.rtl !== this.localization.rtl) {\n this.setDirection();\n }\n }\n}\nCircularProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CircularProgressBarComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nCircularProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CircularProgressBarComponent, selector: \"kendo-circularprogressbar\", inputs: { value: \"value\", max: \"max\", min: \"min\", animation: \"animation\", opacity: \"opacity\", indeterminate: \"indeterminate\", progressColor: \"progressColor\" }, outputs: { animationEnd: \"animationEnd\" }, host: { properties: { \"class.k-circular-progressbar\": \"this.hostClasses\", \"attr.aria-valuemin\": \"this.ariaMinAttribute\", \"attr.aria-valuemax\": \"this.ariaMaxAttribute\", \"attr.aria-valuenow\": \"this.ariaValueAttribute\", \"attr.role\": \"this.roleAttribute\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circularprogressbar'\n }\n ], queries: [{ propertyName: \"centerTemplate\", first: true, predicate: CircularProgressbarCenterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"progress\", first: true, predicate: [\"progress\"], descendants: true }, { propertyName: \"scale\", first: true, predicate: [\"scale\"], descendants: true }, { propertyName: \"labelElement\", first: true, predicate: [\"label\"], descendants: true }, { propertyName: \"surface\", first: true, predicate: [\"surface\"], descendants: true }], exportAs: [\"kendoCircularProgressBar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
\n
\n \n \n \n \n \n \n
\n \n
\n
\n
\n \n `, isInline: true, components: [{ type: i2.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedProgressBarMessagesDirective, selector: \"[kendoProgressBarLocalizedMessages]\" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CircularProgressBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoCircularProgressBar',\n selector: 'kendo-circularprogressbar',\n template: `\n \n \n
\n
\n \n \n \n \n \n \n
\n \n
\n
\n
\n \n `, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.circularprogressbar'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-circular-progressbar']\n }], ariaMinAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], ariaMaxAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }], ariaValueAttribute: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], roleAttribute: [{\n type: HostBinding,\n args: ['attr.role']\n }], value: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], animation: [{\n type: Input\n }], opacity: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }], progressColor: [{\n type: Input\n }], animationEnd: [{\n type: Output\n }], progress: [{\n type: ViewChild,\n args: ['progress']\n }], scale: [{\n type: ViewChild,\n args: ['scale']\n }], labelElement: [{\n type: ViewChild,\n args: [\"label\"]\n }], surface: [{\n type: ViewChild,\n args: [\"surface\"]\n }], centerTemplate: [{\n type: ContentChild,\n args: [CircularProgressbarCenterTemplateDirective]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass ProgressBarCustomMessagesComponent extends ProgressBarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nProgressBarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nProgressBarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ProgressBarCustomMessagesComponent, selector: \"kendo-progressbar-messages\", providers: [\n {\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => ProgressBarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => ProgressBarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-progressbar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst COMPONENT_DIRECTIVES = [\n ProgressBarComponent,\n ChunkProgressBarComponent,\n CircularProgressBarComponent,\n CircularProgressbarCenterTemplateDirective,\n LocalizedProgressBarMessagesDirective,\n ProgressBarCustomMessagesComponent\n];\nconst MODULES = [CommonModule, ResizeSensorModule];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmodules'])\n * definition for the ProgressBar components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ProgressBar module\n * import { ProgressBarModule } from '@progress/kendo-angular-progressbar';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ProgressBarModule], // import ProgressBar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ProgressBarModule {\n}\nProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarModule, declarations: [ProgressBarComponent,\n ChunkProgressBarComponent,\n CircularProgressBarComponent,\n CircularProgressbarCenterTemplateDirective,\n LocalizedProgressBarMessagesDirective,\n ProgressBarCustomMessagesComponent], imports: [CommonModule, ResizeSensorModule], exports: [ProgressBarComponent,\n ChunkProgressBarComponent,\n CircularProgressBarComponent,\n CircularProgressbarCenterTemplateDirective,\n LocalizedProgressBarMessagesDirective,\n ProgressBarCustomMessagesComponent] });\nProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarModule, imports: [MODULES] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: COMPONENT_DIRECTIVES,\n exports: COMPONENT_DIRECTIVES,\n imports: MODULES\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ChunkProgressBarComponent, CircularProgressBarComponent, CircularProgressbarCenterTemplateDirective, LocalizedProgressBarMessagesDirective, ProgressBarComponent, ProgressBarCustomMessagesComponent, ProgressBarModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, Optional, isDevMode, Component, SkipSelf, Host, Input, ViewChild, HostBinding, ViewChildren, ContentChildren, EventEmitter, Output, ContentChild, HostListener, Inject, QueryList, NgZone, forwardRef, ElementRef, ViewEncapsulation, TemplateRef, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { Keys, shouldShowValidationUI, PreventableEvent as PreventableEvent$1, isDocumentAvailable, guid, hasObservers, focusableSelector, isChanged, WatermarkModule, EventsModule, DraggableModule, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$2 from '@angular/animations';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\nimport { Subject, BehaviorSubject, Subscription, of } from 'rxjs';\nimport { chevronUpIcon, chevronDownIcon, caretAltLeftIcon, caretAltRightIcon, caretAltUpIcon, caretAltDownIcon, xIcon, checkCircleIcon, exclamationCircleIcon } from '@progress/kendo-svg-icons';\nimport * as i2 from '@progress/kendo-angular-icons';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { delay, takeUntil, map, tap, filter, switchMap, take } from 'rxjs/operators';\nimport * as i2$1 from '@progress/kendo-angular-buttons';\nimport { ButtonModule } from '@progress/kendo-angular-buttons';\nimport * as i4 from '@progress/kendo-angular-progressbar';\nimport { ProgressBarModule } from '@progress/kendo-angular-progressbar';\nimport { Draggable } from '@progress/kendo-draggable';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-layout',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142346,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the expand modes of the PanelBar.\n * By default, the expand mode is set to `multiple`.\n */\nvar PanelBarExpandMode;\n(function (PanelBarExpandMode) {\n /**\n * Allows you to expand only one item at a time.\n * When you expand an item, the item that was previously expanded is coll.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Single\"] = 0] = \"Single\";\n /**\n * Allows you to expand only one item at a time and requires you to set the `height` property.\n * The expanded area occupies the entire height of the PanelBar.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Full\"] = 1] = \"Full\";\n /**\n * The default mode of the PanelBar.\n * Allows you to expand more than one item at a time. Items can also be toggled.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Multiple\"] = 2] = \"Multiple\";\n /**\n * By default, the expand mode is set to `multiple`.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Default\"] = 2] = \"Default\";\n})(PanelBarExpandMode || (PanelBarExpandMode = {}));\n\n/**\n * @hidden\n */\nlet nextPanelbarId = 0;\n/**\n * @hidden\n */\nclass PanelBarService {\n constructor() {\n this.parentSource = new Subject();\n this.keepContentSource = new BehaviorSubject(false);\n this.childSource = new Subject();\n this.itemClick = new Subject();\n this.parent$ = this.parentSource.asObservable();\n this.children$ = this.childSource.asObservable();\n this.keepContent$ = this.keepContentSource.asObservable();\n this.pbId = nextPanelbarId++;\n }\n onKeepContent(keepContent) {\n this.keepContentSource.next(keepContent);\n }\n onSelect(event) {\n this.childSource.next(event);\n }\n onFocus() {\n this.parentSource.next(true);\n }\n onBlur() {\n this.parentSource.next(false);\n }\n}\nPanelBarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPanelBarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * Represents the content template of the declaratively initialized PanelBar items.\n * The content can be expanded or collapsed through the item.\n */\nclass PanelBarContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarContentDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PanelBarContentDirective, selector: \"[kendoPanelBarContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: \"[kendoPanelBarContent]\"\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item title\n * ([more information and example]({% slug templates_panelbar %}#toc-customizing-the-appearance-of-the-title)).\n *\n * > The `kendoPanelBarItemTitle` directive overrides the PanelBarItem [title]({% slug api_layout_panelbaritemcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Item Title\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass PanelBarItemTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarItemTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemTitleDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarItemTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PanelBarItemTitleDirective, selector: \"[kendoPanelBarItemTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTitle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nlet nextId$1 = 0;\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\nconst SHAPE_TO_ROUNDED = {\n rounded: 'large',\n circle: 'full'\n};\n/**\n * @hidden\n */\nconst parsePanelBarItems = (data) => {\n return data.map((item) => {\n if (!isPresent(item.id)) {\n item.id = `default-${nextId$1++}`;\n }\n if (item.children) {\n item.children = parsePanelBarItems(item.children);\n }\n return item;\n });\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isHorizontalArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight;\n/**\n * @hidden\n */\nconst isVerticalArrowKey = keyCode => keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\n/**\n * @hidden\n */\nconst isArrowKey = keyCode => isHorizontalArrowKey(keyCode) || isVerticalArrowKey(keyCode);\n/**\n * @hidden\n */\nconst isNavigationKey = keyCode => keyCode === Keys.PageUp || keyCode === Keys.PageDown ||\n keyCode === Keys.Home || keyCode === Keys.End;\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n */\nconst mapShapeToRounded = (shape) => SHAPE_TO_ROUNDED[shape] || 'none';\n/**\n * @hidden\n */\nconst isNumber = (value) => typeof value === 'number' && isFinite(value);\n\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst toClassList = (classNames) => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst isFocusable = (element) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find((name) => name === className));\n/**\n * @hidden\n */\nconst closestInScope = (target, predicate, scope, targetAttr) => {\n while (target && target !== scope && !predicate(target, targetAttr)) {\n target = target.parentNode;\n }\n if (target !== scope) {\n return target;\n }\n};\n/**\n * @hidden\n */\nconst itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);\nconst hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\n/**\n * @hidden\n */\nconst closestItem = (target, targetAttr, scope) => closestInScope(target, hasItemIndex, scope, targetAttr);\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nlet nextId = 0;\n/**\n * Represents the items of the PanelBar.\n */\nclass PanelBarItemComponent {\n constructor(parent, eventService, element, renderer) {\n this.parent = parent;\n this.eventService = eventService;\n this.element = element;\n this.renderer = renderer;\n /**\n * Allows the component to set the `\"id\"` property to each item.\n * Used to set the `id` attributes of the nested elements and to enable the WAI-ARIA support.\n */\n this.id = `default-${nextId++}`;\n /**\n * Defines the icon that will be rendered next to the title ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.icon = '';\n /**\n * Defines the icon that will be rendered next to the title by using a custom CSS class\n * ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.iconClass = '';\n /**\n * Defines the location of the image that will be displayed next to the title\n * ([see example]({% slug items_panelbar %}#toc-title-images)).\n */\n this.imageUrl = '';\n /**\n * When set to `true`, disables a PanelBar item ([see example]({% slug items_panelbar %}#toc-disabled-state)).\n */\n this.disabled = false;\n /**\n * Sets the selected state of a PanelBar item ([see example]({% slug items_panelbar %}#toc-selected-state)).\n */\n this.selected = false;\n this.keepContent = false;\n this.hasChildItems = false;\n this.hasItems = false;\n this.hasContent = false;\n this.state = \"inactive\";\n this.role = \"treeitem\";\n this.titleAttribute = null; // eslint-disable-line\n this.kItemClass = true;\n this.focused = false;\n this.wrapperFocused = false;\n this.subscriptions = new Subscription(() => { });\n this._expanded = false;\n this.subscriptions.add(eventService.parent$.subscribe(focused => this.onWrapperFocusChange(focused)));\n this.subscriptions.add(eventService.keepContent$.subscribe(keepContent => this.keepContent = keepContent));\n this.wrapperFocused = parent ? parent.focused : false;\n this.level = this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * Defines an SVGIcon to be rendered.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n if (isDevMode() && icon && this.icon && this.iconClass) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n /**\n * When set to `true`, expands the PanelBar item ([see example]({% slug items_panelbar %}#toc-expanded-state)).\n */\n set expanded(value) {\n const activeState = this.animate ? \"active\" : \"activeWithoutAnimation\";\n this.state = value ? activeState : \"inactive\";\n if (!this.keepContent) {\n this.toggleExpandedChildAnimations(value);\n }\n this._expanded = value;\n }\n get expanded() {\n return this._expanded;\n }\n get animate() {\n return this.eventService.animate;\n }\n get kStateDefaultClass() {\n return !this.disabled;\n }\n get kStateExpandedClass() {\n return !this.disabled && this.expanded && (this.hasChildItems || this.hasContent);\n }\n get itemId() {\n return 'k-panelbar-' + this.eventService.pbId + '-item-' + this.id;\n }\n get ariaExpanded() {\n return (this.hasChildItems || this.hasContent) ? !this.disabled && this.expanded : null;\n }\n get ariaSelected() {\n return !this.disabled && this.selected;\n }\n get ariaDisabled() {\n return this.disabled ? true : null;\n }\n get headerClass() {\n return this.parent ? null : true;\n }\n /**\n * @hidden\n */\n get titleTemplate() {\n return this.titleTemplates.length > 0 ? this.titleTemplates.toArray()[0].templateRef : undefined;\n }\n /**\n * @hidden\n */\n headerHeight() {\n return this.element.nativeElement.offsetHeight - (this.contentWrapper ? this.contentWrapper.nativeElement.offsetHeight : 0);\n }\n ngOnInit() {\n this.addLevelClass();\n }\n ngAfterContentChecked() {\n this.hasItems = this.items && this.items.filter(item => !item.hidden).length > 0;\n this.hasChildItems = this.contentItems.filter(item => item !== this).length > 0 || this.hasItems;\n this.hasContent = (this.contentTemplate !== undefined && this.contentTemplate.length > 0) ||\n this.content !== undefined;\n this.validateConfiguration();\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n }\n else {\n this.childrenItems = this.contentItems.filter(item => item !== this);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onItemAction() {\n if (!this.disabled) {\n this.eventService.onSelect(this);\n }\n }\n /**\n * @hidden\n */\n onItemClick(e) {\n if (!isFocusable(e.target)) {\n this.eventService.itemClick.next({ item: this.serialize(), originalEvent: e });\n this.onItemAction();\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n if (this.icon) {\n return `${this.icon}`;\n }\n }\n /**\n * @hidden\n */\n get customIconClasses() {\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n }\n /**\n * @hidden\n */\n get dirInnerCssClasses() {\n const dirClass = this.expanded ? 'k-panelbar-collapse' : 'k-panelbar-expand';\n return `k-panelbar-toggle ${dirClass}`;\n }\n /**\n * @hidden\n */\n get expanderSVGIcon() {\n return this.expanded ? chevronUpIcon : chevronDownIcon;\n }\n /**\n * @hidden\n */\n serialize() {\n return {\n content: this.content,\n disabled: this.disabled,\n expanded: this.expanded,\n focused: this.focused,\n icon: this.icon,\n iconClass: this.iconClass,\n svgIcon: this.svgIcon,\n id: this.id,\n imageUrl: this.imageUrl,\n selected: this.selected,\n title: this.title,\n children: this.items\n };\n }\n /**\n * @hidden\n */\n subTreeViewItems() {\n let subTree = [];\n this.viewChildItems.forEach(item => {\n subTree = subTree.concat(item.subTreeViewItems());\n subTree.push(item);\n });\n return subTree;\n }\n /**\n * @hidden\n */\n validateConfiguration() {\n if (isDevMode()) {\n if (this.content && (this.contentTemplate !== undefined && this.contentTemplate.length > 0)) {\n throw new Error(\"Invalid configuration: mixed template components and component property.\");\n }\n }\n }\n /**\n * @hidden\n */\n toggleAnimationState(value) {\n if (!this.animate) {\n return;\n }\n this.state = value && this.eventService.expandMode !== PanelBarExpandMode.Single ? 'active' : 'activeWithoutAnimation';\n }\n /**\n * @hidden\n */\n toggleExpandedChildAnimations(value) {\n if (this.childrenItems) {\n this.childrenItems.forEach(child => {\n if (child.expanded) {\n child.toggleAnimationState(value);\n child.toggleExpandedChildAnimations(value);\n }\n });\n }\n }\n /**\n * @hidden\n */\n addLevelClass() {\n if (this.level >= 0) {\n this.renderer.addClass(this.element.nativeElement, `k-level-${this.level}`);\n }\n }\n onWrapperFocusChange(focused) {\n this.wrapperFocused = focused;\n }\n}\nPanelBarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemComponent, deps: [{ token: PanelBarItemComponent, host: true, optional: true, skipSelf: true }, { token: PanelBarService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nPanelBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: { title: \"title\", id: \"id\", icon: \"icon\", iconClass: \"iconClass\", svgIcon: \"svgIcon\", imageUrl: \"imageUrl\", disabled: \"disabled\", expanded: \"expanded\", selected: \"selected\", content: \"content\", items: \"items\", template: \"template\" }, host: { properties: { \"attr.role\": \"this.role\", \"attr.title\": \"this.titleAttribute\", \"class.k-panelbar-item\": \"this.kItemClass\", \"class.k-state-default\": \"this.kStateDefaultClass\", \"class.k-expanded\": \"this.kStateExpandedClass\", \"id\": \"this.itemId\", \"attr.aria-expanded\": \"this.ariaExpanded\", \"attr.aria-selected\": \"this.ariaSelected\", \"attr.aria-disabled\": \"this.ariaDisabled\", \"class.k-panelbar-header\": \"this.headerClass\" } }, queries: [{ propertyName: \"contentItems\", predicate: PanelBarItemComponent }, { propertyName: \"contentTemplate\", predicate: PanelBarContentDirective }, { propertyName: \"titleTemplates\", predicate: PanelBarItemTitleDirective }], viewQueries: [{ propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true }, { propertyName: \"contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true }, { propertyName: \"viewChildItems\", predicate: PanelBarItemComponent, descendants: true }], exportAs: [\"kendoPanelbarItem\"], ngImport: i0, template: `\n \n \n \n \n {{title}}\n \n \n \n \n
\n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n {{content}}\n \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }, { type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: [\"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"disabled\", \"expanded\", \"selected\", \"content\", \"items\", \"template\"], exportAs: [\"kendoPanelbarItem\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('toggle', [\n state('inactive', style({ display: 'none' })),\n transition('* => active', [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(200, style({ height: AUTO_STYLE }))\n ]),\n transition('active => *', [\n style({ overflow: 'hidden', height: AUTO_STYLE }),\n animate(200, style({ height: 0, display: 'none' }))\n ])\n ])\n ],\n exportAs: 'kendoPanelbarItem',\n selector: \"kendo-panelbar-item\",\n template: `\n \n \n \n \n {{title}}\n \n \n \n \n
\n \n \n
\n \n \n \n \n
\n \n \n \n \n
\n \n \n \n {{content}}\n \n `\n }]\n }], ctorParameters: function () { return [{ type: PanelBarItemComponent, decorators: [{\n type: SkipSelf\n }, {\n type: Host\n }, {\n type: Optional\n }] }, { type: PanelBarService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { title: [{\n type: Input\n }], id: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], selected: [{\n type: Input\n }], content: [{\n type: Input\n }], items: [{\n type: Input\n }], template: [{\n type: Input\n }], header: [{\n type: ViewChild,\n args: ['header', { static: false }]\n }], contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], titleAttribute: [{\n type: HostBinding,\n args: ['attr.title']\n }], kItemClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-item']\n }], kStateDefaultClass: [{\n type: HostBinding,\n args: ['class.k-state-default']\n }], kStateExpandedClass: [{\n type: HostBinding,\n args: ['class.k-expanded']\n }], itemId: [{\n type: HostBinding,\n args: ['id']\n }], ariaExpanded: [{\n type: HostBinding,\n args: ['attr.aria-expanded']\n }], ariaSelected: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }], ariaDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], headerClass: [{\n type: HostBinding,\n args: ['class.k-panelbar-header']\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent]\n }], contentTemplate: [{\n type: ContentChildren,\n args: [PanelBarContentDirective, { descendants: false }]\n }], titleTemplates: [{\n type: ContentChildren,\n args: [PanelBarItemTitleDirective, { descendants: false }]\n }] } });\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item content.\n */\nclass PanelBarItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPanelBarItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPanelBarItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PanelBarItemTemplateDirective, selector: \"[kendoPanelBarItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPanelBarItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `collapse` event of the PanelBar.\n */\nclass PanelBarCollapseEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `expand` event of the PanelBar.\n */\nclass PanelBarExpandEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `select` event of the PanelBar.\n */\nclass PanelBarSelectEvent extends PreventableEvent {\n}\n\n/**\n * Arguments for the `stateChange` event of the PanelBar.\n */\nclass PanelBarStateChangeEvent {\n}\n\n/**\n * Arguments for the `itemClick` event of the PanelBar.\n */\nclass PanelBarItemClickEvent {\n}\n\n/**\n * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).\n */\n// TODO: add styles as input prop\nclass PanelBarComponent {\n constructor(elementRef, eventService, localization) {\n this.localization = localization;\n /**\n * Sets the expand mode of the PanelBar through the `PanelBarExpandMode` enum ([see example]({% slug expandmodes_panelbar %})).\n *\n * The available modes are:\n * - `\"single\"`—Expands only one item at a time. Expanding an item collapses the item that was previously expanded.\n * - `\"multiple\"`—The default mode of the PanelBar.\n * Expands more than one item at a time. Items can also be toggled.\n * - `\"full\"`—Expands only one item at a time.\n * The expanded area occupies the entire height of the PanelBar. Requires you to set the `height` property.\n */\n this.expandMode = PanelBarExpandMode.Default;\n /**\n * Allows the PanelBar to modify the selected state of the items.\n */\n this.selectable = true;\n /**\n * Sets the animate state of the PanelBar ([see example]({% slug animations_panelbar %})).\n */\n this.animate = true;\n /**\n * Sets the height of the component when the `\"full\"` expand mode is used.\n * This option is ignored in the `\"multiple\"` and `\"single\"` expand modes.\n */\n this.height = '400px';\n /**\n * Fires each time the user interacts with a PanelBar item\n * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).\n * The event data contains a collection of all items that are modified.\n */\n this.stateChange = new EventEmitter();\n /**\n * Fires when an item is about to be selected.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will not be selected.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an item is about to be expanded.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain collapsed.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when an item is about to be collapsed.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain expanded.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when the user clicks an item ([see example]({% slug events_panelbar %})).\n */\n this.itemClick = new EventEmitter();\n this.hostClasses = true;\n this.tabIndex = 0;\n this.role = 'tree';\n this.activeDescendant = '';\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.isViewInit = true;\n this.focused = false;\n this._keepItemContent = false;\n this.subs = new Subscription();\n this.updateChildrenHeight = () => {\n let childrenHeight = 0;\n const panelbarHeight = this.elementRef.nativeElement.offsetHeight;\n const contentOverflow = this.expandMode === PanelBarExpandMode.Full ? 'auto' : 'visible';\n this.childrenItems.forEach(item => {\n childrenHeight += item.headerHeight();\n });\n this.childrenItems.forEach(item => {\n item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? (panelbarHeight - childrenHeight) + 'px' : 'auto';\n item.contentOverflow = contentOverflow;\n });\n };\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n /* eslint-disable-line*/\n this.keyBindings = this.computedKeys;\n this.elementRef = elementRef;\n this.eventService = eventService;\n this.subs.add(this.eventService.children$.subscribe(event => this.onItemAction(event)));\n this.subs.add(this.eventService.itemClick.subscribe(ev => this.itemClick.emit(ev)));\n }\n /**\n * When set to `true`, the PanelBar renders the content of all items and they are persisted in the DOM\n * ([see example]({% slug templates_panelbar %}#toc-collections)).\n * By default, this option is set to `false`.\n */\n get keepItemContent() {\n return this._keepItemContent;\n }\n set keepItemContent(keepItemContent) {\n this._keepItemContent = keepItemContent;\n this.eventService.onKeepContent(keepItemContent);\n }\n /**\n * Sets the items of the PanelBar as an array of `PanelBarItemModel` instances\n * ([see example]({% slug items_panelbar %})).\n */\n set items(data) {\n if (data) {\n this._items = parsePanelBarItems(data);\n }\n }\n get items() {\n return this._items;\n }\n get hostHeight() {\n return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';\n }\n get overflow() {\n return this.expandMode === PanelBarExpandMode.Full ? 'hidden' : 'visible';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n get computedKeys() {\n return {\n [Keys.Space]: () => this.selectFocusedItem(),\n [Keys.Enter]: () => this.selectFocusedItem(),\n [Keys.ArrowUp]: () => this.focusPreviousItem(),\n [this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight)]: () => this.collapseItem(),\n [Keys.ArrowDown]: () => this.focusNextItem(),\n [this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft)]: () => this.expandItem(),\n [Keys.End]: () => this.focusLastItem(),\n [Keys.Home]: () => this.focusFirstItem()\n };\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(() => this.keyBindings = this.computedKeys));\n this.eventService.animate = this.animate;\n this.eventService.expandMode = this.expandMode;\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n this.allItems = this.viewItems;\n }\n else {\n this.childrenItems = this.contentChildItems.toArray();\n this.allItems = this.contentItems.toArray();\n }\n if (this.isViewInit && this.childrenItems.length) {\n this.isViewInit = false;\n setTimeout(() => this.updateChildrenHeight());\n }\n this.validateConfiguration();\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['expandMode'] || changes['items']) { // eslint-disable-line\n if (this.childrenItems) {\n setTimeout(this.updateChildrenHeight);\n }\n }\n if (changes['animate']) {\n this.eventService.animate = this.animate;\n }\n if (changes['expandMode']) {\n this.eventService.expandMode = this.expandMode;\n }\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n onComponentClick(event) {\n const itemClicked = this.visibleItems().some((item) => {\n return item.header.nativeElement.contains(event.target);\n });\n if (!isFocusable(event.target) && !this.focused && itemClicked) {\n this.elementRef.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.eventService.onFocus();\n this.focused = true;\n if (this.allItems.length > 0) {\n const visibleItems = this.visibleItems();\n const focusedItems = visibleItems.filter(item => item.focused);\n if (!focusedItems.length && visibleItems.length > 0) {\n visibleItems[0].focused = true;\n this.activeDescendant = visibleItems[0].itemId;\n }\n }\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.eventService.onBlur();\n this.focused = false;\n this.activeDescendant = '';\n }\n /**\n * @hidden\n */\n onComponentKeyDown(event) {\n if (event.target === this.elementRef.nativeElement) {\n if (event.keyCode === Keys.Space || event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowDown ||\n event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight || event.keyCode === Keys.Home ||\n event.keyCode === Keys.End || event.keyCode === Keys.PageUp || event.keyCode === Keys.PageDown) {\n event.preventDefault();\n }\n const handler = this.keyBindings[event.keyCode];\n //TODO: check if next item is disabled and skip operation?\n if (handler) {\n handler();\n }\n }\n }\n /**\n * @hidden\n */\n emitEvent(event, item) {\n let eventArgs;\n switch (event) {\n case 'select':\n eventArgs = new PanelBarSelectEvent();\n break;\n case 'collapse':\n eventArgs = new PanelBarCollapseEvent();\n break;\n default:\n eventArgs = new PanelBarExpandEvent();\n break;\n }\n eventArgs.item = item.serialize();\n this[event].emit(eventArgs);\n return eventArgs;\n }\n get viewItems() {\n let treeItems = [];\n this.viewChildItems.toArray().forEach(item => {\n treeItems.push(item);\n treeItems = treeItems.concat(item.subTreeViewItems());\n });\n return treeItems;\n }\n validateConfiguration() {\n if (isDevMode()) {\n if (this.items && (this.contentItems && this.contentItems.length > 0)) {\n throw new Error('Invalid configuration: mixed template components and items property.');\n }\n }\n }\n onItemAction(item) {\n if (!item) {\n return;\n }\n const modifiedItems = new Array();\n const selectPreventedItems = [];\n this.allItems\n .forEach((currentItem) => {\n let selectedState = currentItem === item;\n const focusedState = selectedState;\n selectedState = this.selectable ? selectedState : currentItem.selected;\n if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {\n const isSelectPrevented = selectedState ? this.emitEvent('select', currentItem).isDefaultPrevented() : false;\n if (!isSelectPrevented) {\n currentItem.selected = selectedState;\n currentItem.focused = focusedState;\n this.activeDescendant = focusedState ? currentItem.itemId : '';\n modifiedItems.push(currentItem);\n }\n else {\n selectPreventedItems.push(currentItem);\n }\n }\n });\n if (this.expandMode === PanelBarExpandMode.Multiple) {\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n const isEventPrevented = item.expanded ?\n this.emitEvent('collapse', item).isDefaultPrevented() :\n this.emitEvent('expand', item).isDefaultPrevented();\n if (!isEventPrevented) {\n item.expanded = !item.expanded;\n if (modifiedItems.indexOf(item) < 0) {\n modifiedItems.push(item);\n }\n }\n }\n }\n else {\n const siblings = item.parent ? item.parent.childrenItems : this.childrenItems;\n let preventedCollapseItem;\n const expandedItems = [];\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n siblings\n .forEach((currentItem) => {\n const expandedState = currentItem === item;\n if (currentItem.expanded !== expandedState) {\n const isEventPrevented = currentItem.expanded ?\n this.emitEvent('collapse', currentItem).isDefaultPrevented() :\n this.emitEvent('expand', currentItem).isDefaultPrevented();\n if (!isEventPrevented) {\n currentItem.expanded = expandedState;\n if (currentItem.expanded) {\n expandedItems.push(currentItem);\n }\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n else if (isEventPrevented && currentItem.expanded) {\n preventedCollapseItem = currentItem;\n }\n }\n else if (currentItem.expanded === expandedState && expandedState) {\n const isCollapsePrevented = this.emitEvent('collapse', currentItem).isDefaultPrevented();\n if (!isCollapsePrevented) {\n currentItem.expanded = !currentItem.expanded;\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n }\n });\n expandedItems.forEach(item => {\n if (preventedCollapseItem && item.id !== preventedCollapseItem.id) {\n item.expanded = false;\n if (isDevMode()) {\n const expandMode = PanelBarExpandMode[this.expandMode].toLowerCase();\n console.warn(`\n The ${expandMode} expandMode allows the expansion of only one item at a time.\n See https://www.telerik.com/kendo-angular-ui-develop/components/layout/panelbar/expand-modes/`);\n }\n }\n });\n }\n }\n if (modifiedItems.length > 0) {\n const eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems.map(currentItem => currentItem.serialize());\n this.stateChange.emit(eventArgs);\n }\n }\n isVisible(item) {\n const visibleItems = this.visibleItems();\n return visibleItems.some(i => i === item);\n }\n getVisibleParent(item) {\n const visibleItems = this.visibleItems();\n if (!item.parent) {\n return item;\n }\n return visibleItems.some(i => i === item.parent) ? item.parent : this.getVisibleParent(item.parent);\n }\n focusItem(action) {\n const visibleItems = this.visibleItems();\n let currentIndex = visibleItems.findIndex(item => item.focused);\n let currentItem = visibleItems[currentIndex];\n let nextItem;\n if (currentIndex === -1) {\n const focusedItem = this.allItems.find(item => item.focused);\n focusedItem.focused = false;\n currentItem = this.getVisibleParent(focusedItem);\n currentIndex = visibleItems.findIndex(item => item === currentItem);\n }\n switch (action) {\n case 'lastItem':\n nextItem = visibleItems[visibleItems.length - 1];\n break;\n case 'firstItem':\n nextItem = visibleItems[0];\n break;\n case 'nextItem':\n nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];\n break;\n case 'previousItem':\n nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];\n break;\n default:\n }\n if (currentItem && nextItem && currentItem !== nextItem) {\n this.moveFocus(currentItem, nextItem);\n }\n }\n moveFocus(from, to) {\n from.focused = false;\n to.focused = true;\n this.activeDescendant = to.itemId;\n const modifiedItems = new Array(from.serialize(), to.serialize());\n const eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems;\n this.stateChange.emit(eventArgs);\n }\n focusLastItem() {\n this.focusItem('lastItem');\n }\n focusFirstItem() {\n this.focusItem('firstItem');\n }\n focusNextItem() {\n this.focusItem('nextItem');\n }\n focusPreviousItem() {\n this.focusItem('previousItem');\n }\n expandItem() {\n let currentItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(currentItem)) {\n currentItem.focused = false;\n currentItem = this.getVisibleParent(currentItem);\n }\n if (currentItem.hasChildItems || currentItem.hasContent) {\n if (!currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.hasChildItems) {\n const firstChildIndex = currentItem.childrenItems.findIndex(item => !item.disabled);\n if (firstChildIndex > -1) {\n this.moveFocus(currentItem, currentItem.childrenItems[firstChildIndex]);\n }\n }\n }\n }\n collapseItem() {\n const currentItem = this.allItems.filter(item => item.focused)[0];\n if (currentItem.expanded) {\n this.onItemAction(currentItem);\n }\n else if (currentItem.parent) {\n this.moveFocus(currentItem, currentItem.parent);\n }\n }\n selectFocusedItem() {\n let focusedItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(focusedItem)) {\n focusedItem.focused = false;\n focusedItem = this.getVisibleParent(focusedItem);\n }\n if (focusedItem) {\n focusedItem.onItemAction();\n }\n }\n visibleItems() {\n return this.flatVisibleItems(this.childrenItems);\n }\n flatVisibleItems(listOfItems = new Array(), flattedItems = new Array()) {\n listOfItems.forEach(item => {\n flattedItems.push(item);\n if (item.expanded && item.hasChildItems) {\n this.flatVisibleItems(item.childrenItems, flattedItems);\n }\n });\n return flattedItems;\n }\n}\nPanelBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarComponent, deps: [{ token: i0.ElementRef }, { token: PanelBarService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nPanelBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PanelBarComponent, selector: \"kendo-panelbar\", inputs: { expandMode: \"expandMode\", selectable: \"selectable\", animate: \"animate\", height: \"height\", keepItemContent: \"keepItemContent\", items: \"items\" }, outputs: { stateChange: \"stateChange\", select: \"select\", expand: \"expand\", collapse: \"collapse\", itemClick: \"itemClick\" }, host: { listeners: { \"click\": \"onComponentClick($event)\", \"focus\": \"onComponentFocus()\", \"blur\": \"onComponentBlur()\", \"keydown\": \"onComponentKeyDown($event)\" }, properties: { \"class.k-panelbar\": \"this.hostClasses\", \"class.k-pos-relative\": \"this.hostClasses\", \"attr.tabIndex\": \"this.tabIndex\", \"attr.role\": \"this.role\", \"attr.aria-activedescendant\": \"this.activeDescendant\", \"style.height\": \"this.hostHeight\", \"style.overflow\": \"this.overflow\", \"attr.dir\": \"this.dir\" } }, providers: [\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ], queries: [{ propertyName: \"template\", first: true, predicate: PanelBarItemTemplateDirective, descendants: true }, { propertyName: \"contentItems\", predicate: PanelBarItemComponent, descendants: true }, { propertyName: \"contentChildItems\", predicate: PanelBarItemComponent }], viewQueries: [{ propertyName: \"viewChildItems\", predicate: PanelBarItemComponent, descendants: true }], exportAs: [\"kendoPanelbar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n\n
\n `, isInline: true, components: [{ type: PanelBarItemComponent, selector: \"kendo-panelbar-item\", inputs: [\"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"disabled\", \"expanded\", \"selected\", \"content\", \"items\", \"template\"], exportAs: [\"kendoPanelbarItem\"] }, { type: i1$1.WatermarkOverlayComponent, selector: \"div[kendoWatermarkOverlay]\" }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoPanelbar',\n providers: [\n PanelBarService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }\n ],\n selector: 'kendo-panelbar',\n template: `\n \n \n \n \n \n \n \n\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: PanelBarService }, { type: i1.LocalizationService }]; }, propDecorators: { expandMode: [{\n type: Input\n }], selectable: [{\n type: Input\n }], animate: [{\n type: Input\n }], height: [{\n type: Input\n }], keepItemContent: [{\n type: Input\n }], items: [{\n type: Input\n }], stateChange: [{\n type: Output\n }], select: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-panelbar']\n }, {\n type: HostBinding,\n args: ['class.k-pos-relative']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabIndex']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], activeDescendant: [{\n type: HostBinding,\n args: ['attr.aria-activedescendant']\n }], hostHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], overflow: [{\n type: HostBinding,\n args: ['style.overflow']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], template: [{\n type: ContentChild,\n args: [PanelBarItemTemplateDirective, { static: false }]\n }], contentItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent, { descendants: true }]\n }], contentChildItems: [{\n type: ContentChildren,\n args: [PanelBarItemComponent]\n }], viewChildItems: [{\n type: ViewChildren,\n args: [PanelBarItemComponent]\n }], onComponentClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onComponentFocus: [{\n type: HostListener,\n args: ['focus']\n }], onComponentBlur: [{\n type: HostListener,\n args: ['blur']\n }], onComponentKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * Represents the pane component of the Splitter.\n */\nclass SplitterPaneComponent {\n constructor(element, renderer, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * The value of the aria-label attribute of the auxiliary separator.\n */\n this.separatorLabel = 'Splitter pane';\n /**\n * Specifies if the user is allowed to resize the pane and provide space for other panes.\n */\n this.resizable = true;\n /**\n * Specifies if the user is allowed to hide the pane and provide space for other panes.\n */\n this.collapsible = false;\n /**\n * Specifies if overflowing content is scrollable or hidden.\n */\n this.scrollable = true;\n /**\n * Specifies if the pane is initially collapsed.\n */\n this.collapsed = false;\n /**\n * @hidden\n */\n this.orientation = 'horizontal';\n /**\n * @hidden\n */\n this.overlayContent = false;\n /**\n * Fires each time the user resizes the Splitter pane.\n * The event data contains the new pane size.\n * Allows a two-way binding of the pane `size` property.\n */\n this.sizeChange = new EventEmitter();\n /**\n * Fires each time the `collapsed` property changes.\n * The event data contains the new property state.\n * Allows a two-way binding of the `collapsed` pane property.\n */\n this.collapsedChange = new EventEmitter();\n this.ariaRole = 'group';\n this.hostClass = true;\n /**\n * @hidden\n */\n this.forceExpand = false;\n /**\n * @hidden\n */\n this.isResized = false;\n }\n /**\n * @hidden\n */\n set order(paneOrder) {\n this._order = paneOrder;\n this.setOrderStyles();\n }\n get order() {\n return this._order;\n }\n /**\n * Sets the initial size of the pane.\n * Has to be between the `min` and `max` properties.\n */\n set size(newSize) {\n this._size = newSize;\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-preferred-size', newSize);\n this.renderer.setStyle(element, 'flex-basis', newSize);\n if (this.staticPaneClass) {\n this.renderer.addClass(element, 'k-pane-static');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-static');\n }\n }\n get size() {\n return this._size;\n }\n /**\n * @hidden\n */\n set containsSplitter(value) {\n const element = this.element.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-pane-flex');\n }\n else {\n this.renderer.removeClass(element, 'k-pane-flex');\n }\n }\n get isHidden() {\n return this.collapsed;\n }\n get staticPaneClass() {\n if (this.forceExpand) {\n return false;\n }\n return !this.resizable && !this.collapsible || this.fixedSize;\n }\n get scrollablePaneClass() {\n return this.scrollable;\n }\n get fixedSize() {\n return this.size && this.size.length > 0;\n }\n ngAfterViewChecked() {\n const element = this.element.nativeElement;\n if (this.isHidden) {\n this.renderer.addClass(element, 'k-hidden');\n this.renderer.addClass(element, 'hidden');\n }\n else {\n this.renderer.removeClass(element, 'k-hidden');\n this.renderer.removeClass(element, 'hidden');\n }\n }\n /**\n * @hidden\n */\n get computedSize() {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.offsetHeight;\n }\n else {\n return this.element.nativeElement.offsetWidth;\n }\n }\n /**\n * @hidden\n */\n toggleOverlay(show) {\n this.overlayContent = show;\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n detectChanges() {\n this.cdr.detectChanges();\n }\n setOrderStyles() {\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-order', this.order);\n this.renderer.setStyle(element, 'order', this.order);\n }\n}\nSplitterPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterPaneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nSplitterPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SplitterPaneComponent, selector: \"kendo-splitter-pane\", inputs: { order: \"order\", size: \"size\", separatorLabel: \"separatorLabel\", min: \"min\", max: \"max\", resizable: \"resizable\", collapsible: \"collapsible\", scrollable: \"scrollable\", collapsed: \"collapsed\", orientation: \"orientation\", containsSplitter: \"containsSplitter\", overlayContent: \"overlayContent\" }, outputs: { sizeChange: \"sizeChange\", collapsedChange: \"collapsedChange\" }, host: { properties: { \"attr.role\": \"this.ariaRole\", \"class.k-pane\": \"this.hostClass\", \"class.k-pane-static\": \"this.staticPaneClass\", \"class.k-scrollable\": \"this.scrollablePaneClass\" } }, exportAs: [\"kendoSplitterPane\"], ngImport: i0, template: `\n \n
\n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterPaneComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitterPane',\n selector: 'kendo-splitter-pane',\n template: `\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { order: [{\n type: Input\n }], size: [{\n type: Input\n }], separatorLabel: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], resizable: [{\n type: Input\n }], collapsible: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], collapsed: [{\n type: Input\n }], orientation: [{\n type: Input\n }], containsSplitter: [{\n type: Input\n }], overlayContent: [{\n type: Input\n }], sizeChange: [{\n type: Output\n }], collapsedChange: [{\n type: Output\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-pane']\n }], staticPaneClass: [{\n type: HostBinding,\n args: ['class.k-pane-static']\n }], scrollablePaneClass: [{\n type: HostBinding,\n args: ['class.k-scrollable']\n }] } });\n\n/**\n * @hidden\n */\nconst shouldTogglePrev = (keyCode, prev, next) => {\n const leftArrow = keyCode === Keys.ArrowLeft;\n const upArrow = keyCode === Keys.ArrowUp;\n const collapsePrev = !prev.collapsed && !next.collapsed && (leftArrow || upArrow);\n const expandPrev = prev.collapsed && !(leftArrow || upArrow);\n return collapsePrev || expandPrev;\n};\n/**\n * @hidden\n */\nconst shouldToggleNext = (keyCode, prev, next) => {\n const leftArrow = keyCode === Keys.ArrowLeft;\n const upArrow = keyCode === Keys.ArrowUp;\n const collapseNext = !next.collapsed && !prev.collapsed && !(leftArrow || upArrow);\n const expandNext = next.collapsed && (leftArrow || upArrow);\n return collapseNext || expandNext;\n};\n/**\n * @hidden\n */\nconst shouldToggleOrResize = (keyCode, orientation) => {\n const isHorizontal = orientation === 'horizontal';\n const isHorizontalChange = isHorizontal && (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight);\n const isVerticalChange = !isHorizontal && (keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown);\n return isHorizontalChange || isVerticalChange;\n};\n\nconst SIZING_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/layout/splitter/panes/#toc-size';\n/**\n * @hidden\n */\nclass SplitterService {\n constructor(zone) {\n this.zone = zone;\n this.layoutChange = new EventEmitter();\n this.resizeStep = 10;\n this.containerSize = () => { };\n }\n tryToggle(paneIndex) {\n const pane = this.pane(paneIndex);\n if (pane.collapsible) {\n pane.collapsed = !pane.collapsed;\n pane.collapsedChange.emit(pane.collapsed);\n this.emit(this.layoutChange, {});\n if (pane.collapsed) {\n pane.detectChanges();\n }\n }\n const notCollapsed = this.panes.filter(p => !p.collapsed);\n const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);\n notCollapsed[notCollapsed.length - 1].forceExpand = allHaveFixedSize ? true : false;\n return pane.collapsible;\n }\n togglePane(keyCode, index) {\n const prev = this.pane(index);\n const next = this.pane(index + 1);\n if (shouldTogglePrev(keyCode, prev, next)) {\n this.tryToggle(index);\n }\n else if (shouldToggleNext(keyCode, prev, next)) {\n this.tryToggle(index + 1);\n }\n }\n resizePane(keyCode, index) {\n const state = this.dragState(index);\n const direction = keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowUp;\n const step = direction ? (-this.resizeStep) : this.resizeStep;\n this.setSize(state, step);\n }\n toggleContentOverlay(index, show) {\n this.pane(index).toggleOverlay(show);\n this.pane(index + 1).toggleOverlay(show);\n }\n dragState(splitbarIndex) {\n const prev = this.pane(splitbarIndex);\n const next = this.pane(splitbarIndex + 1);\n const total = prev.computedSize + next.computedSize;\n const px = s => this.toPixels(s);\n return {\n prev: {\n index: splitbarIndex,\n initialSize: prev.computedSize,\n min: px(prev.min) || total - px(next.max) || 0,\n max: px(prev.max) || total - px(next.min) || total\n },\n next: {\n index: splitbarIndex + 1,\n initialSize: next.computedSize,\n min: px(next.min) || total - px(prev.max) || 0,\n max: px(next.max) || total - px(prev.min) || total\n }\n };\n }\n setSize(state, delta) {\n const clamp = (min, max, v) => Math.min(max, Math.max(min, v));\n const resize = (paneState, change) => {\n const pane = this.pane(paneState.index);\n const splitterSize = this.containerSize();\n const newSize = clamp(paneState.min, paneState.max, paneState.initialSize + change);\n let size = \"\";\n if (this.isPercent(pane.size)) {\n size = (100 * newSize / splitterSize) + \"%\";\n }\n else {\n size = newSize + \"px\";\n }\n pane.size = size;\n pane.isResized = true;\n this.emit(pane.sizeChange, size);\n };\n const prev = this.pane(state.prev.index);\n const next = this.pane(state.next.index);\n // determine which pane to resize\n if (prev.fixedSize && next.fixedSize) {\n // resizing both panes\n resize(state.prev, delta);\n resize(state.next, -delta);\n }\n else if (next.collapsible || next.fixedSize) {\n // resizing next\n resize(state.next, -delta);\n }\n else {\n // resizing prev\n resize(state.prev, delta);\n }\n this.emit(this.layoutChange, {});\n }\n isDraggable(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsedPane = prev.collapsed || next.collapsed;\n return betweenResizablePanes && !nearCollapsedPane;\n }\n isStatic(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n }\n pane(index) {\n if (!this.panes) {\n throw new Error(\"Panes not initialized\");\n }\n if (index < 0 || index >= this.panes.length) {\n throw new Error(\"Index out of range\");\n }\n return this.panes[index];\n }\n configure({ panes, orientation, containerSize }) {\n this.panes = panes;\n this.panes.forEach((pane, index) => {\n pane.order = index * 2;\n pane.orientation = orientation;\n });\n if (isDevMode()) {\n const allPanesWithSize = panes.length && !panes.some(pane => !pane.fixedSize);\n const hasResizedPane = panes.length && panes.some(pane => pane.isResized);\n if (allPanesWithSize && !hasResizedPane) {\n throw new Error(`\n The Splitter should have at least one pane without a set size.\n See ${SIZING_DOC_LINK} for more information.\n `);\n }\n }\n this.containerSize = containerSize;\n }\n isPercent(size) {\n return /%$/.test(size);\n }\n toPixels(size) {\n let result = parseFloat(size);\n if (this.isPercent(size)) {\n result = (this.containerSize() * result / 100);\n }\n return result;\n }\n emit(emitter, args) {\n if (emitter.observers.length) {\n this.zone.run(() => emitter.emit(args));\n }\n }\n}\nSplitterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nSplitterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst stopPropagation = ({ originalEvent: event }) => {\n event.stopPropagation();\n event.preventDefault();\n};\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst classFromObject = classes => Object.keys(classes).filter(c => classes[c]).join(' ');\nconst createMoveStream = (draggable) => mouseDown => draggable.kendoDrag\n .pipe(takeUntil(draggable.kendoRelease), map(({ pageX, pageY }) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n})));\n/**\n * @hidden\n */\nclass SplitterBarComponent {\n constructor(draggable, localization, splitterService, element, renderer) {\n this.draggable = draggable;\n this.localization = localization;\n this.splitterService = splitterService;\n this.element = element;\n this.renderer = renderer;\n this.ariaRole = 'separator';\n this.focused = false;\n this.orientation = 'horizontal';\n this.index = 0;\n this.subscriptions = new Subscription();\n }\n get hostOrientation() {\n return this.orientation === 'horizontal' ? 'vertical' : 'horizontal';\n }\n get tabIndex() {\n return this.splitterService.isStatic(this.index) ? -1 : 0;\n }\n get hostClasses() {\n const isHorizontal = this.orientation === 'horizontal';\n const isDraggable = this.splitterService.isDraggable(this.index);\n const isStatic = this.splitterService.isStatic(this.index);\n return classFromObject({\n 'k-focus': this.focused,\n 'k-splitbar': true,\n 'k-splitbar-horizontal': isHorizontal,\n 'k-splitbar-vertical': !isHorizontal,\n 'k-splitbar-draggable-horizontal': isHorizontal && isDraggable,\n 'k-splitbar-draggable-vertical': !isHorizontal && isDraggable,\n 'k-splitbar-static-horizontal': isHorizontal && isStatic,\n 'k-splitbar-static-vertical': !isHorizontal && isStatic,\n 'k-touch-action-none': isDraggable\n });\n }\n get order() {\n return 2 * this.index + 1;\n }\n ngOnInit() {\n let state;\n const listener = this.draggable.kendoPress.pipe(tap(stopPropagation), filter(() => this.splitterService.isDraggable(this.index)), tap(() => state = this.splitterService.dragState(this.index)), tap(() => this.splitterService.toggleContentOverlay(this.index, true)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.draggable))).subscribe(({ pageX, pageY, originalX, originalY }) => {\n let delta;\n if (this.orientation === 'vertical') {\n delta = pageY - originalY;\n }\n else if (this.direction === 'rtl') {\n delta = originalX - pageX;\n }\n else {\n delta = pageX - originalX;\n }\n this.splitterService.setSize(state, delta);\n });\n this.subscriptions.add(listener);\n this.subscriptions.add(this.draggable.kendoRelease.subscribe(() => this.splitterService.toggleContentOverlay(this.index, false)));\n const element = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(element, 'keydown', event => this.onKeyDown(event)));\n this.subscriptions.add(this.renderer.listen(element, 'focusin', () => this.focused = true));\n this.subscriptions.add(this.renderer.listen(element, 'focusout', () => this.focused = false));\n this.subscriptions.add(this.renderer.listen(element, 'dblclick', () => this.togglePane()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n togglePrevious() {\n this.splitterService.tryToggle(this.index);\n }\n toggleNext() {\n this.splitterService.tryToggle(this.index + 1);\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n shouldShowIcon(iconName) {\n const paneIndex = iconName === 'prev' ? this.index : this.index + 1;\n const relatedPaneIndex = iconName === 'prev' ? this.index + 1 : this.index;\n const pane = this.splitterService.pane(paneIndex);\n const relatedPane = this.splitterService.pane(relatedPaneIndex);\n const isCollapsible = pane.collapsible;\n return isCollapsible && !relatedPane.isHidden;\n }\n previousArrowClass() {\n const pane = this.splitterService.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n return classFromObject({\n 'caret-alt-left': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),\n 'caret-alt-right': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),\n 'caret-alt-up': isCollapsible && !isHorizontal && !isCollapsed,\n 'caret-alt-down': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n previousSVGArrowClass() {\n const pane = this.splitterService.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n if (isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL))) {\n return caretAltLeftIcon;\n }\n if (isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL))) {\n return caretAltRightIcon;\n }\n if (isCollapsible && !isHorizontal && !isCollapsed) {\n return caretAltUpIcon;\n }\n if (isCollapsible && !isHorizontal && isCollapsed) {\n return caretAltDownIcon;\n }\n }\n nextArrowClass() {\n const pane = this.splitterService.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n return classFromObject({\n 'caret-alt-right': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),\n 'caret-alt-left': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),\n 'caret-alt-down': isCollapsible && !isHorizontal && !isCollapsed,\n 'caret-alt-up': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n nextSVGArrowClass() {\n const pane = this.splitterService.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n if (isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL))) {\n return caretAltRightIcon;\n }\n if (isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL))) {\n return caretAltLeftIcon;\n }\n if (isCollapsible && !isHorizontal && !isCollapsed) {\n return caretAltDownIcon;\n }\n if (isCollapsible && !isHorizontal && isCollapsed) {\n return caretAltUpIcon;\n }\n }\n togglePane() {\n if (this.expandLast) {\n this.toggleNext();\n }\n else {\n this.tryToggleNearest();\n }\n }\n get expandLast() {\n const panes = this.splitterService.panes;\n return panes.length === 2 && panes[1].collapsed;\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const shouldToggle = event.ctrlKey || event.metaKey;\n if (keyCode === Keys.Enter) {\n event.preventDefault();\n this.togglePane();\n }\n else if (shouldToggleOrResize(keyCode, this.orientation)) {\n event.preventDefault();\n if (shouldToggle) {\n this.splitterService.togglePane(keyCode, this.index);\n }\n else {\n this.splitterService.resizePane(keyCode, this.index);\n }\n }\n }\n tryToggleNearest() {\n const prev = this.index;\n const next = this.index + 1;\n if (!this.splitterService.tryToggle(prev)) {\n this.splitterService.tryToggle(next);\n }\n }\n}\nSplitterBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterBarComponent, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i1.LocalizationService }, { token: SplitterService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nSplitterBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SplitterBarComponent, selector: \"kendo-splitter-bar\", inputs: { orientation: \"orientation\", index: \"index\" }, host: { properties: { \"attr.role\": \"this.ariaRole\", \"class.k-focus\": \"this.focused\", \"attr.aria-orientation\": \"this.hostOrientation\", \"attr.tabindex\": \"this.tabIndex\", \"class\": \"this.hostClasses\", \"style.-ms-flex-order\": \"this.order\", \"style.order\": \"this.order\" } }, ngImport: i0, template: `\n
\n \n
\n
\n
\n \n
\n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterBarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-splitter-bar',\n template: `\n
\n \n
\n
\n
\n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1$1.DraggableDirective, decorators: [{\n type: Host\n }] }, { type: i1.LocalizationService }, { type: SplitterService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], focused: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], hostOrientation: [{\n type: HostBinding,\n args: ['attr.aria-orientation']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], hostClasses: [{\n type: HostBinding,\n args: ['class']\n }], order: [{\n type: HostBinding,\n args: ['style.-ms-flex-order']\n }, {\n type: HostBinding,\n args: ['style.order']\n }], orientation: [{\n type: Input\n }], index: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI Splitter component for Angular]({% slug overview_splitter %}).\n *\n * ```ts-preview\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *\n * \n *

Inner splitter / left pane

\n *

Resizable and collapsible.

\n *
\n *\n * \n *

Inner splitter / center pane

\n *

Resizable only.

\n *
\n *\n * \n *

Inner splitter / right pane

\n *

Resizable and collapsible.

\n *
\n *\n *
\n * `,\n * styles: [ `\n * h3 { font-size: 1.2em; }\n * h3, p { margin: 10px; padding: 0; }\n * ` ]\n * })\n * class AppComponent {}\n * ```\n */\nclass SplitterComponent {\n constructor(element, splitterService, localization, renderer, enclosingPane) {\n this.element = element;\n this.splitterService = splitterService;\n this.localization = localization;\n this.renderer = renderer;\n this.enclosingPane = enclosingPane;\n /**\n * Specifies the orientation of the panes within the Splitter.\n * Panes in a horizontal Splitter are placed horizontally.\n * Panes in a vertical Splitter are placed vertically.\n */\n this.orientation = 'horizontal';\n validatePackage(packageMetadata);\n if (enclosingPane) {\n enclosingPane.containsSplitter = true;\n }\n // the handler only runs in NgZone if there are bound handlers\n // this line merges both streams\n this.layoutChange = this.splitterService.layoutChange;\n this.configure = this.configure.bind(this);\n }\n /**\n * The distance in pixels that the separator is moved with during keyboard navigation.\n * @default 10\n */\n set resizeStep(value) {\n this.splitterService.resizeStep = value;\n }\n get resizeStep() {\n return this.splitterService.resizeStep;\n }\n get hostClasses() {\n return true;\n }\n get horizontalHostClasses() {\n return this.orientation === 'horizontal';\n }\n get verticalHostClasses() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n set splitbars(splitbars) {\n if (!isPresent(splitbars) || !isPresent(this.panes)) {\n return;\n }\n const panesArray = this.panes.toArray();\n const splitBarsArray = splitbars.toArray();\n const components = [...panesArray, ...splitBarsArray]\n .sort((a, b) => a.order - b.order);\n const elements = components.map(component => component.element.nativeElement);\n panesArray.forEach((pane, i) => {\n if (splitBarsArray[i] && pane.separatorLabel) {\n const splitbar = splitBarsArray[i].element.nativeElement;\n this.renderer.setAttribute(splitbar, 'aria-label', pane.separatorLabel);\n }\n });\n elements.forEach(element => this.renderer.appendChild(this.element.nativeElement, element));\n }\n ngAfterContentInit() {\n this.reconfigure();\n }\n ngOnChanges(changes) {\n if (changes.orientation && !changes.orientation.isFirstChange()) {\n this.reconfigure();\n }\n }\n ngOnDestroy() {\n if (this.enclosingPane) {\n this.enclosingPane.containsSplitter = false;\n }\n this.unsubscribeChanges();\n }\n reconfigure() {\n this.unsubscribeChanges();\n this.configure();\n this.paneChangesSubscription = this.panes.changes.subscribe(this.configure);\n }\n unsubscribeChanges() {\n if (this.paneChangesSubscription) {\n this.paneChangesSubscription.unsubscribe();\n this.paneChangesSubscription = null;\n }\n }\n configure() {\n this.splitterService.configure({\n panes: this.panes.toArray(),\n orientation: this.orientation,\n containerSize: () => {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.clientHeight;\n }\n else {\n return this.element.nativeElement.clientWidth;\n }\n }\n });\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: SplitterService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: SplitterPaneComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: SplitterComponent, selector: \"kendo-splitter\", inputs: { orientation: \"orientation\", splitbarWidth: \"splitbarWidth\", resizeStep: \"resizeStep\" }, outputs: { layoutChange: \"layoutChange\" }, host: { properties: { \"class.k-splitter\": \"this.hostClasses\", \"class.k-splitter-flex\": \"this.hostClasses\", \"class.k-splitter-horizontal\": \"this.horizontalHostClasses\", \"class.k-splitter-vertical\": \"this.verticalHostClasses\", \"attr.dir\": \"this.dir\" } }, providers: [\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ], queries: [{ propertyName: \"panes\", predicate: SplitterPaneComponent }], viewQueries: [{ propertyName: \"splitbars\", predicate: SplitterBarComponent, descendants: true }], exportAs: [\"kendoSplitter\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n `, isInline: true, components: [{ type: SplitterBarComponent, selector: \"kendo-splitter-bar\", inputs: [\"orientation\", \"index\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1$1.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoSplitter',\n selector: 'kendo-splitter',\n providers: [\n SplitterService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }\n ],\n template: `\n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SplitterService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: SplitterPaneComponent, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: Inject,\n args: [SplitterPaneComponent]\n }] }]; }, propDecorators: { orientation: [{\n type: Input\n }], splitbarWidth: [{\n type: Input\n }], resizeStep: [{\n type: Input\n }], layoutChange: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter']\n }, {\n type: HostBinding,\n args: ['class.k-splitter-flex']\n }], horizontalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-horizontal']\n }], verticalHostClasses: [{\n type: HostBinding,\n args: ['class.k-splitter-vertical']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], splitbars: [{\n type: ViewChildren,\n args: [SplitterBarComponent]\n }], panes: [{\n type: ContentChildren,\n args: [SplitterPaneComponent]\n }] } });\n\n/**\n * Represents the content template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabContent` inside the component tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

Content 1

\n *
\n *
\n *\n * \n * \n *

Content 2

\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass TabContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTabContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabContentDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTabContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabContentDirective, selector: \"[kendoTabContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTabContent]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the title template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabTitle` directive inside the component tag.\n *\n * > The `kendoTabTitle` directive overrides the TabStripTab [title]({% slug api_layout_tabstriptabcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

Custom Title

\n *
\n * \n *

Content 1

\n *
\n *
\n *\n * \n * \n *

Content 2

\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nclass TabTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTabTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabTitleDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTabTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabTitleDirective, selector: \"[kendoTabTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTabTitle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @hidden\n */\nclass TabTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nTabTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nTabTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabTemplateDirective, selector: \"[kendoTabTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTabTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * Represents the tab component of the TabStrip.\n */\nclass TabStripTabComponent {\n constructor() {\n /**\n * Used to disable a tab ([see example]({% slug tabs_tabstrip %}#toc-disabled-tabs)).\n *\n * Defaults to `false`.\n */\n this.disabled = false;\n this._tabDirective = new QueryList();\n this._tabContent = new QueryList();\n /**\n * @hidden\n *\n * Currently only disabled tabs can be focused. Otherwise they will be\n * immediately selected\n */\n this.focused = false;\n }\n get tabContent() {\n return this._tabContent.first;\n }\n get tabTitle() {\n return this._tabTitleDirective.first;\n }\n get tabTemplate() {\n return this._tabDirective.first;\n }\n}\nTabStripTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTabStripTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabStripTabComponent, selector: \"kendo-tabstrip-tab\", inputs: { title: \"title\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\", selected: \"selected\", closable: \"closable\", closeIcon: \"closeIcon\", closeIconClass: \"closeIconClass\", closeSVGIcon: \"closeSVGIcon\" }, queries: [{ propertyName: \"_tabDirective\", predicate: TabTemplateDirective }, { propertyName: \"_tabContent\", predicate: TabContentDirective }, { propertyName: \"_tabTitleDirective\", predicate: TabTitleDirective }], exportAs: [\"kendoTabStripTab\"], ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripTabComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoTabStripTab',\n selector: 'kendo-tabstrip-tab',\n template: ``\n }]\n }], propDecorators: { title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], selected: [{\n type: Input\n }], closable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], closeIconClass: [{\n type: Input\n }], closeSVGIcon: [{\n type: Input\n }], _tabDirective: [{\n type: ContentChildren,\n args: [TabTemplateDirective]\n }], _tabContent: [{\n type: ContentChildren,\n args: [TabContentDirective]\n }], _tabTitleDirective: [{\n type: ContentChildren,\n args: [TabTitleDirective]\n }] } });\n\n/**\n * Arguments for the `tabClose` event of the TabStrip.\n * The `tabClose` event fires when the close button of the tab is clicked.\n *\n */\nclass TabCloseEvent {\n /**\n * Constructs the event arguments for the `tabClose` event.\n * @param index - The index of the closed tab.\n * @param tab - The closed tab instance\n */\n constructor(index, tab) {\n this.index = index;\n this.tab = tab;\n }\n}\n\n/**\n * Arguments for the `select` event of the TabStrip.\n * The `select` event fires when a tab is selected (clicked).\n */\nclass SelectEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `select` event.\n * @param index - The index of the selected tab.\n * @param title - The title of the selected tab.\n */\n constructor(index, title) {\n super();\n this.index = index;\n this.title = title;\n }\n}\n\n/**\n * @hidden\n *\n * Checks if the current target is a TabStrip tab element\n */\nconst isTabElement = (target) => {\n const targetId = target.getAttribute('id');\n if (isPresent(targetId) || targetId.indexOf('k-tabstrip-tab-') >= 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n *\n * Checks if the current tab is closable. Depends on the value of the TabStrip closable property.\n */\nconst isTabClosable = (tab, tabStripClosable) => {\n if (tab.closable !== undefined) {\n return tab.closable;\n }\n return tabStripClosable;\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip scroll buttons will be rendered. Depends on the value of the TabStrip scrollable settings.\n */\nconst tabStripHasScrollButtons = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.scrollButtons !== 'hidden';\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip mouse scroll will be enabled. Depends on the value of the TabStrip scrollable settings.\n */\nconst mouseScrollEnabled = (scrollableSettings) => {\n return scrollableSettings.enabled && scrollableSettings.mouseScroll;\n};\n/**\n * @hidden\n *\n * Retrieves the current active tab element and its index.\n * This could either be the currently selected tab or the currently focused tab.\n */\nconst getActiveTab = (tabs) => {\n let focusedTab;\n let selectedTab;\n let focusedIndex = -1;\n let selectedIndex = -1;\n tabs.forEach((tab, index) => {\n if (tab.selected) {\n selectedTab = tab;\n selectedIndex = index;\n }\n else if (tab.focused) {\n focusedTab = tab;\n focusedIndex = index;\n }\n });\n return focusedIndex >= 0 ?\n { tab: focusedTab, index: focusedIndex } :\n { tab: selectedTab, index: selectedIndex };\n};\n/**\n * @hidden\n */\nconst getTabByIndex = (tabs, index) => {\n const filtered = tabs.filter((_tab, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst getTabHeaderByIndex = (tabHeaderContainers, index) => {\n const filtered = tabHeaderContainers.filter((_tabHeader, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst resetTabFocus = (tabs) => {\n tabs.forEach((tab) => {\n tab.focused = false;\n });\n};\n/**\n * @hidden\n */\nconst resetTabSelection = (tabs) => {\n tabs.forEach((tab) => {\n tab.selected = false;\n });\n};\n/**\n * @hidden\n */\nconst isTablistHorizontal = (tabPosition) => tabPosition === 'top' || tabPosition === 'bottom';\n/**\n * @hidden\n */\nconst getId$1 = (prefix, tabStripId, tabIndex) => {\n return `${prefix}-${tabStripId}-${tabIndex}`;\n};\n\n/**\n * @hidden\n */\nclass TabStripService {\n constructor(localization, ngZone) {\n this.localization = localization;\n this.ngZone = ngZone;\n }\n onKeyDown(event) {\n if (!isTabElement(event.target)) {\n return;\n }\n const key = event.keyCode;\n if (this.shouldHandleKey(key)) {\n event.preventDefault();\n }\n else {\n return;\n }\n if (isNavigationKey(key) || isArrowKey(key)) {\n this.onNavigate(key);\n }\n else if (key === Keys.Delete) {\n this.onDelete();\n }\n }\n onTabSelect(tab, index) {\n const selectArgs = new SelectEvent(index, tab.title);\n this.owner.tabSelect.emit(selectArgs);\n if (!selectArgs.isDefaultPrevented()) {\n if (tab.selected) {\n this.focusTabHeader(index);\n return;\n }\n this.selectTab(tab, index);\n }\n }\n selectTab(tab, index) {\n resetTabSelection(this.owner.tabs);\n this.focusTabHeader(index);\n tab.selected = true;\n if (this.owner.isScrollable) {\n this.owner.scrollToSelectedTab();\n }\n }\n onNavigate(keyCode) {\n const { tab: activeTab, index: activeIndex } = getActiveTab(this.owner.tabs);\n if (!NgZone.isInAngularZone()) {\n this.ngZone.run(() => {\n if (activeIndex < 0) {\n this.owner.selectTab(this.firstNavigatableIndex());\n return;\n }\n activeTab.focused = false;\n const nextIndex = this.computeNextIndex(activeIndex, keyCode);\n this.activateTab(nextIndex);\n });\n }\n }\n onDelete() {\n const { tab: activeTab, index: activeTabIndex } = getActiveTab(this.owner.tabs);\n if (isTabClosable(activeTab, this.owner.closable) && !activeTab.disabled) {\n this.ngZone.run(() => {\n this.owner.tabClose.emit({ tab: activeTab, index: activeTabIndex });\n });\n }\n }\n activateTab(index) {\n const tab = getTabByIndex(this.owner.tabs, index);\n if (tab.disabled) {\n this.focusTabHeader(index);\n tab.focused = true;\n }\n else {\n this.onTabSelect(tab, index);\n }\n }\n focusTabHeader(index) {\n const tabHeader = getTabHeaderByIndex(this.owner.tabHeaderContainers, index);\n tabHeader.nativeElement.focus();\n }\n shouldHandleKey(keyCode) {\n if (isNavigationKey(keyCode)) {\n return true;\n }\n if (isTablistHorizontal(this.owner.tabPosition) && isHorizontalArrowKey(keyCode)) {\n return true;\n }\n if (!isTablistHorizontal(this.owner.tabPosition) && isVerticalArrowKey(keyCode)) {\n return true;\n }\n if (keyCode === Keys.Delete) {\n return true;\n }\n return false;\n }\n computeNextIndex(activeIndex, keyCode) {\n switch (keyCode) {\n case this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight):\n case this.invertKeys(Keys.ArrowUp, Keys.ArrowDown):\n return this.prevNavigatableIndex(activeIndex);\n case this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft):\n case this.invertKeys(Keys.ArrowDown, Keys.ArrowUp):\n return this.nextNavigatableIndex(activeIndex);\n case Keys.Home:\n return this.firstNavigatableIndex();\n case Keys.End:\n return this.lastNavigatableIndex();\n default:\n return;\n }\n }\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n firstNavigatableIndex() {\n return 0;\n }\n lastNavigatableIndex() {\n return this.owner.tabs.length - 1;\n }\n prevNavigatableIndex(selectedIndex) {\n if (selectedIndex - 1 < 0) {\n return this.lastNavigatableIndex();\n }\n return selectedIndex - 1;\n }\n nextNavigatableIndex(selectedIndex) {\n if (selectedIndex + 1 >= this.owner.tabs.length) {\n return this.firstNavigatableIndex();\n }\n return selectedIndex + 1;\n }\n}\nTabStripService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nTabStripService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst MOUSE_SCROLL_SPEED = 10;\n/**\n * @hidden\n */\nconst BUTTON_SCROLL_SPEED = 100;\n/**\n * @hidden\n */\nconst SCROLLABLE_CLASS = 'k-tabstrip-scrollable';\n/**\n * @hidden\n */\nconst HIDDEN_CLASS = 'k-hidden';\n/**\n * @hidden\n */\nconst DIRECTION_CLASSES = {\n left: 'caret-alt-left',\n right: 'caret-alt-right',\n up: 'caret-alt-up',\n down: 'caret-alt-down'\n};\n/**\n * @hidden\n */\nconst DEFAULT_SCROLL_BEHAVIOR = 'smooth';\n\n/**\n * @hidden\n */\nclass ScrollService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.position = 0;\n this.scrollButtonActiveStateChange = new Subject();\n this.isDisabled = (buttonType) => this.owner[`${buttonType}ScrollButton`].host.nativeElement.classList.contains('k-disabled');\n }\n get tablistElement() {\n return this.owner.tablist.nativeElement;\n }\n get tabstripSize() {\n const hostElement = this.owner.wrapper.nativeElement;\n const wrapperWidth = parseFloat(getComputedStyle(hostElement).width);\n const wrapperHeight = parseFloat(getComputedStyle(hostElement).height);\n return isTablistHorizontal(this.owner.tabPosition) ? wrapperWidth : wrapperHeight;\n }\n get tablistOverflowSize() {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n const overflowSize = Math.floor(this.tablistElement[isHorizontal ? 'scrollWidth' : 'scrollHeight']\n - this.tablistElement.getBoundingClientRect()[isHorizontal ? 'width' : 'height']);\n return overflowSize < 0 ? 0 : overflowSize;\n }\n get tabsOverflow() {\n return this.tablistOverflowSize > 0;\n }\n get scrollButtonsSize() {\n if (!this.owner.hasScrollButtons) {\n return 0;\n }\n const prevRect = this.owner.prevScrollButton.hostBoundingClientRect;\n const prevSize = isTablistHorizontal(this.owner.tabPosition) ? prevRect.width : prevRect.height;\n const nextRect = this.owner.nextScrollButton.hostBoundingClientRect;\n const nextSize = isTablistHorizontal(this.owner.tabPosition) ? nextRect.width : nextRect.height;\n return prevSize + nextSize;\n }\n toggleScrollButtonsState() {\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const currentPrevButtonActive = !this.isDisabled('prev');\n const currentNextButtonActive = !this.isDisabled('next');\n const calculatedPrevButtonActive = this.position > 0 && this.tablistOverflowSize > 0;\n const calculatedNextButtonActive = this.position < this.tablistOverflowSize + this.scrollButtonsSize && this.tablistOverflowSize > 0;\n if (calculatedPrevButtonActive !== currentPrevButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));\n }\n if (calculatedNextButtonActive !== currentNextButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));\n }\n }\n scrollToSelectedTab() {\n if (!this.tabsOverflow) {\n return;\n }\n const { index: activeIndex } = getActiveTab(this.owner.tabs);\n if (activeIndex === -1) {\n return;\n }\n this.position += this.getScrollOffset(activeIndex);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const isFirstTabActive = activeIndex === 0;\n const isLastTabActive = activeIndex === this.owner.tabs.length - 1;\n if (isFirstTabActive && !this.isDisabled('prev')) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', false));\n }\n if (isLastTabActive && !this.isDisabled('next')) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', false));\n }\n }\n getScrollOffset(activeIndex) {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n this.tablistElement[`scroll${isHorizontal ? 'Left' : 'Top'}`] = this.position;\n const activeTabRect = this.tablistElement.children[activeIndex].getBoundingClientRect();\n const tablistRect = this.tablistElement.getBoundingClientRect();\n const end = isHorizontal ? 'right' : 'bottom';\n const start = isHorizontal ? 'left' : 'top';\n const activeTabStart = activeTabRect[start];\n const activeTabEnd = activeTabRect[end];\n const tablistStart = tablistRect[start];\n const tablistEnd = tablistRect[end];\n const tabEndIsInVisibleRange = activeTabEnd <= tablistEnd;\n const tabStartIsInVisibleRange = activeTabStart >= tablistStart;\n const isWholeTabVisible = tabEndIsInVisibleRange && tabStartIsInVisibleRange;\n if (isWholeTabVisible) {\n return 0;\n }\n if (!tabEndIsInVisibleRange) {\n return activeTabEnd - tablistEnd;\n }\n if (!tabStartIsInVisibleRange) {\n return activeTabStart - tablistStart;\n }\n }\n onMouseScroll(event) {\n event.preventDefault();\n if (!mouseScrollEnabled(this.owner.scrollable)) {\n return;\n }\n const direction = event.deltaY < 0 ? 'prev' : 'next';\n this.calculateListPosition(direction, this.owner.scrollable.mouseScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n scrollTabs(direction) {\n this.calculateListPosition(direction, this.owner.scrollable.buttonScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition) && this.tablistElement) {\n this.tablistElement.scrollTo({ left: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n else {\n this.tablistElement.scrollTo({ top: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });\n }\n this.toggleScrollButtonsState();\n }\n calculateListPosition(direction, scrollSpeed) {\n const adjustedMaxScroll = this.tablistOverflowSize + this.scrollButtonsSize;\n if (direction === 'prev' && this.position > 0) {\n this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;\n }\n else if (direction === 'next' && this.position < adjustedMaxScroll) {\n if (this.position + scrollSpeed > adjustedMaxScroll) {\n this.position = adjustedMaxScroll;\n return;\n }\n this.position += scrollSpeed;\n }\n }\n restoreScrollPosition() {\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n }\n else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n toggleButtonActiveState(buttonType, active) {\n this.scrollButtonActiveStateChange.next({ buttonType, active });\n }\n}\nScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({ enabled = true, scrollButtons = 'auto', mouseScroll = true, buttonScrollSpeed = BUTTON_SCROLL_SPEED, mouseScrollSpeed = MOUSE_SCROLL_SPEED, prevButtonIcon, nextButtonIcon, prevSVGButtonIcon, nextSVGButtonIcon }) => ({\n enabled,\n scrollButtons,\n mouseScroll,\n buttonScrollSpeed,\n mouseScrollSpeed,\n prevButtonIcon,\n nextButtonIcon,\n prevSVGButtonIcon,\n nextSVGButtonIcon\n});\n/**\n * @hidden\n */\nconst normalizeScrollableSettings = (settings) => normalizeSettings(settings === false ? { enabled: false } : settings);\n\n/**\n * Arguments for the `tabScroll` event of the TabStrip.\n * The `tabScroll` event fires when the tabs are being scrolled.\n *\n */\nclass TabScrollEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nclass TabStripScrollableButtonComponent {\n constructor(host, renderer, ngZone, localization) {\n this.host = host;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localization = localization;\n this.prev = false;\n this.tabScroll = new EventEmitter();\n this.onClick = new EventEmitter();\n this.caretAltLeftIcon = caretAltLeftIcon;\n this.caretAltRightIcon = caretAltRightIcon;\n this.caretAltUpIcon = caretAltUpIcon;\n this.caretAltDownIcon = caretAltDownIcon;\n this.subs = new Subscription();\n this.clickHandler = (scrollEvent) => {\n const tabStripScrollEvent = this.emitScrollEvent(scrollEvent);\n const isTabStripScrollEventPrevented = tabStripScrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented) {\n return;\n }\n const buttonType = this.prev ? 'prev' : 'next';\n this.onClick.emit(buttonType);\n };\n }\n get prevClass() {\n return this.prev;\n }\n get nextClass() {\n return !this.prev;\n }\n get hostBoundingClientRect() {\n return this.host.nativeElement.getBoundingClientRect();\n }\n get iconClass() {\n return this.scrollButtonIconClass;\n }\n get customIconClass() {\n return this.customScrollButtonIconClass;\n }\n get svgIcon() {\n return this.scrollButtonSVGIcon;\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', this.clickHandler));\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggle(show) {\n this.renderer[show ? 'removeClass' : 'addClass'](this.host.nativeElement, HIDDEN_CLASS);\n }\n get scrollButtonIconClass() {\n const defaultPrevIcon = isTablistHorizontal(this.tabPosition) ?\n !this.localization.rtl ?\n DIRECTION_CLASSES.left :\n DIRECTION_CLASSES.right :\n DIRECTION_CLASSES.up;\n const defaultNextIcon = isTablistHorizontal(this.tabPosition) ?\n !this.localization.rtl ?\n DIRECTION_CLASSES.right :\n DIRECTION_CLASSES.left :\n DIRECTION_CLASSES.down;\n if (typeof this.scrollable === 'object') {\n const prevIcon = typeof this.scrollable.prevButtonIcon === 'undefined' ? defaultPrevIcon : '';\n const nextIcon = typeof this.scrollable.nextButtonIcon === 'undefined' ? defaultNextIcon : '';\n if (prevIcon && this.prev) {\n return prevIcon;\n }\n else if (nextIcon && !this.prev) {\n return nextIcon;\n }\n }\n }\n get customScrollButtonIconClass() {\n if (typeof this.scrollable === 'object') {\n const prevIcon = this.scrollable.prevButtonIcon;\n const nextIcon = this.scrollable.nextButtonIcon;\n if (prevIcon && this.prev) {\n return `k-icon ${prevIcon}`;\n }\n if (nextIcon && !this.prev) {\n return `k-icon ${nextIcon}`;\n }\n }\n }\n get scrollButtonSVGIcon() {\n const defaultPrevSVGIcon = isTablistHorizontal(this.tabPosition) ?\n !this.localization.rtl ?\n this.caretAltLeftIcon :\n this.caretAltRightIcon :\n this.caretAltUpIcon;\n const defaultNextSVGIcon = isTablistHorizontal(this.tabPosition) ?\n !this.localization.rtl ?\n this.caretAltRightIcon :\n this.caretAltLeftIcon :\n this.caretAltDownIcon;\n if (typeof this.scrollable === 'object') {\n const prevIcon = this.scrollable.prevSVGButtonIcon !== undefined ? this.scrollable.prevSVGButtonIcon : defaultPrevSVGIcon;\n const nextIcon = this.scrollable.nextSVGButtonIcon !== undefined ? this.scrollable.nextSVGButtonIcon : defaultNextSVGIcon;\n if (prevIcon || nextIcon) {\n return this.prev ? prevIcon : nextIcon;\n }\n }\n }\n emitScrollEvent(event) {\n const scrollEvent = new TabScrollEvent({\n originalEvent: event\n });\n this.tabScroll.emit(scrollEvent);\n return scrollEvent;\n }\n}\nTabStripScrollableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripScrollableButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTabStripScrollableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabStripScrollableButtonComponent, selector: \"[kendoTabStripScrollableButton]\", inputs: { prev: \"prev\", tabPosition: \"tabPosition\", scrollable: \"scrollable\" }, outputs: { tabScroll: \"tabScroll\", onClick: \"onClick\" }, host: { properties: { \"class.k-tabstrip-prev\": \"this.prevClass\", \"class.k-tabstrip-next\": \"this.nextClass\" } }, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripScrollableButtonComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n \n \n `,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoTabStripScrollableButton]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }]; }, propDecorators: { prevClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-prev']\n }], nextClass: [{\n type: HostBinding,\n args: ['class.k-tabstrip-next']\n }], prev: [{\n type: Input\n }], tabPosition: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], tabScroll: [{\n type: Output\n }], onClick: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass TabComponent {\n constructor(localization) {\n this.localization = localization;\n this.tabClose = new EventEmitter();\n this.hostClasses = true;\n }\n get activeClass() {\n return this.tab.selected;\n }\n get disabledClass() {\n return this.tab.disabled;\n }\n get focusedClass() {\n return this.tab.focused;\n }\n get tabIndex() {\n return this.tab.selected || this.tab.focused ? 0 : -1;\n }\n get tabClosable() {\n if (this.tab.closable !== undefined) {\n return this.tab.closable;\n }\n return this.tabStripClosable;\n }\n get closeSVGIconClass() {\n if (this.customCloseButtonClasses) {\n return;\n }\n if (this.tab.closeSVGIcon) {\n return this.tab.closeSVGIcon;\n }\n if (this.closeSVGIcon) {\n return this.closeSVGIcon;\n }\n return xIcon;\n }\n get closeButtonClasses() {\n if (!this.customTabstripCloseIcon && this.tabStripCloseIcon && !this.tab.closeIconClass) {\n if (this.tab.closeIcon) {\n return this.tab.closeIcon;\n }\n return this.tabStripCloseIcon;\n }\n }\n get customCloseButtonClasses() {\n if (this.customTabstripCloseIcon || this.tab.closeIconClass) {\n if (this.tab.closeIconClass) {\n return this.tab.closeIconClass;\n }\n return this.customTabstripCloseIcon;\n }\n }\n get closeButtonTitle() {\n return this.localization.get('closeTitle');\n }\n closeTab(index) {\n const closeArgs = new TabCloseEvent(index, this.tab);\n this.tabClose.emit(closeArgs);\n }\n}\nTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabComponent, selector: \"[kendoTabStripTab]\", inputs: { tab: \"tab\", index: \"index\", tabStripClosable: \"tabStripClosable\", tabStripCloseIcon: \"tabStripCloseIcon\", customTabstripCloseIcon: \"customTabstripCloseIcon\", closeSVGIcon: \"closeSVGIcon\" }, outputs: { tabClose: \"tabClose\" }, host: { properties: { \"class.k-item\": \"this.hostClasses\", \"class.k-tabstrip-item\": \"this.hostClasses\", \"attr.aria-selected\": \"this.activeClass\", \"class.k-active\": \"this.activeClass\", \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"class.k-focus\": \"this.focusedClass\", \"attr.tabindex\": \"this.tabIndex\" } }, ngImport: i0, template: `\n \n {{ tab.title }}\n \n \n \n \n \n\n \n \n\n \n `, isInline: true, components: [{ type: i2$1.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoTabStripTab]',\n template: `\n \n {{ tab.title }}\n \n \n \n \n \n\n \n \n\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { tab: [{\n type: Input\n }], index: [{\n type: Input\n }], tabStripClosable: [{\n type: Input\n }], tabStripCloseIcon: [{\n type: Input\n }], customTabstripCloseIcon: [{\n type: Input\n }], closeSVGIcon: [{\n type: Input\n }], tabClose: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-item']\n }, {\n type: HostBinding,\n args: ['class.k-tabstrip-item']\n }], activeClass: [{\n type: HostBinding,\n args: ['attr.aria-selected']\n }, {\n type: HostBinding,\n args: ['class.k-active']\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], focusedClass: [{\n type: HostBinding,\n args: ['class.k-focus']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }] } });\n\n/**\n * @hidden\n */\nclass TabStripMessages extends ComponentMessages {\n}\nTabStripMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTabStripMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabStripMessages, selector: \"kendo-tabstrip-messages-base\", inputs: { closeTitle: \"closeTitle\", previousTabButton: \"previousTabButton\", nextTabButton: \"nextTabButton\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-tabstrip-messages-base'\n }]\n }], propDecorators: { closeTitle: [{\n type: Input\n }], previousTabButton: [{\n type: Input\n }], nextTabButton: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedTabStripMessagesDirective extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedTabStripMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedTabStripMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedTabStripMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedTabStripMessagesDirective, selector: \"[kendoTabStripLocalizedMessages]\", providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedTabStripMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective)\n }\n ],\n selector: `[kendoTabStripLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI TabStrip component for Angular]({% slug overview_tabstrip %}).\n */\nclass TabStripComponent {\n constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone) {\n this.localization = localization;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.tabstripService = tabstripService;\n this.scrollService = scrollService;\n this.ngZone = ngZone;\n /**\n * Enables the tab animation.\n *\n * @default true\n */\n this.animate = true;\n /**\n * Sets the position of the tabs. Defaults to `top`.\n *\n * @default 'top'\n */\n this.tabPosition = 'top';\n /**\n * When set to `true`, the component renders all tabs and they are persisted in the DOM.\n * By default, `keepTabContent` is `false`.\n *\n * @default false\n */\n this.keepTabContent = false;\n /**\n * When set to `true`, a close button will be rendered inside each tab.\n * By default, `closable` is `false`.\n *\n * @default false\n */\n this.closable = false;\n /**\n * Defines the name for an existing font icon in the Kendo UI theme for the close icon.\n */\n this.closeIcon = 'x';\n /**\n * Determines whether the content associated with each tab will be rendered.\n *\n * @default true\n */\n this.showContentArea = true;\n /**\n * Fires each time the user selects a tab ([see example]({% slug overview_tabstrip %}#toc-basic-usage)).\n * The event data contains the index of the selected tab and its title.\n */\n this.tabSelect = new EventEmitter();\n /**\n * Fires each time the user closes a tab.\n * The event data contains the index of the closed tab and its instance.\n */\n this.tabClose = new EventEmitter();\n /**\n * Fires each time the user scrolls the TabStrip list.\n * The event is preventable.\n */\n this.tabScroll = new EventEmitter();\n this.hostClasses = true;\n /**\n * A query list of all declared tabs.\n */\n this.tabs = new QueryList();\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this._scrollableSettings = normalizeScrollableSettings(false);\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n this.tabStripId = guid();\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n this.tabstripService.owner = this;\n this.scrollService.owner = this;\n this.subscriptions.add(this.scrollService.scrollButtonActiveStateChange.subscribe((activeButtonSettings) => {\n if (this.hasScrollButtons) {\n const action = activeButtonSettings.active ? 'remove' : 'add';\n this.renderer[`${action}Class`](this[`${activeButtonSettings.buttonType}ScrollButton`].host.nativeElement, 'k-disabled');\n }\n }));\n }\n /**\n * Sets the height of the TabStrip.\n */\n set height(value) {\n this._height = value;\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', value);\n }\n get height() {\n return this._height;\n }\n /**\n * Enables the scrolling of the tab list. When set to `true` and the total size of all tabs\n * is greater than the size of the TabStrip container, scroll buttons will be rendered on each end of the tab list.\n *\n * By default, `scrollable` is `false`.\n *\n * @default false\n */\n set scrollable(value) {\n this._scrollableSettings = normalizeScrollableSettings(value);\n if (this.tablist) {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.attachWheelHandler(this.tablist.nativeElement);\n }\n }\n get scrollable() {\n return this._scrollableSettings;\n }\n /**\n * Defines an SVGIcon to be rendered for the close icon.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set closeSVGIcon(icon) {\n if (isDevMode() && icon && this.closeIcon && this.closeIcon !== 'x') {\n throw new Error('Setting both closeIcon and svgIcon options at the same time is not supported.');\n }\n this._closeSVGIcon = icon;\n }\n get closeSVGIcon() {\n return this._closeSVGIcon;\n }\n get tabsAtTop() {\n return this.tabPosition === 'top';\n }\n get tabsAtRight() {\n return this.tabPosition === 'right';\n }\n get tabsAtBottom() {\n return this.tabPosition === 'bottom';\n }\n get tabsAtLeft() {\n return this.tabPosition === 'left';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabStripScrollable() {\n return this._scrollableSettings.enabled;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n setTimeout(() => {\n this.scrollToSelectedTab();\n });\n });\n this.initDomEvents();\n this.tabsChangesSub = this.tabs.changes.subscribe(() => {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.scrollService.toggleScrollButtonsState();\n });\n }\n ngOnChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const positionChange = changes['tabPosition'];\n if (positionChange) {\n const tabsAtBottomChanged = positionChange.previousValue === 'bottom' || positionChange.currentValue === 'bottom';\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (tabsAtBottomChanged) {\n if (this.subscriptionsArePresent) {\n this.subscriptions.unsubscribe();\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n this.activeStateChangeSub = this.scrollService.scrollButtonActiveStateChange.subscribe((activeButtonSettings) => {\n if (this.hasScrollButtons) {\n const action = activeButtonSettings.active ? 'remove' : 'add';\n this.renderer[`${action}Class`](this[`${activeButtonSettings.buttonType}ScrollButton`].host.nativeElement, 'k-disabled');\n }\n });\n }\n this.initDomEvents();\n }\n this.scrollService.restoreScrollPosition();\n });\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.tabsChangesSub) {\n this.tabsChangesSub.unsubscribe();\n }\n if (this.activeStateChangeSub) {\n this.activeStateChangeSub.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get tabsAlignmentStyles() {\n return {\n start: 'flex-start',\n end: 'flex-end',\n center: 'center',\n justify: 'space-between'\n }[this.tabAlignment];\n }\n /**\n * @hidden\n */\n get tabListWidth() {\n if (this.tabPosition === 'top' || this.tabPosition === 'bottom') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get tabListHeight() {\n if (this.tabPosition === 'left' || this.tabPosition === 'right') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get isScrollable() {\n return this._scrollableSettings.enabled;\n }\n /**\n * @hidden\n */\n get hasScrollButtons() {\n return tabStripHasScrollButtons(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get mouseScrollEnabled() {\n return mouseScrollEnabled(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get itemsWrapperClass() {\n return isTablistHorizontal(this.tabPosition) ? 'k-hstack' : 'k-vstack';\n }\n /**\n * Allows the user to select a tab programmatically.\n * @param {number} index - The index of the tab that will be selected.\n */\n selectTab(index) {\n const tab = getTabByIndex(this.tabs, index);\n if (!tab || tab.disabled) {\n return;\n }\n this.tabstripService.selectTab(tab, index);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n getTabId(idx) {\n return getId$1('k-tabstrip-tab', this.tabStripId, idx);\n }\n /**\n * @hidden\n */\n getTabPanelId(idx) {\n return getId$1('k-tabstrip-tabpanel', this.tabStripId, idx);\n }\n /**\n * @hidden\n */\n onTabClick(originalEvent, tabIndex) {\n if (isFocusable(originalEvent.target)) {\n return;\n }\n const targetElement = originalEvent.target;\n const isTargetCloseButton = hasClass(targetElement, 'k-remove-tab') || hasClass(targetElement.parentElement, 'k-remove-tab');\n if (isTargetCloseButton) {\n return;\n }\n const tab = getTabByIndex(this.tabs, tabIndex);\n this.tabstripService.onTabSelect(tab, tabIndex);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n }\n else {\n this.toggleScrollButtons(false);\n }\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n /**\n * @hidden\n */\n scrollToSelectedTab() {\n if (this._scrollableSettings.enabled) {\n this.scrollService.scrollToSelectedTab();\n }\n }\n /**\n * @hidden\n */\n onScrollButtonClick(buttonType) {\n this.scrollService.scrollTabs(buttonType);\n }\n initDomEvents() {\n if (!this.wrapper || this.subscriptionsArePresent) {\n return;\n }\n const tablist = this.tablist.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'keydown', (ev) => {\n this.tabstripService.onKeyDown(ev);\n }));\n });\n this.subscriptions.add(this.renderer.listen(tablist, 'focusout', () => {\n resetTabFocus(this.tabs);\n }));\n if (this.isScrollable && this.mouseScrollEnabled) {\n this.attachWheelHandler(tablist);\n }\n this.subscriptionsArePresent = true;\n }\n toggleScrollButtons(tabsOverflow) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const scrollButtonsSetting = this._scrollableSettings.scrollButtons;\n const scrollButtonsArePresent = this.prevScrollButton && this.nextScrollButton;\n const shouldShowButtons = scrollButtonsArePresent && tabsOverflow;\n const shouldHideButtons = scrollButtonsArePresent &&\n !tabsOverflow &&\n scrollButtonsSetting !== 'visible';\n const alwaysVisible = scrollButtonsSetting === 'visible';\n if (shouldHideButtons) {\n this.prevScrollButton.toggle(false);\n this.nextScrollButton.toggle(false);\n }\n else if (shouldShowButtons || alwaysVisible) {\n this.prevScrollButton.toggle(true);\n this.nextScrollButton.toggle(true);\n }\n if (scrollButtonsArePresent && alwaysVisible) {\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n });\n }\n attachWheelHandler(tablist) {\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'wheel', (wheelEvent) => {\n const scrollEvent = new TabScrollEvent({\n originalEvent: wheelEvent\n });\n this.tabScroll.emit(scrollEvent);\n const isTabStripScrollEventPrevented = scrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented || !this.scrollService.tabsOverflow) {\n return;\n }\n this.scrollService.onMouseScroll(wheelEvent);\n }));\n });\n }\n}\nTabStripComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TabStripService }, { token: ScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nTabStripComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabStripComponent, selector: \"kendo-tabstrip\", inputs: { height: \"height\", animate: \"animate\", tabAlignment: \"tabAlignment\", tabPosition: \"tabPosition\", keepTabContent: \"keepTabContent\", closable: \"closable\", scrollable: \"scrollable\", closeIcon: \"closeIcon\", closeIconClass: \"closeIconClass\", closeSVGIcon: \"closeSVGIcon\", showContentArea: \"showContentArea\" }, outputs: { tabSelect: \"tabSelect\", tabClose: \"tabClose\", tabScroll: \"tabScroll\" }, host: { properties: { \"class.k-tabstrip\": \"this.hostClasses\", \"class.k-pos-relative\": \"this.hostClasses\", \"class.k-tabstrip-top\": \"this.tabsAtTop\", \"class.k-tabstrip-right\": \"this.tabsAtRight\", \"class.k-tabstrip-bottom\": \"this.tabsAtBottom\", \"class.k-tabstrip-left\": \"this.tabsAtLeft\", \"attr.dir\": \"this.dir\", \"class.k-tabstrip-scrollable\": \"this.tabStripScrollable\" } }, providers: [\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ], queries: [{ propertyName: \"tabs\", predicate: TabStripTabComponent }], viewQueries: [{ propertyName: \"tablist\", first: true, predicate: [\"tablist\"], descendants: true }, { propertyName: \"prevScrollButton\", first: true, predicate: [\"prevScrollButton\"], descendants: true }, { propertyName: \"nextScrollButton\", first: true, predicate: [\"nextScrollButton\"], descendants: true }, { propertyName: \"tabHeaderContainers\", predicate: [\"tabHeaderContainer\"], descendants: true, read: ElementRef }], exportAs: [\"kendoTabStrip\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n \n \n
    \n \n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n
\n `, isInline: true, components: [{ type: TabStripScrollableButtonComponent, selector: \"[kendoTabStripScrollableButton]\", inputs: [\"prev\", \"tabPosition\", \"scrollable\"], outputs: [\"tabScroll\", \"onClick\"] }, { type: TabComponent, selector: \"[kendoTabStripTab]\", inputs: [\"tab\", \"index\", \"tabStripClosable\", \"tabStripCloseIcon\", \"customTabstripCloseIcon\", \"closeSVGIcon\"], outputs: [\"tabClose\"] }, { type: i1$1.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }, { type: i1$1.WatermarkOverlayComponent, selector: \"div[kendoWatermarkOverlay]\" }], directives: [{ type: LocalizedTabStripMessagesDirective, selector: \"[kendoTabStripLocalizedMessages]\" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('state', [\n state('active', style({ opacity: 1 })),\n transition('* => active', [\n style({ opacity: 0 }),\n animate('400ms ease-in')\n ])\n ])\n ],\n providers: [\n TabStripService,\n ScrollService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }\n ],\n exportAs: 'kendoTabStrip',\n selector: 'kendo-tabstrip',\n template: `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n
\n \n \n
    \n \n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: TabStripService }, { type: ScrollService }, { type: i0.NgZone }]; }, propDecorators: { height: [{\n type: Input\n }], animate: [{\n type: Input\n }], tabAlignment: [{\n type: Input\n }], tabPosition: [{\n type: Input\n }], keepTabContent: [{\n type: Input\n }], closable: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], closeIconClass: [{\n type: Input\n }], closeSVGIcon: [{\n type: Input\n }], showContentArea: [{\n type: Input\n }], tabSelect: [{\n type: Output\n }], tabClose: [{\n type: Output\n }], tabScroll: [{\n type: Output\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-tabstrip']\n }, {\n type: HostBinding,\n args: ['class.k-pos-relative']\n }], tabsAtTop: [{\n type: HostBinding,\n args: ['class.k-tabstrip-top']\n }], tabsAtRight: [{\n type: HostBinding,\n args: ['class.k-tabstrip-right']\n }], tabsAtBottom: [{\n type: HostBinding,\n args: ['class.k-tabstrip-bottom']\n }], tabsAtLeft: [{\n type: HostBinding,\n args: ['class.k-tabstrip-left']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], tabStripScrollable: [{\n type: HostBinding,\n args: ['class.k-tabstrip-scrollable']\n }], tabs: [{\n type: ContentChildren,\n args: [TabStripTabComponent]\n }], tablist: [{\n type: ViewChild,\n args: ['tablist', { static: false }]\n }], tabHeaderContainers: [{\n type: ViewChildren,\n args: ['tabHeaderContainer', { read: ElementRef }]\n }], prevScrollButton: [{\n type: ViewChild,\n args: ['prevScrollButton', { static: false }]\n }], nextScrollButton: [{\n type: ViewChild,\n args: ['nextScrollButton', { static: false }]\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass TabStripCustomMessagesComponent extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nTabStripCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTabStripCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TabStripCustomMessagesComponent, selector: \"kendo-tabstrip-messages\", providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent)\n }\n ],\n selector: 'kendo-tabstrip-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents a template that defines the content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerTemplate` directive inside the `` tag.\n * Using this template directive will override all other templates,\n * for example, `kendoDrawerHeaderTemplate` and `kendoDrawerItemTemplate`.\n */\nclass DrawerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerTemplateDirective, selector: \"[kendoDrawerTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the item content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerItemTemplate` directive inside the `` tag.\n */\nclass DrawerItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerItemTemplateDirective, selector: \"[kendoDrawerItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the header content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerHeaderTemplate` directive inside the `` tag.\n */\nclass DrawerHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerHeaderTemplateDirective, selector: \"[kendoDrawerHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the footer content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerFooterTemplate` directive inside the `` tag.\n */\nclass DrawerFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nDrawerFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDrawerFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerFooterTemplateDirective, selector: \"[kendoDrawerFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoDrawerFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nconst defaultIsItemExpanded = (_item) => false;\n/**\n * @hidden\n */\nclass DrawerService {\n constructor() {\n this.selectedIndices = [];\n this.focusIndex = 0;\n this.originalItems = [];\n this.idxCounter = 0;\n this.isItemExpanded = defaultIsItemExpanded;\n }\n init() {\n this.resetViewData();\n this.originalItems = this.owner.items || [];\n const rootItems = this.originalItems.filter(item => !isPresent(item.parentId));\n this.populateViewData(rootItems);\n }\n get view() {\n return Array.from(this.viewData);\n }\n changeFocusedItem(items, keyName, renderer) {\n const currentItem = items.get(this.focusIndex);\n let nextItem;\n if (keyName === 'arrowUp') {\n if (this.focusIndex === 0) {\n nextItem = items.get(items.length - 1);\n this.focusIndex = items.length - 1;\n }\n else {\n nextItem = items.get(this.focusIndex - 1);\n this.focusIndex = this.focusIndex - 1;\n }\n }\n else if (keyName === 'arrowDown') {\n if (this.focusIndex === items.length - 1) {\n nextItem = items.get(0);\n this.focusIndex = 0;\n }\n else {\n nextItem = items.get(this.focusIndex + 1);\n this.focusIndex = this.focusIndex + 1;\n }\n }\n renderer.setAttribute(currentItem.nativeElement, 'tabindex', '-1');\n renderer.setAttribute(nextItem.nativeElement, 'tabindex', '0');\n nextItem.nativeElement.focus();\n }\n populateViewData(items, level = 0) {\n items.forEach((item) => {\n this.setSelection(item);\n const children = this.loadChildren(item);\n const isExpanded = this.isItemExpanded(item);\n this.viewData.add({\n item: item,\n index: this.idxCounter++,\n level: level,\n hasChildren: children.length > 0,\n isExpanded: isExpanded\n });\n if (children.length > 0 && isExpanded) {\n this.populateViewData(children, level + 1);\n }\n });\n }\n resetViewData() {\n this.idxCounter = 0;\n this.viewData = new Set();\n }\n loadChildren(item) {\n return this.originalItems.filter(i => {\n return isPresent(i.parentId) && (i.parentId === item.id);\n });\n }\n onSelect(selectedIdx) {\n this.selectedIndices = [selectedIdx];\n const drawer = this.owner;\n if (drawer.autoCollapse && !drawer.minimized) {\n drawer.toggle(false);\n }\n }\n setSelection(item) {\n if (this.selectedIndices.length === 0 && item.selected) {\n this.selectedIndices.push(this.idxCounter);\n }\n }\n resetSelection() {\n this.selectedIndices = [];\n }\n}\nDrawerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDrawerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nfunction miniExpandPush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapsePush(duration, width, miniWidth) {\n return [\n style({ overflow: 'hidden', flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n *\n */\nfunction miniExpandOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${miniWidth}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandPush(duration, width) {\n return [\n style({ overflow: 'hidden', flexBasis: '0px' }),\n animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapsePush(duration, width) {\n return [\n style({ flexBasis: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', flexBasis: `0px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandRTLOverlay(duration) {\n return [\n style({ transform: `translateX(100%)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandOverlay(duration, position) {\n const translateDir = position !== 'end' ? `-100%` : `100%`;\n return [\n style({ transform: `translateX(${translateDir})` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(0)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction miniCollapseOverlay(duration, width, miniWidth) {\n return [\n style({ width: `${width}px` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${miniWidth}px` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseOverlay(duration, position) {\n const translateDir = position !== 'end' ? '-100%' : '100%';\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(${translateDir})` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapseRTLOverlay(duration) {\n return [\n style({ transform: `translateX(0)` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', transform: `translateX(100%)` }))\n ];\n}\n/**\n * @hidden\n */\nfunction expandAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniExpandPush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return expandPush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? expandRTLOverlay(duration) : expandOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniExpandOverlay(duration, width, miniWidth);\n }\n}\n/**\n * @hidden\n */\nfunction collapseAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniCollapsePush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return collapsePush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? collapseRTLOverlay(duration) : collapseOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniCollapseOverlay(duration, width, miniWidth);\n }\n}\n\n/**\n * @hidden\n */\nconst DRAWER_ITEM_INDEX = 'data-kendo-drawer-index';\n\n/**\n * @hidden\n */\nconst DRAWER_LINK_SELECTOR = '.k-drawer-link';\n/**\n * @hidden\n */\nconst ACTIVE_NESTED_LINK_SELECTOR = ':focus:not(.k-disabled) .k-drawer-link';\n/**\n * @hidden\n */\nconst nestedLink = (element, selector) => element.querySelector(selector);\n\n/**\n * @hidden\n */\nclass DrawerListSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nclass DrawerItemComponent {\n constructor(drawerService, element, renderer) {\n this.drawerService = drawerService;\n this.element = element;\n this.renderer = renderer;\n this.arrowUpIcon = chevronUpIcon;\n this.arrowDownIcon = chevronDownIcon;\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get selectedClass() {\n return this.drawerService.selectedIndices.indexOf(this.index) >= 0;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n ngAfterViewInit() {\n const elem = this.element.nativeElement;\n const link = nestedLink(elem, DRAWER_LINK_SELECTOR);\n if (link) {\n this.renderer.removeAttribute(link, 'tabindex');\n }\n }\n get iconClasses() {\n if (this.item.icon) {\n const stripIcon = this.item.icon.replace('k-i-', '');\n return `${stripIcon}`;\n }\n }\n get innerCssClasses() {\n if (this.item.iconClass && this.item.icon) {\n return `${this.item.iconClass}`;\n }\n }\n get customIconClasses() {\n if (!this.item.icon && this.item.iconClass) {\n return this.item.iconClass;\n }\n }\n get item() {\n return this.viewItem.item;\n }\n}\nDrawerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerItemComponent, deps: [{ token: DrawerService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nDrawerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerItemComponent, selector: \"[kendoDrawerItem]\", inputs: { viewItem: \"viewItem\", index: \"index\", itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\", disabled: \"disabled\", cssClass: \"cssClass\", cssStyle: \"cssStyle\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-current\": \"this.selectedClass\", \"class.k-selected\": \"this.selectedClass\", \"attr.aria-label\": \"this.label\" } }, ngImport: i0, template: `\n \n \n\n \n \n \n \n\n {{ item.text }}\n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDrawerItem]',\n template: `\n \n \n\n \n \n \n \n\n {{ item.text }}\n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: DrawerService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { viewItem: [{\n type: Input\n }], index: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], cssStyle: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], selectedClass: [{\n type: HostBinding,\n args: ['attr.aria-current']\n }, {\n type: HostBinding,\n args: ['class.k-selected']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }] } });\n\n/**\n * @hidden\n */\nclass DrawerListComponent {\n constructor(drawerService, renderer, ngZone, element) {\n this.drawerService = drawerService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.view = [];\n this.select = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n identifyItem(_index, viewItem) {\n return viewItem.item.id ?? viewItem.index;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', (e) => {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n const isArrowUpOrDown = e.keyCode === Keys.ArrowUp || e.keyCode === Keys.ArrowDown;\n if (isEnterOrSpace) {\n this.onEnterOrSpaceKeyDown(e);\n }\n else if (isArrowUpOrDown) {\n if (e.target.classList.contains('k-drawer-item')) {\n e.preventDefault();\n const keyName = e.keyCode === Keys.ArrowUp ? 'arrowUp' : 'arrowDown';\n this.drawerService.changeFocusedItem(this.items, keyName, this.renderer);\n }\n }\n }));\n });\n }\n clickHandler(e) {\n const viewItemIdx = this.getDrawerItemIndex(e.target);\n const viewItem = this.view[viewItemIdx];\n const filterItems = this.view.filter(items => !items.item.separator);\n const selectedItemIndex = filterItems.findIndex(item => item.index === viewItemIdx);\n if (!viewItem) {\n return;\n }\n if (viewItem.item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: viewItem.index,\n item: viewItem.item,\n originalEvent: e\n };\n this.ngZone.run(() => {\n const event = new DrawerListSelectEvent(args);\n this.select.emit(event);\n if (!event.isDefaultPrevented()) {\n this.drawerService.focusIndex = selectedItemIndex;\n this.drawerService.onSelect(viewItemIdx);\n this.drawerService.init();\n this.view = this.drawerService.view;\n }\n });\n }\n onEnterOrSpaceKeyDown(e) {\n this.clickHandler(e);\n const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);\n if (link) {\n link.click();\n }\n return false;\n }\n getDrawerItemIndex(target) {\n const item = closestItem(target, DRAWER_ITEM_INDEX, this.element.nativeElement);\n if (item) {\n return itemIndex(item, DRAWER_ITEM_INDEX);\n }\n }\n}\nDrawerListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerListComponent, deps: [{ token: DrawerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nDrawerListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerListComponent, selector: \"[kendoDrawerList]\", inputs: { itemTemplate: \"itemTemplate\", mini: \"mini\", expanded: \"expanded\", view: \"view\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"items\", predicate: DrawerItemComponent, descendants: true, read: ElementRef }], ngImport: i0, template: \"\\n \\n
  • \\n
  • \\n\\n
  • \\n  \\n
  • \\n
    \\n \", isInline: true, components: [{ type: DrawerItemComponent, selector: \"[kendoDrawerItem]\", inputs: [\"viewItem\", \"index\", \"itemTemplate\", \"mini\", \"expanded\", \"disabled\", \"cssClass\", \"cssStyle\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoDrawerList]',\n template: `\n \n
  • \n
  • \n\n
  • \n  \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: DrawerService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { itemTemplate: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], view: [{\n type: Input\n }], select: [{\n type: Output\n }], items: [{\n type: ViewChildren,\n args: [DrawerItemComponent, { read: ElementRef }]\n }] } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst DEFAULT_ANIMATION = { type: 'slide', duration: 200 };\n/**\n * Represents the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public expanded = false;\n *\n * public items: any[] = [\n * { text: 'Inbox', icon: 'k-i-inbox' },\n * { text: 'Notifications', icon: 'k-i-bell' },\n * { text: 'Date', icon: 'k-i-calendar' }\n * ];\n * }\n * ```\n */\nclass DrawerComponent {\n constructor(element, builder, localizationService, drawerService) {\n this.element = element;\n this.builder = builder;\n this.localizationService = localizationService;\n this.drawerService = drawerService;\n this.hostClasses = true;\n /**\n * Specifies the mode in which the Drawer will be displayed.\n *\n * The possible values are:\n * * (Default) `overlay`\n * * `push`\n */\n this.mode = 'overlay';\n /**\n * Specifies the position of the Drawer\n * ([see example]({% slug positioning_drawer %})).\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.position = 'start';\n /**\n * Enables the mini (compact) view of the Drawer which is displayed when the component is collapsed\n * ([see example]({% slug expandmodespositions_drawer %}#toc-mini-view)).\n */\n this.mini = false;\n /**\n * Specifies the state of the Drawer.\n */\n this.expanded = false;\n /**\n * Defines the width of the Drawer when it is expanded.\n * Defaults to `240`.\n */\n this.width = 240;\n /**\n * Defines the width of the Drawer when the mini view is enabled\n * and the component is collapsed. Defaults to `60`.\n */\n this.miniWidth = 50;\n /**\n * Specifies if the Drawer will be automatically collapsed when an item\n * or the overlay is clicked. Defaults to `true`.\n */\n this.autoCollapse = true;\n /**\n * The collection of items that will be rendered in the Drawer.\n */\n this.items = [];\n /**\n * Specifies the animation settings of the Drawer.\n * ([see example]({% slug interaction_drawer %}#toc-toggling-between-states)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * `false`\n * * `DrawerAnimation`\n * * (Default) `type?: 'slide'`\n * * `duration`—Accepts a number in milliseconds. Defaults to `300ms`.\n */\n this.animation = DEFAULT_ANIMATION;\n /**\n * Fires when the Drawer is expanded and its animation is complete.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the Drawer is collapsed and its animation is complete.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when a Drawer item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the `expanded` property of the component was updated.\n * Used to provide a two-way binding for the `expanded` property.\n */\n this.expandedChange = new EventEmitter();\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.drawerService.owner = this;\n }\n get startPositionClass() {\n return this.position === 'start';\n }\n get endPositionClass() {\n return this.position === 'end';\n }\n get overlayTransofrmStyles() {\n if (this.mode === 'push') {\n return;\n }\n if (this.expanded || this.minimized) {\n return `translateX(0px)`;\n }\n return `translateX(-100%)`;\n }\n get flexStyles() {\n if (this.mode === 'overlay') {\n return;\n }\n if (!this.expanded && !this.minimized) {\n return 0;\n }\n return this.drawerWidth;\n }\n /**\n * Defines a callback function which determines if an item should be expanded.\n */\n set isItemExpanded(fn) {\n if (isDevMode && isPresent(fn) && typeof fn !== 'function') {\n throw new Error(`isItemExpanded must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.drawerService.isItemExpanded = fn;\n }\n get isItemExpanded() {\n return this.drawerService.isItemExpanded;\n }\n ngOnChanges(changes) {\n if (changes && changes['items']) {\n this.drawerService.resetSelection();\n this.drawerService.init();\n this.viewItems = this.drawerService.view;\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get minimized() {\n return this.mini && !this.expanded;\n }\n /**\n * @hidden\n */\n get drawerWidth() {\n return this.minimized ? this.miniWidth : this.width;\n }\n /**\n * Toggles the visibility of the Drawer.\n *\n * @param expanded? - Boolean. Specifies if the Drawer will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n if (current === true) {\n this.setExpanded(true);\n }\n else if (current === false && !this.animation) {\n this.setExpanded(false);\n }\n if (this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => { this.onAnimationEnd(current); });\n this.animate(current);\n }\n else {\n this[current ? 'expand' : 'collapse'].emit();\n }\n }\n /**\n * @hidden\n */\n onSelect(e) {\n this.select.emit(Object.assign(e, { sender: this }));\n }\n onAnimationEnd(currentExpanded) {\n if (currentExpanded) {\n this.expand.emit();\n }\n else {\n this.setExpanded(false);\n this.collapse.emit();\n }\n }\n setExpanded(value) {\n this.expanded = value;\n this.expandedChange.emit(value);\n }\n animate(expanded) {\n const settings = {\n mode: this.mode,\n mini: this.mini,\n miniWidth: this.miniWidth,\n width: this.width,\n rtl: this.rtl,\n position: this.position,\n animation: (typeof this.animation !== 'boolean') ? this.animation : DEFAULT_ANIMATION\n };\n const animation = expanded ? expandAnimation(settings) : collapseAnimation(settings);\n const player = this.createPlayer(animation, this.element.nativeElement);\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n}\nDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.AnimationBuilder }, { token: i1.LocalizationService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });\nDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerComponent, selector: \"kendo-drawer\", inputs: { mode: \"mode\", position: \"position\", mini: \"mini\", expanded: \"expanded\", width: \"width\", miniWidth: \"miniWidth\", autoCollapse: \"autoCollapse\", items: \"items\", isItemExpanded: \"isItemExpanded\", animation: \"animation\" }, outputs: { expand: \"expand\", collapse: \"collapse\", select: \"select\", expandedChange: \"expandedChange\" }, host: { properties: { \"class.k-drawer\": \"this.hostClasses\", \"class.k-drawer-start\": \"this.startPositionClass\", \"class.k-drawer-end\": \"this.endPositionClass\", \"style.transform\": \"this.overlayTransofrmStyles\", \"style.flexBasis.px\": \"this.flexStyles\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ], queries: [{ propertyName: \"drawerTemplate\", first: true, predicate: DrawerTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: DrawerFooterTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: DrawerHeaderTemplateDirective, descendants: true }, { propertyName: \"itemTemplate\", first: true, predicate: DrawerItemTemplateDirective, descendants: true }], exportAs: [\"kendoDrawer\"], usesOnChanges: true, ngImport: i0, template: `\n
    \n \n \n \n\n
      \n
    \n\n \n \n
    \n\n \n \n
    \n\n
    \n `, isInline: true, components: [{ type: DrawerListComponent, selector: \"[kendoDrawerList]\", inputs: [\"itemTemplate\", \"mini\", \"expanded\", \"view\"], outputs: [\"select\"] }, { type: i1$1.WatermarkOverlayComponent, selector: \"div[kendoWatermarkOverlay]\" }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoDrawer',\n providers: [\n LocalizationService,\n DrawerService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }\n ],\n selector: 'kendo-drawer',\n template: `\n
    \n \n \n \n\n
      \n
    \n\n \n \n
    \n\n \n \n
    \n\n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$2.AnimationBuilder }, { type: i1.LocalizationService }, { type: DrawerService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-drawer']\n }], startPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-start']\n }], endPositionClass: [{\n type: HostBinding,\n args: ['class.k-drawer-end']\n }], overlayTransofrmStyles: [{\n type: HostBinding,\n args: ['style.transform']\n }], flexStyles: [{\n type: HostBinding,\n args: ['style.flexBasis.px']\n }], mode: [{\n type: Input\n }], position: [{\n type: Input\n }], mini: [{\n type: Input\n }], expanded: [{\n type: Input\n }], width: [{\n type: Input\n }], miniWidth: [{\n type: Input\n }], autoCollapse: [{\n type: Input\n }], items: [{\n type: Input\n }], isItemExpanded: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], animation: [{\n type: Input\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], select: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], drawerTemplate: [{\n type: ContentChild,\n args: [DrawerTemplateDirective]\n }], footerTemplate: [{\n type: ContentChild,\n args: [DrawerFooterTemplateDirective]\n }], headerTemplate: [{\n type: ContentChild,\n args: [DrawerHeaderTemplateDirective]\n }], itemTemplate: [{\n type: ContentChild,\n args: [DrawerItemTemplateDirective]\n }] } });\n\n/**\n * Serves as a container for the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}) and its content.\n */\nclass DrawerContainerComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.rtl = false;\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get hostClass() {\n return true;\n }\n get overlayClass() {\n return this.drawer.mode === 'overlay';\n }\n get miniClass() {\n return this.drawer.mini && !this.drawer.expanded;\n }\n get pushClass() {\n return this.drawer.mode === 'push';\n }\n get isExpandedClass() {\n return this.drawer.expanded;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get overlay() {\n return isPresent(this.drawer) &&\n this.drawer.expanded &&\n this.drawer.mode === 'overlay';\n }\n /**\n * @hidden\n */\n closeDrawer() {\n if (this.overlay && this.drawer.autoCollapse) {\n this.drawer.toggle(false);\n }\n }\n}\nDrawerContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerContainerComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nDrawerContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerContainerComponent, selector: \"kendo-drawer-container\", host: { properties: { \"class.k-drawer-container\": \"this.hostClass\", \"class.k-drawer-overlay\": \"this.overlayClass\", \"class.k-drawer-mini\": \"this.miniClass\", \"class.k-drawer-push\": \"this.pushClass\", \"class.k-drawer-expanded\": \"this.isExpandedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ], queries: [{ propertyName: \"drawer\", first: true, predicate: DrawerComponent, descendants: true }], ngImport: i0, template: `\n
    \n \n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-container',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }\n ],\n template: `\n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-drawer-container']\n }], overlayClass: [{\n type: HostBinding,\n args: ['class.k-drawer-overlay']\n }], miniClass: [{\n type: HostBinding,\n args: ['class.k-drawer-mini']\n }], pushClass: [{\n type: HostBinding,\n args: ['class.k-drawer-push']\n }], isExpandedClass: [{\n type: HostBinding,\n args: ['class.k-drawer-expanded']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], drawer: [{\n type: ContentChild,\n args: [DrawerComponent]\n }] } });\n\n/**\n * Represents the content of the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n */\nclass DrawerContentComponent {\n constructor() {\n this.hostClasses = true;\n }\n}\nDrawerContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDrawerContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: DrawerContentComponent, selector: \"kendo-drawer-content\", host: { properties: { \"class.k-drawer-content\": \"this.hostClasses\" } }, ngImport: i0, template: `\n \n `, isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-drawer-content',\n template: `\n \n `,\n encapsulation: ViewEncapsulation.None\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-drawer-content']\n }] } });\n\n/**\n * Arguments for the `select` event of the Drawer.\n */\nclass DrawerSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Represents a template that defines the content of the whole Step.\n * To define the template, nest an `` tag\n * with the `kendoStepperStepTemplate` directive inside the `` tag.\n */\nclass StepperStepTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperStepTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperStepTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperStepTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperStepTemplateDirective, selector: \"[kendoStepperStepTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperStepTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperStepTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Step label.\n * To define the template, nest an `` tag\n * with the `kendoStepperLabelTemplate` directive inside the `` tag.\n */\nclass StepperLabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperLabelTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperLabelTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperLabelTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperLabelTemplateDirective, selector: \"[kendoStepperLabelTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperLabelTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperLabelTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Step indicator.\n * To define the template, nest an `` tag\n * with the `kendoStepperIndicatorTemplate` directive inside the `` tag.\n */\nclass StepperIndicatorTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nStepperIndicatorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperIndicatorTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nStepperIndicatorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperIndicatorTemplateDirective, selector: \"[kendoStepperIndicatorTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperIndicatorTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoStepperIndicatorTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\nconst DEFAULT_CURRENT_STEP = 0;\nconst handlers = {};\nhandlers[Keys.ArrowLeft] = 'left';\nhandlers[Keys.ArrowRight] = 'right';\nhandlers[Keys.ArrowUp] = 'up';\nhandlers[Keys.ArrowDown] = 'down';\nhandlers[Keys.Home] = 'home';\nhandlers[Keys.End] = 'end';\nhandlers[Keys.Enter] = 'enter';\nhandlers[Keys.Space] = 'enter';\nconst handlersRTL = Object.assign({}, handlers);\nhandlersRTL[Keys.ArrowLeft] = 'right';\nhandlersRTL[Keys.ArrowRight] = 'left';\n// error NG3003: One or more import cycles would need to be created to compile this component,\n// which is not supported by the current compiler configuration\n/**\n * @hidden\n */\nclass StepperActivateEvent$1 extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n/**\n * @hidden\n */\nclass StepperService {\n constructor(localization, ngZone, changeDetector) {\n this.localization = localization;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.currentStep = DEFAULT_CURRENT_STEP;\n this.triggerValidation = new EventEmitter();\n this.focusedStepChange = new EventEmitter();\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n emit(event, eventArgs) {\n const stepper = this.owner;\n if (hasObservers(stepper[event])) {\n stepper[event].emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n onActivate(currentIdx, originalEvent) {\n const eventArgs = new StepperActivateEvent$1({\n index: currentIdx,\n step: this.owner.steps[currentIdx],\n originalEvent: originalEvent,\n sender: this.owner\n });\n this.ngZone.run(() => {\n if (!this.emit('activate', eventArgs)) {\n this.currentStep = currentIdx;\n this.owner['currentStepChange'].emit(currentIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n validateSteps() {\n this.triggerValidation.emit();\n }\n keydown(e) {\n const current = this.focusedStep || this.currentStep;\n const handler = this.handlers[e.keyCode];\n if (!isPresent(current)) {\n return;\n }\n if (handler) {\n e.preventDefault();\n this[handler](e);\n }\n }\n left() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n right() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n up() {\n if (this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n down() {\n if (this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n home() {\n this.focusedStep = 0;\n this.focusedStepChange.emit();\n }\n end() {\n this.focusedStep = this.owner.steps.length - 1;\n this.focusedStepChange.emit();\n }\n enter(event) {\n if (this.focusedStep === this.currentStep) {\n return;\n }\n if (this.isStepDisabled(this.focusedStep)) {\n return;\n }\n if (this.owner.linear && this.isPrevOrNextStep(this.focusedStep) === false) {\n return;\n }\n this.onActivate(this.focusedStep, event);\n }\n focus(focusedIdx) {\n this.focusedStep = focusedIdx;\n }\n focusNextStep() {\n if (this.focusedStep < this.owner.steps.length) {\n this.focusedStep += 1;\n this.focusedStepChange.emit();\n }\n }\n focusPrevStep() {\n if (this.focusedStep > 0) {\n this.focusedStep -= 1;\n this.focusedStepChange.emit();\n }\n }\n isStepDisabled(index) {\n return this.owner.steps[index].disabled;\n }\n isPrevOrNextStep(index) {\n return index === this.currentStep + 1 || index === this.currentStep - 1;\n }\n get isHorizontal() {\n return this.owner.orientation === 'horizontal';\n }\n}\nStepperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });\nStepperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @hidden\n */\nconst STEPPER_STEP_INDEX = 'data-kendo-stepper-index';\n\n/**\n * @hidden\n */\nclass StepperStepComponent {\n constructor(service, localization, ngZone) {\n this.service = service;\n this.localization = localization;\n this.ngZone = ngZone;\n this.isStepValid = undefined;\n this.shouldCheckValidity = undefined;\n this.checkCircleIcon = checkCircleIcon;\n this.exclamationCircleIcon = exclamationCircleIcon;\n validatePackage(packageMetadata);\n this.subs = this.service.focusedStepChange.subscribe(() => {\n this.onFocusedStepChange();\n });\n this.subs.add(this.service.triggerValidation.subscribe(() => {\n this.handleValidityChecks();\n }));\n }\n get errorStepClass() {\n if (isPresent(this.isStepValid)) {\n return !this.isStepValid;\n }\n return false;\n }\n get successStepClass() {\n if (isPresent(this.isStepValid)) {\n return this.isStepValid;\n }\n return false;\n }\n ngOnInit() {\n this.handleValidityChecks();\n }\n ngOnChanges(changes) {\n if (changes['current'] && !changes['current'].firstChange) {\n this.handleValidityChecks();\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n onFocusedStepChange() {\n this.ngZone.runOutsideAngular(() => {\n if (this.index === this.service.focusedStep) {\n this.stepLink.nativeElement.focus();\n }\n });\n }\n onFocus() {\n this.service.focus(this.index);\n }\n get tabIndexAttr() {\n const active = this.service.focusedStep || this.service.currentStep;\n return this.index === active ? 0 : -1;\n }\n get indicatorIconClass() {\n if (this.step.icon && !this.step.iconClass) {\n return `${this.step.icon}`;\n }\n if (!this.step.icon && !this.step.iconClass && this.shouldCheckValidity) {\n return this.validationIconClasses;\n }\n }\n get customIndicatorIconClass() {\n if (this.step.iconClass) {\n return `${this.step.iconClass}`;\n }\n const renderCustomValidationIcon = !this.step.icon && !this.step.iconClass && this.shouldCheckValidity;\n if (renderCustomValidationIcon) {\n return this.customValidationIconClasses;\n }\n }\n get SVGIndicatorIcon() {\n if (this.step.svgIcon) {\n return this.step.svgIcon;\n }\n if (!this.step.svgIcon && this.shouldCheckValidity) {\n return this.validationSVGIcon;\n }\n }\n get validationIconClasses() {\n if (this.isStepValid) {\n return !this.successIcon ? 'check-circle' : '';\n }\n return !this.errorIcon ? 'exclamation-circle' : '';\n }\n get customValidationIconClasses() {\n if (this.isStepValid) {\n return this.successIcon ? this.successIcon : '';\n }\n return this.errorIcon ? this.errorIcon : '';\n }\n get validationSVGIcon() {\n if (this.isStepValid) {\n return this.successSVGIcon ? this.successSVGIcon : this.checkCircleIcon;\n }\n return this.errorSVGIcon ? this.errorSVGIcon : this.exclamationCircleIcon;\n }\n get showIndicatorIcon() {\n if (this.shouldCheckValidity) {\n return true;\n }\n if (this.step.icon || this.step.iconClass || this.step.svgIcon) {\n return true;\n }\n return false;\n }\n get showLabelIcon() {\n if (this.shouldCheckValidity) {\n if (this.type === 'label') {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n }\n return false;\n }\n get showLabelText() {\n return this.type === 'label' || this.type === 'full';\n }\n get indicatorText() {\n const text = this.step.text;\n return text ? text : this.index + 1;\n }\n updateStepValidity() {\n if (typeof this.step.isValid === 'boolean') {\n return this.step.isValid;\n }\n if (typeof this.step.isValid === 'function') {\n return this.step.isValid(this.index);\n }\n return undefined;\n }\n get showIndicator() {\n return this.type === 'indicator' || this.type === 'full';\n }\n get showLabel() {\n if (this.type === 'label' || this.type === 'full') {\n return true;\n }\n return this.step.optional;\n }\n get optionalText() {\n return this.localization.get('optional');\n }\n get transitionDuration() {\n return this.service.owner.animationDuration;\n }\n _shouldCheckValidity() {\n if (isPresent(this.step.validate)) {\n if (typeof this.step.validate === 'boolean') {\n return this.step.validate;\n }\n if (typeof this.step.validate === 'function') {\n return this.step.validate(this.index);\n }\n }\n return isPresent(this.step.isValid) && this.index < this.current;\n }\n handleValidityChecks() {\n this.isStepValid = undefined;\n this.shouldCheckValidity = this._shouldCheckValidity();\n if (this.shouldCheckValidity) {\n this.isStepValid = this.updateStepValidity();\n }\n }\n}\nStepperStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperStepComponent, deps: [{ token: StepperService }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nStepperStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperStepComponent, selector: \"[kendoStepperStep]\", inputs: { step: \"step\", index: \"index\", current: \"current\", type: \"type\", successIcon: \"successIcon\", successSVGIcon: \"successSVGIcon\", errorIcon: \"errorIcon\", errorSVGIcon: \"errorSVGIcon\", svgIcon: \"svgIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, host: { properties: { \"class.k-step-error\": \"this.errorStepClass\", \"class.k-step-success\": \"this.successStepClass\" } }, viewQueries: [{ propertyName: \"stepLink\", first: true, predicate: [\"stepLink\"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n\n \n \n\n \n \n \n\n \n {{ step.label }}\n \n \n \n \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperStepComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoStepperStep]',\n template: `\n \n \n \n\n \n \n\n \n \n \n\n \n {{ step.label }}\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: StepperService }, { type: i1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { step: [{\n type: Input\n }], index: [{\n type: Input\n }], current: [{\n type: Input\n }], type: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], successSVGIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], errorSVGIcon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }], stepLink: [{\n type: ViewChild,\n args: ['stepLink', { static: true }]\n }], errorStepClass: [{\n type: HostBinding,\n args: ['class.k-step-error']\n }], successStepClass: [{\n type: HostBinding,\n args: ['class.k-step-success']\n }] } });\n\n/**\n * @hidden\n */\nclass StepperListComponent {\n constructor(renderer, ngZone, service, element) {\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.service = service;\n this.element = element;\n this.listKeydown = new EventEmitter();\n this.listClick = new EventEmitter();\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.domSubs) {\n this.domSubs();\n }\n }\n get maxStepWidth() {\n return this.maxStepDimension('width');\n }\n get maxStepHeight() {\n return this.maxStepDimension('height');\n }\n get focusedStep() {\n return this.service.focusedStep;\n }\n maxStepDimension(dimension) {\n if (dimension === 'width' && this.orientation === 'vertical') {\n return null;\n }\n if (dimension === 'height' && this.orientation === 'horizontal') {\n return null;\n }\n return 100 / this.steps.length;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n const clickSubscription = this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this));\n const keydownSubscription = this.renderer.listen(nativeElement, 'keydown', (e) => {\n if (hasClass(e.target, 'k-step-link')) {\n this.listKeydown.emit(e);\n }\n });\n this.domSubs = () => {\n clickSubscription();\n keydownSubscription();\n };\n });\n }\n clickHandler(e) {\n e.preventDefault();\n const stepIdx = this.getStepIndex(e.target);\n const step = this.steps[stepIdx];\n if (!step || step.disabled) {\n return;\n }\n const eventArgs = {\n stepIdx,\n currentStep: this.currentStep,\n linear: this.linear,\n originalEvent: e\n };\n this.listClick.emit(eventArgs);\n }\n getStepIndex(target) {\n const step = closestItem(target, STEPPER_STEP_INDEX, this.element.nativeElement);\n if (step) {\n return itemIndex(step, STEPPER_STEP_INDEX);\n }\n }\n}\nStepperListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: StepperService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nStepperListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperListComponent, selector: \"[kendoStepperList]\", inputs: { linear: \"linear\", stepType: \"stepType\", orientation: \"orientation\", currentStep: \"currentStep\", steps: \"steps\", successIcon: \"successIcon\", successSVGIcon: \"successSVGIcon\", errorIcon: \"errorIcon\", errorSVGIcon: \"errorSVGIcon\", svgIcon: \"svgIcon\", indicatorTemplate: \"indicatorTemplate\", labelTemplate: \"labelTemplate\", stepTemplate: \"stepTemplate\" }, outputs: { listKeydown: \"listKeydown\", listClick: \"listClick\" }, ngImport: i0, template: \"\\n \\n
  • \\n
  • \\n
    \\n \", isInline: true, components: [{ type: StepperStepComponent, selector: \"[kendoStepperStep]\", inputs: [\"step\", \"index\", \"current\", \"type\", \"successIcon\", \"successSVGIcon\", \"errorIcon\", \"errorSVGIcon\", \"svgIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoStepperList]',\n template: `\n \n
  • \n
  • \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: StepperService }, { type: i0.ElementRef }]; }, propDecorators: { linear: [{\n type: Input\n }], stepType: [{\n type: Input\n }], orientation: [{\n type: Input\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], successSVGIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], errorSVGIcon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], indicatorTemplate: [{\n type: Input\n }], labelTemplate: [{\n type: Input\n }], stepTemplate: [{\n type: Input\n }], listKeydown: [{\n type: Output\n }], listClick: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass StepperMessages extends ComponentMessages {\n}\nStepperMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nStepperMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperMessages, selector: \"kendo-stepper-messages-base\", inputs: { optional: \"optional\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-stepper-messages-base'\n }]\n }], propDecorators: { optional: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedStepperMessagesDirective extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedStepperMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedStepperMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedStepperMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedStepperMessagesDirective, selector: \"\\n [kendoStepperLocalizedMessages]\\n \", providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedStepperMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective)\n }\n ],\n selector: `\n [kendoStepperLocalizedMessages]\n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_ANIMATION_DURATION = 400;\n/**\n * Represents the [Kendo UI Stepper component for Angular]({% slug overview_stepper %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public steps: Array = [\n * { label: 'Step One' }, { label: 'Step Two' }, { label: 'Step Three' }\n * ];\n * }\n * ```\n */\nclass StepperComponent {\n constructor(renderer, elem, localization, stepperService) {\n this.renderer = renderer;\n this.elem = elem;\n this.localization = localization;\n this.stepperService = stepperService;\n this.hostClasses = true;\n this.ariaRole = 'navigation';\n this.displayStyle = 'grid';\n /**\n * Specifies the type of the steps in the Stepper.\n *\n * The possible values are:\n * * (Default) `indicator`\n * * `label`\n * * `full`\n */\n this.stepType = 'indicator';\n /**\n * Specifies the linear flow of the Stepper.\n *\n * @default true\n */\n this.linear = true;\n /**\n * Specifies the orientation of the Stepper\n * ([see example]({% slug orientation_stepper %})).\n *\n * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the duration of the progress indicator animation in milliseconds. Defaults to `400ms`.\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when a step is about to be activated. This event is preventable.\n */\n this.activate = new EventEmitter();\n /**\n * Fires when the `currentStep` property of the component was updated.\n * Used to provide a two-way binding for the `currentStep` property.\n */\n this.currentStepChange = new EventEmitter();\n this._steps = [];\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.stepperService.owner = this;\n }\n get linearClass() {\n return this.linear;\n }\n /**\n * The index of the current step.\n */\n set currentStep(value) {\n this.stepperService.currentStep = value;\n }\n get currentStep() {\n return this.stepperService.currentStep;\n }\n /**\n * The collection of steps that will be rendered in the Stepper.\n * ([see example]({% slug step_appearance_stepper %}))\n */\n set steps(steps) {\n if (isPresent(steps) && steps.length > 0) {\n this._steps = steps;\n }\n }\n get steps() {\n return this._steps;\n }\n /**\n * Defines an SVG icon to be rendered inside the step indicator instead of the default numeric or text content.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n ngOnInit() {\n this.applyHostStyling();\n }\n ngOnChanges(changes) {\n if (changes['steps'] && !changes['steps'].firstChange) {\n this.applyHostStyling();\n }\n if (changes['orientation']) {\n this.resetHostStyling();\n this.applyHostStyling();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * Manually triggers the validity check configured by the [isValid]({% slug api_layout_stepperstep %}#toc-isvalid) property of the steps ([see example]({% slug step_validation_stepper %}#toc-triggering-the-validation)).\n *\n * Steps that have their [validate]({% slug api_layout_stepperstep %}#toc-validate) property set to `false`, will not be validated.\n */\n validateSteps() {\n this.stepperService.validateSteps();\n }\n applyHostStyling() {\n const stepFramesStyle = this.orientation === 'horizontal' ? 'grid-template-columns' : 'grid-template-rows';\n const stepFramesValue = `repeat(${this.steps.length * 2}, 1fr)`;\n this.renderer.setStyle(this.elem.nativeElement, stepFramesStyle, stepFramesValue);\n }\n resetHostStyling() {\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-columns');\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-rows');\n }\n /**\n * @hidden\n */\n get progressAnimation() {\n return { duration: this.animationDuration };\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'number') {\n return this.animation;\n }\n if (typeof this.animation === 'boolean' && this.animation) {\n return DEFAULT_ANIMATION_DURATION;\n }\n return 0;\n }\n /**\n * @hidden\n */\n get stepsListStyling() {\n if (this.orientation === 'horizontal') {\n return { 'grid-column-start': 1, 'grid-column-end': -1 };\n }\n return { 'grid-row-start': 1, 'grid-row-end': -1 };\n }\n /**\n * @hidden\n */\n get progressBarStyling() {\n if (this.orientation === 'horizontal') {\n return {\n 'grid-column-start': 2,\n 'grid-column-end': this.steps.length * 2\n };\n }\n return {\n 'grid-row-start': 2,\n 'grid-row-end': this.steps.length * 2\n };\n }\n /**\n * @hidden\n */\n onListKeydown(e) {\n this.stepperService.keydown(e);\n }\n /**\n * @hidden\n */\n onListClick(e) {\n if (e.stepIdx === e.currentStep) {\n this.stepperService.focus(e.stepIdx);\n return;\n }\n if (e.linear && this.stepperService.isPrevOrNextStep(e.stepIdx) === false) {\n return;\n }\n this.stepperService.onActivate(e.stepIdx, e.originalEvent);\n }\n /**\n * @hidden\n */\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n}\nStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: StepperService }], target: i0.ɵɵFactoryTarget.Component });\nStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperComponent, selector: \"kendo-stepper\", inputs: { stepType: \"stepType\", linear: \"linear\", orientation: \"orientation\", currentStep: \"currentStep\", steps: \"steps\", svgIcon: \"svgIcon\", successSVGIcon: \"successSVGIcon\", errorSVGIcon: \"errorSVGIcon\", successIcon: \"successIcon\", errorIcon: \"errorIcon\", animation: \"animation\" }, outputs: { activate: \"activate\", currentStepChange: \"currentStepChange\" }, host: { properties: { \"class.k-stepper\": \"this.hostClasses\", \"class.k-stepper-linear\": \"this.linearClass\", \"attr.role\": \"this.ariaRole\", \"attr.dir\": \"this.direction\", \"style.display\": \"this.displayStyle\" } }, providers: [\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ], queries: [{ propertyName: \"stepTemplate\", first: true, predicate: StepperStepTemplateDirective, descendants: true }, { propertyName: \"labelTemplate\", first: true, predicate: StepperLabelTemplateDirective, descendants: true }, { propertyName: \"indicatorTemplate\", first: true, predicate: StepperIndicatorTemplateDirective, descendants: true }], exportAs: [\"kendoStepper\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n
      \n
    \n\n \n \n `, isInline: true, components: [{ type: StepperListComponent, selector: \"[kendoStepperList]\", inputs: [\"linear\", \"stepType\", \"orientation\", \"currentStep\", \"steps\", \"successIcon\", \"successSVGIcon\", \"errorIcon\", \"errorSVGIcon\", \"svgIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\"], outputs: [\"listKeydown\", \"listClick\"] }, { type: i4.ProgressBarComponent, selector: \"kendo-progressbar\", inputs: [\"label\", \"progressCssStyle\", \"progressCssClass\", \"emptyCssStyle\", \"emptyCssClass\", \"animation\"], outputs: [\"animationEnd\"], exportAs: [\"kendoProgressBar\"] }], directives: [{ type: LocalizedStepperMessagesDirective, selector: \"\\n [kendoStepperLocalizedMessages]\\n \" }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoStepper',\n providers: [\n LocalizationService,\n StepperService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }\n ],\n selector: 'kendo-stepper',\n template: `\n \n \n
      \n
    \n\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: StepperService }]; }, propDecorators: { hostClasses: [{\n type: HostBinding,\n args: ['class.k-stepper']\n }], linearClass: [{\n type: HostBinding,\n args: ['class.k-stepper-linear']\n }], ariaRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], stepType: [{\n type: Input\n }], linear: [{\n type: Input\n }], orientation: [{\n type: Input\n }], currentStep: [{\n type: Input\n }], steps: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], successSVGIcon: [{\n type: Input\n }], errorSVGIcon: [{\n type: Input\n }], successIcon: [{\n type: Input\n }], errorIcon: [{\n type: Input\n }], animation: [{\n type: Input\n }], activate: [{\n type: Output\n }], currentStepChange: [{\n type: Output\n }], stepTemplate: [{\n type: ContentChild,\n args: [StepperStepTemplateDirective, { static: false }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [StepperLabelTemplateDirective, { static: false }]\n }], indicatorTemplate: [{\n type: ContentChild,\n args: [StepperIndicatorTemplateDirective, { static: false }]\n }] } });\n\n/**\n * Arguments for the `activate` event of the Stepper.\n */\nclass StepperActivateEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass StepperCustomMessagesComponent extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nStepperCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStepperCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StepperCustomMessagesComponent, selector: \"kendo-stepper-messages\", providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent)\n }\n ],\n selector: 'kendo-stepper-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * @hidden\n */\nclass Messages extends ComponentMessages {\n}\nMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: Messages, selector: \"kendoAvatarMessages\", inputs: { avatarAlt: \"avatarAlt\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: Messages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendoAvatarMessages'\n }]\n }], propDecorators: { avatarAlt: [{\n type: Input\n }] } });\n\n// eslint-disable no-forward-ref\n/**\n * @hidden\n */\nclass LocalizedAvatarMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedAvatarMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedAvatarMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedAvatarMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedAvatarMessagesDirective, selector: \"[kendoAvatarLocalizedMessages]\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedAvatarMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedAvatarMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => LocalizedAvatarMessagesDirective)\n }\n ],\n selector: '[kendoAvatarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Displays images, icons or initials representing people or other entities.\n */\nclass AvatarComponent {\n constructor(localization, renderer, element) {\n this.localization = localization;\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets a border to the avatar.\n */\n this.border = false;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._fillMode = DEFAULT_FILL_MODE;\n this._rounded = DEFAULT_ROUNDED;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get flexBasis() {\n return this.width;\n }\n /**\n * Sets the shape for the avatar.\n * @hidden\n */\n set shape(shape) {\n this.rounded = mapShapeToRounded(shape);\n }\n /**\n * Specifies the size of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (size !== this._size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses('size', newSize);\n this._size = newSize;\n }\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the rounded styling of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-rounded-corners)).\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (Default)\n * * `none`\n */\n set rounded(rounded) {\n if (rounded !== this._rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses('rounded', newRounded);\n this._rounded = newRounded;\n }\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies the theme color of the avatar.\n * The theme color will be applied as background and border color, while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base`— Applies the base coloring value.\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n * * `none`— Removes the styling associated with the theme color.\n */\n set themeColor(themeColor) {\n if (themeColor !== this._themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this._themeColor = newThemeColor;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (fillMode !== this.fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this._fillMode = newFillMode;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n * Deprecated, left for backward compatibility.\n *\n * @hidden\n */\n set fill(fillMode) {\n this.fillMode = fillMode;\n }\n /**\n * @hidden\n */\n get avatarWidth() {\n return this.width;\n }\n /**\n * @hidden\n */\n get avatarHeight() {\n return this.height;\n }\n /**\n * Defines an SVGIcon to be rendered.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n if (isDevMode() && icon && this.icon && this.iconClass) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n ngOnInit() {\n this.verifyProperties();\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(input, this[input]);\n });\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n /**\n * @hidden\n */\n get customAvatar() {\n return !(this.imageSrc || this.initials || this.icon || this.iconClass);\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n const inputs = [this.icon || this.iconClass, this.imageSrc, this.initials];\n const inputsLength = inputs.filter((value) => value).length;\n if (inputsLength > 1) {\n throw new Error(`\n Invalid property configuration given.\n The kendo-avatar component can accept only one of:\n icon, imageSrc or initials properties.\n `);\n }\n }\n handleClasses(styleType, value) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('avatar', styleType, this[styleType], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleFillModeAndThemeColorClasses(fill, themeColor) {\n const wrapperElement = this.element.nativeElement;\n // remove existing fill and theme color classes\n const currentClasses = Array.from(wrapperElement.classList);\n const classesToRemove = currentClasses.filter(cl => {\n return cl.startsWith('k-avatar-solid') || cl.startsWith('k-avatar-outline');\n });\n classesToRemove.forEach((cl => this.renderer.removeClass(wrapperElement, cl)));\n // add fill if needed\n if (fill !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}`);\n }\n // add theme color class if fill and theme color\n if (fill !== 'none' && themeColor !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}-${themeColor}`);\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n}\nAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: AvatarComponent, selector: \"kendo-avatar\", inputs: { shape: \"shape\", size: \"size\", rounded: \"rounded\", themeColor: \"themeColor\", fillMode: \"fillMode\", fill: \"fill\", border: \"border\", iconClass: \"iconClass\", width: \"width\", height: \"height\", cssStyle: \"cssStyle\", initials: \"initials\", icon: \"icon\", imageSrc: \"imageSrc\", svgIcon: \"svgIcon\" }, host: { properties: { \"class.k-avatar\": \"this.hostClass\", \"class.k-avatar-bordered\": \"this.borderClass\", \"style.flexBasis\": \"this.flexBasis\", \"style.width\": \"this.avatarWidth\", \"style.height\": \"this.avatarHeight\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.avatar'\n }\n ], ngImport: i0, template: `\n \n \n\n \n\n \n \n \n \n \n\n \n {{ initials.substring(0, 2) }}\n \n\n \n \n \n \n \n \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: LocalizedAvatarMessagesDirective, selector: \"[kendoAvatarLocalizedMessages]\" }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.avatar'\n }\n ],\n selector: 'kendo-avatar',\n template: `\n \n \n\n \n\n \n \n \n \n \n\n \n {{ initials.substring(0, 2) }}\n \n\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-avatar']\n }], borderClass: [{\n type: HostBinding,\n args: ['class.k-avatar-bordered']\n }], flexBasis: [{\n type: HostBinding,\n args: ['style.flexBasis']\n }], shape: [{\n type: Input\n }], size: [{\n type: Input\n }], rounded: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], fill: [{\n type: Input\n }], border: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], width: [{\n type: Input\n }], avatarWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], height: [{\n type: Input\n }], avatarHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], cssStyle: [{\n type: Input\n }], initials: [{\n type: Input\n }], icon: [{\n type: Input\n }], imageSrc: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }] } });\n\n// eslint-disable no-forward-ref\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nclass AvatarCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nAvatarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAvatarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: AvatarCustomMessagesComponent, selector: \"kendo-avatar-messages\", providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => AvatarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: Messages,\n useExisting: forwardRef(() => AvatarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-avatar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/**\n * Represents the [Kendo UI Card component for Angular]({% slug overview_card %})\n */\nclass CardComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the layout of the Card content.\n *\n * The possible values are:\n * * (Default) `vertical`\n * * `horizontal`\n *\n */\n this.orientation = 'vertical';\n /**\n * Defines the width of the Card.\n * Defaults to `285px`.\n */\n this.width = '285px';\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get widthStyle() {\n return this.width;\n }\n get vertical() {\n return this.orientation === 'vertical';\n }\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n}\nCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardComponent, selector: \"kendo-card\", inputs: { orientation: \"orientation\", width: \"width\" }, host: { properties: { \"class.k-card\": \"this.hostClass\", \"style.width\": \"this.widthStyle\", \"class.k-card-vertical\": \"this.vertical\", \"class.k-card-horizontal\": \"this.horizontal\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card']\n }], widthStyle: [{\n type: HostBinding,\n args: ['style.width']\n }], vertical: [{\n type: HostBinding,\n args: ['class.k-card-vertical']\n }], horizontal: [{\n type: HostBinding,\n args: ['class.k-card-horizontal']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], orientation: [{\n type: Input\n }], width: [{\n type: Input\n }] } });\n\n/**\n * Specifies the content in the Card header.\n */\nclass CardHeaderComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardHeaderComponent, selector: \"kendo-card-header\", host: { properties: { \"class.k-card-header\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-header',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-header']\n }] } });\n\n/**\n * Specifies the content in the Card body.\n */\nclass CardBodyComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardBodyComponent, selector: \"kendo-card-body\", host: { properties: { \"class.k-card-body\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-body',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-body']\n }] } });\n\n/**\n * Specifies the content in the Card footer.\n */\nclass CardFooterComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nCardFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardFooterComponent, selector: \"kendo-card-footer\", host: { properties: { \"class.k-card-footer\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardFooterComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-footer',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-footer']\n }] } });\n\n/**\n * Specifies the action buttons of the Card.\n * * ([see example]({% slug actions_card %})).\n */\nclass CardActionsComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the layout of the Card action buttons.\n *\n * * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n *\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the layout of the Card action buttons.\n *\n * The possible values are:\n * * (Default) `start`\n * * `center`\n * * `end`\n * * `stretched`\n *\n */\n this.layout = 'start';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n }\n get stretchedClass() {\n return this.layout === 'stretched';\n }\n get startClass() {\n return this.layout === 'start';\n }\n get endClass() {\n return this.layout === 'end';\n }\n get centerClass() {\n return this.layout === 'center';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n /**\n * Allows the declarative specification of the Card actions.\n */\n set actions(value) {\n if (Array.isArray(value)) {\n this.actionsArray = value;\n }\n else if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n }\n /**\n * @hidden\n */\n onClick(action) {\n this.action.emit(action);\n }\n}\nCardActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCardActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardActionsComponent, selector: \"kendo-card-actions\", inputs: { orientation: \"orientation\", layout: \"layout\", actions: \"actions\" }, outputs: { action: \"action\" }, host: { properties: { \"class.k-actions\": \"this.hostClass\", \"class.k-card-actions\": \"this.hostClass\", \"class.k-actions-stretched\": \"this.stretchedClass\", \"class.k-actions-start\": \"this.startClass\", \"class.k-actions-end\": \"this.endClass\", \"class.k-actions-center\": \"this.centerClass\", \"class.k-actions-vertical\": \"this.verticalClass\", \"class.k-actions-horizontal\": \"this.horizontalClass\" } }, ngImport: i0, template: `\n \n\n \n \n {{ action.text }}\n \n \n\n \n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardActionsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-card-actions',\n template: `\n \n\n \n \n {{ action.text }}\n \n \n\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-actions']\n }, {\n type: HostBinding,\n args: ['class.k-card-actions']\n }], stretchedClass: [{\n type: HostBinding,\n args: ['class.k-actions-stretched']\n }], startClass: [{\n type: HostBinding,\n args: ['class.k-actions-start']\n }], endClass: [{\n type: HostBinding,\n args: ['class.k-actions-end']\n }], centerClass: [{\n type: HostBinding,\n args: ['class.k-actions-center']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-actions-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-actions-horizontal']\n }], orientation: [{\n type: Input\n }], layout: [{\n type: Input\n }], actions: [{\n type: Input\n }], action: [{\n type: Output\n }] } });\n\n/**\n * Specifies a separator in the content of the Card.\n */\nclass CardSeparatorDirective {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the orientation of the Card separator.\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n}\nCardSeparatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardSeparatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardSeparatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardSeparatorDirective, selector: \"[kendoCardSeparator]\", inputs: { color: \"color\", orientation: \"orientation\" }, host: { properties: { \"class.k-card-separator\": \"this.hostClass\", \"class.k-separator-vertical\": \"this.verticalClass\", \"class.k-separator-horizontal\": \"this.horizontalClass\", \"style.color\": \"this.color\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardSeparatorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardSeparator]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-separator']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-separator-vertical']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-separator-horizontal']\n }], color: [{\n type: HostBinding,\n args: ['style.color']\n }, {\n type: Input\n }], orientation: [{\n type: Input\n }] } });\n\n/**\n * Specifies the text and styles for the title of the Card.\n */\nclass CardTitleDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardTitleDirective, selector: \"[kendoCardTitle]\", host: { properties: { \"class.k-card-title\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardTitle]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-title']\n }] } });\n\n/**\n * Specifies the text and styles for the subtitle of the Card.\n */\nclass CardSubtitleDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardSubtitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardSubtitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardSubtitleDirective, selector: \"[kendoCardSubtitle]\", host: { properties: { \"class.k-card-subtitle\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardSubtitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardSubtitle]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-subtitle']\n }] } });\n\n/**\n * Specifies any media that will be displayed and aligned in the Card.\n */\nclass CardMediaDirective {\n constructor() {\n this.hostClass = true;\n }\n}\nCardMediaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardMediaDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCardMediaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CardMediaDirective, selector: \"[kendoCardMedia]\", host: { properties: { \"class.k-card-media\": \"this.hostClass\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardMediaDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoCardMedia]'\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-card-media']\n }] } });\n\n/**\n * The settings of the Card action buttons.\n */\nclass CardAction {\n}\n\n/**\n * Represents a template that defines the content of the ExpansionPanel title.\n * To define the template, nest an `` tag\n * with the `kendoExpansionPanelTitleDirective` directive inside the `` tag.\n * ([see example]({% slug title_expansionpanel %}#toc-title-template)).\n */\nclass ExpansionPanelTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nExpansionPanelTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelTitleDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nExpansionPanelTitleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ExpansionPanelTitleDirective, selector: \"[kendoExpansionPanelTitleDirective]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelTitleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoExpansionPanelTitleDirective]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nfunction expand(duration, height) {\n return [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}` }))\n ];\n}\n/**\n * @hidden\n */\nfunction collapse(duration, height) {\n return [\n style({ overflow: 'hidden', height: `${height}` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n\n/**\n * Arguments for the `action` event of the ExpansionPanel.\n */\nclass ExpansionPanelActionEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\nconst DEFAULT_DURATION = 200;\nconst CONTENT_HIDDEN_CLASS = 'k-hidden';\n/**\n * Represents the [Kendo UI ExpansionPanel component for Angular]({% slug overview_expansionpanel %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * There are various theories about the origin of the word Chile.\n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass ExpansionPanelComponent {\n constructor(renderer, hostElement, ngZone, localizationService, builder) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n this.builder = builder;\n /**\n * Specifies the primary text in the header of the ExpansionPanel\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.title = '';\n /**\n * Specifies the secondary text in the header of the ExpansionPanel, which is rendered next to the collapse/expand icon\n * ([see example]({% slug title_expansionpanel %}#toc-title-and-subtitle)).\n */\n this.subtitle = '';\n /**\n * Specifies whether the ExpansionPanel is disabled. If disabled, the ExpansionPanel can be neither expanded nor collapsed\n * ([see example]({% slug disabled_expansionpanel %})).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the animation settings of the ExpansionPanel\n * ([see example]({% slug animations_expansionpanel %})).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true` Numeric values represent duration. Default duration is 200ms.\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when the `expanded` property of the component is updated.\n * Used to provide a two-way binding for the `expanded` property\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expandedChange = new EventEmitter();\n /**\n * Fires when the expanded state of the ExpansionPanel is about to change. This event is preventable\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.action = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is expanded. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is collapsed. If there is animation it will fire when the animation is complete\n * ([see example]({% slug overview_expansionpanel %}#toc-events)).\n */\n this.collapse = new EventEmitter();\n this.hostClass = true;\n /**\n * @hidden\n */\n this.focused = false;\n this.animationEnd = new EventEmitter();\n this.subscriptions = new Subscription();\n this._expanded = false;\n this._svgExpandIcon = caretAltDownIcon;\n this._svgCollapseIcon = caretAltUpIcon;\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies whether the ExpansionPanel is expanded. The property supports two-way binding.\n * ([see example]({% slug interaction_expansionpanel %}#toc-setting-the-initial-state)).\n *\n * @default false\n */\n set expanded(value) {\n if (value === this.expanded) {\n return;\n }\n this._expanded = value;\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n else {\n this.addContentHiddenClass();\n }\n }\n get expanded() {\n return this._expanded;\n }\n /**\n * Defines an SVGIcon for the expanded state of the component.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgExpandIcon(icon) {\n if (isDevMode() && icon && this.expandIcon) {\n throw new Error('Setting both expandIcon/svgExpandIcon options at the same time is not supported.');\n }\n this._svgExpandIcon = icon;\n }\n get svgExpandIcon() {\n return this._svgExpandIcon;\n }\n /**\n * Defines an SVGIcon for the collapsed state of the component.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgCollapseIcon(icon) {\n if (isDevMode() && icon && this.collapseIcon) {\n throw new Error('Setting both collapseIcon/svgCollapseIcon options at the same time is not supported.');\n }\n this._svgCollapseIcon = icon;\n }\n get svgCollapseIcon() {\n return this._svgCollapseIcon;\n }\n get expandedClass() {\n return this.expanded && !this.disabled;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'title');\n this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => { this.direction = rtl ? 'rtl' : 'ltr'; });\n const elem = this.hostElement.nativeElement;\n const header = this.header.nativeElement;\n this.subscriptions.add(this.renderer.listen(header, 'focus', () => this.focusExpansionPanel(elem)));\n this.subscriptions.add(this.renderer.listen(header, 'blur', () => this.blurExpansionPanel(elem)));\n }\n ngAfterViewInit() {\n this.initDomEvents();\n if (!this.expanded) {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n if (!this.disabled) {\n this.ngZone.runOutsideAngular(() => {\n const elem = this.hostElement.nativeElement;\n this.subscriptions.add(this.renderer.listen(elem, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n }\n /**\n * @hidden\n */\n keyDownHandler(ev) {\n const isEnterOrSpace = ev.keyCode === Keys.Enter || ev.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n if (hasClass(ev.target, 'k-expander-header')) {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.onHeaderAction();\n });\n }\n }\n /**\n * @hidden\n */\n onHeaderClick(ev) {\n const header = this.header.nativeElement;\n if (!isFocusable(ev.target) || (ev.target === header) && !this.disabled) {\n this.onHeaderAction();\n }\n }\n /**\n * @hidden\n */\n onHeaderAction() {\n const eventArgs = new ExpansionPanelActionEvent();\n eventArgs.action = this.expanded ? 'collapse' : 'expand';\n this.action.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.setExpanded(!this.expanded);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n }\n /**\n * @hidden\n */\n get expanderIndicatorClasses() {\n if (this.expanded) {\n return !this.collapseIcon ? `caret-alt-up` : '';\n }\n else {\n return !this.expandIcon ? `caret-alt-down` : '';\n }\n }\n /**\n * @hidden\n */\n get customExpanderIndicatorClasses() {\n if (this.expanded) {\n return this.collapseIcon ? this.collapseIcon : '';\n }\n else {\n return this.expandIcon ? this.expandIcon : '';\n }\n }\n /**\n * @hidden\n */\n get expanderSvgIcon() {\n return this.expanded ? this.svgCollapseIcon : this.svgExpandIcon;\n }\n /**\n * Toggles the visibility of the ExpansionPanel\n * ([see example]({% slug interaction_expansionpanel %}#toc-toggling-the-content)).\n *\n * @param expanded? - Boolean. Specifies, whether the ExpansionPanel will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n this.setExpanded(current);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n focusExpansionPanel(el) {\n if (!this.focused) {\n this.focused = true;\n this.renderer.addClass(el, 'k-focus');\n }\n }\n blurExpansionPanel(el) {\n if (this.focused) {\n this.focused = false;\n this.renderer.removeClass(el, 'k-focus');\n }\n }\n setExpanded(value) {\n this._expanded = value;\n this.expandedChange.emit(value);\n }\n animateContent() {\n const duration = typeof this.animation === 'boolean' ? DEFAULT_DURATION : this.animation;\n const contentHeight = getComputedStyle(this.content.nativeElement).height;\n const animation = this.expanded ? expand(duration, contentHeight) : collapse(duration, contentHeight);\n const player = this.createPlayer(animation, this.content.nativeElement);\n this.animationEnd.pipe(take(1)).subscribe(() => {\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n });\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n emitExpandCollapseEvent() {\n this[this.expanded ? 'expand' : 'collapse'].emit();\n }\n addContentHiddenClass() {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n removeContentHiddenClass() {\n this.renderer.removeClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n}\nExpansionPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i1$2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });\nExpansionPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ExpansionPanelComponent, selector: \"kendo-expansionpanel\", inputs: { title: \"title\", subtitle: \"subtitle\", disabled: \"disabled\", expanded: \"expanded\", svgExpandIcon: \"svgExpandIcon\", svgCollapseIcon: \"svgCollapseIcon\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", animation: \"animation\" }, outputs: { expandedChange: \"expandedChange\", action: \"action\", expand: \"expand\", collapse: \"collapse\" }, host: { properties: { \"class.k-expander\": \"this.hostClass\", \"class.k-expanded\": \"this.expandedClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ], queries: [{ propertyName: \"titleTemplate\", first: true, predicate: ExpansionPanelTitleDirective, descendants: true }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true, static: true }, { propertyName: \"header\", first: true, predicate: [\"header\"], descendants: true, static: true }], exportAs: [\"kendoExpansionPanel\"], ngImport: i0, template: `\n \n \n
    {{ title }}
    \n \n
    \n {{ subtitle }}\n
    \n
    \n \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoExpansionPanel',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }\n ],\n selector: 'kendo-expansionpanel',\n template: `\n \n \n
    {{ title }}
    \n \n
    \n {{ subtitle }}\n
    \n
    \n \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i1$2.AnimationBuilder }]; }, propDecorators: { title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], disabled: [{\n type: Input\n }], expanded: [{\n type: Input\n }], svgExpandIcon: [{\n type: Input\n }], svgCollapseIcon: [{\n type: Input\n }], expandIcon: [{\n type: Input\n }], collapseIcon: [{\n type: Input\n }], animation: [{\n type: Input\n }], expandedChange: [{\n type: Output\n }], action: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], titleTemplate: [{\n type: ContentChild,\n args: [ExpansionPanelTitleDirective, { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], header: [{\n type: ViewChild,\n args: ['header', { static: true }]\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-expander']\n }], expandedClass: [{\n type: HostBinding,\n args: ['class.k-expanded']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\n/**\n * @hidden\n */\nlet idx = 0;\n/**\n * @hidden\n */\nconst getId = (prefix) => {\n return `${prefix}-${++idx}`;\n};\n/**\n * @hidden\n */\nconst normalizeValue = (value) => {\n return value ? +value : undefined;\n};\n/**\n * @hidden\n */\nconst isRowItemPresent = (items) => {\n return items.some(item => isPresent(item.row));\n};\n/**\n * @hidden\n */\nconst propsChanged = (initialProps, newProps) => {\n for (let i = 0; i < initialProps.length; i++) {\n if (initialProps[i] !== newProps[i]) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = (event) => {\n if (!(isDocumentAvailable() && isPresent(document.elementsFromPoint))) {\n return [event.target];\n }\n return document.elementsFromPoint(event.clientX, event.clientY)\n .filter(item => item.classList && (item.classList.contains('k-tilelayout-item') || item.classList.contains('k-layout-item-hint')));\n};\n/**\n * @hidden\n */\nconst setElementStyles = (renderer, elem, styles) => {\n const props = Object.keys(styles);\n props.forEach(p => {\n renderer.setStyle(elem, p, styles[p]);\n });\n};\n/**\n * @hidden\n */\nconst calculateCellFromPosition = (coordinates, tileLayoutElement, gap, cellSize, columns, rtl = false) => {\n const tileLayoutRect = tileLayoutElement.getBoundingClientRect();\n const totalRows = (tileLayoutRect.height - gap.rows) / (cellSize.height + gap.rows);\n const distanceFromTop = coordinates.y - tileLayoutRect.y;\n const distanceFromLeft = coordinates.x - tileLayoutRect.x;\n const distanceFromRight = tileLayoutRect.right - coordinates.x;\n const distanceToCellWidthRatio = Math.floor((rtl ? distanceFromRight : distanceFromLeft) / (gap.columns + cellSize.width));\n const cappedColumnPosition = Math.min(distanceToCellWidthRatio + 1, columns);\n const distanceToCellHeightRatio = Math.floor(distanceFromTop / (gap.rows + cellSize.height));\n const cappedRowPosition = Math.min(distanceToCellHeightRatio + 1, totalRows);\n const col = Math.max(cappedColumnPosition, 0);\n const row = Math.max(cappedRowPosition, 0);\n return {\n row, col\n };\n};\n/**\n * @hidden\n */\nconst calculateOrderFromCell = (row, col, items, draggedItem, tileLayoutElement, gap, cellSize, columns) => {\n let order = 0;\n items.forEach(item => {\n const rect = item.elem.nativeElement.getBoundingClientRect();\n const start = calculateCellFromPosition({\n x: rect.x,\n y: rect.y\n }, tileLayoutElement, gap, cellSize, columns);\n if (item !== draggedItem && ((start.row === row && start.col < col) || start.row < row)) {\n order++;\n }\n });\n return order;\n};\n/**\n * @hidden\n */\nconst shouldResize = (keyCode, col, selectedTile, settings) => {\n const resizeRight = keyCode === Keys.ArrowRight && col + selectedTile.colSpan <= settings.columns;\n const resizeLeft = keyCode === Keys.ArrowLeft && selectedTile.colSpan > 1;\n const resizeDown = keyCode === Keys.ArrowDown;\n const resizeUp = keyCode === Keys.ArrowUp && selectedTile.rowSpan > 1;\n return { resizeRight, resizeLeft, resizeDown, resizeUp };\n};\n/**\n * @hidden\n */\nconst shouldReorder = (keyCode, col, selectedTile, settings) => {\n let reorderRight;\n let reorderLeft;\n if (selectedTile.col) {\n reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + col <= settings.columns;\n reorderLeft = keyCode === Keys.ArrowLeft && col > 1;\n }\n else {\n reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + selectedTile.order < settings.items.length;\n reorderLeft = keyCode === Keys.ArrowLeft && selectedTile.order > 0;\n }\n return { reorderLeft, reorderRight };\n};\n/**\n * @hidden\n */\nconst getCurrentCol = (selectedTile, settings, rtl) => {\n const rects = selectedTile.elem.nativeElement.getBoundingClientRect();\n const targetSize = {\n rowSpan: selectedTile.rowSpan,\n colSpan: selectedTile.colSpan\n };\n const width = (rects.width - ((targetSize.colSpan - 1) * settings.gap.columns)) / targetSize.colSpan;\n const height = (rects.height - ((targetSize.rowSpan - 1) * settings.gap.rows)) / targetSize.rowSpan;\n const { col } = calculateCellFromPosition({ x: rects.x, y: rects.y }, settings.tileLayoutElement, settings.gap, { width: width, height: height }, settings.columns, rtl);\n return col;\n};\n\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_SIZE = 9;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_SIZE = 25;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP = 5;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP = 18;\n/**\n * @hidden\n */\nconst DRAGGED_ZINDEX = 10;\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['ew', 'ns', 'nwse'];\n/**\n * @hidden\n */\nconst RTL_RESIZE_DIRECTIONS = ['ew', 'ns', 'nesw'];\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_DIMENSIONS = {\n // numeric values represent pixels\n ew: {\n width: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n ns: {\n height: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapY: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n nwse: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n },\n nesw: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n }\n};\n/**\n * @hidden\n */\nconst OVERLAP_THRESHOLD = 0.3;\n/**\n * @hidden\n */\nconst REVERSE_OVERLAP_THRESHOLD = -0.7;\n/**\n * @hidden\n */\nconst HINT_BORDERS_HEIGHT = 2;\n\n/**\n * Arguments for the `reorder` event. The event fires when the order or starting\n * positions of the items is changed via the UI. If you prevent the event, the change is canceled ([see example]({% slug reordering_tilelayout %}#toc-handling-the-reorder-event)).\n */\nclass TileLayoutReorderEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `reorder` event.\n * @param item - The TileLayoutItem being reordered.\n * @param items - The TileLayoutItem collection that holds the currently rendered items and their internal state.\n * @param newIndex - The new order index of the reordered item used to determine its positioning relative to the other items.\n * @param oldIndex - The initial order index of the reordered item used to determine its positioning relative to the other items.\n * @param newCol - The new start column of the reordered item.\n * @param oldCol - The initial start column of the reordered item.\n * @param newRow - The new start row of the reordered item.\n * @param oldRow - The initial start row of the reordered item.\n * @hidden\n */\n constructor(item, items, newIndex, oldIndex, newCol, oldCol, newRow, oldRow) {\n super();\n this.item = item;\n this.items = items;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n this.newCol = newCol;\n this.oldCol = oldCol;\n this.newRow = newRow;\n this.oldRow = oldRow;\n }\n}\n\n/**\n * Arguments for the `resize` event. The `resize` event fires when any item size\n * is changed from the UI. If you cancel the event, the change is prevented ([see example]({% slug resizing_tilelayout %}#toc-handling-the-resize-event)).\n */\nclass TileLayoutResizeEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `resize` event.\n * @param item - The TileLayoutItem being resized\n * @param items - The TileLayoutItem collection\n * @param newRowSpan - The new rowSpan of the resized item\n * @param oldRowSpan - The initial rowSpan of the resized item\n * @param newColSpan - The new colSpan of the resized item\n * @param oldColSpan - The initial colSpan of the resized item\n * @hidden\n */\n constructor(item, items, newRowSpan, oldRowSpan, newColSpan, oldColSpan) {\n super();\n this.item = item;\n this.items = items;\n this.newRowSpan = newRowSpan;\n this.oldRowSpan = oldRowSpan;\n this.newColSpan = newColSpan;\n this.oldColSpan = oldColSpan;\n }\n}\n\n/**\n * @hidden\n */\nclass TileLayoutDraggingService {\n constructor(zone, renderer, cdr, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.localization = localization;\n this.reorderable = new BehaviorSubject(null);\n this.resizable = new BehaviorSubject(null);\n this.reorder = new Subject();\n this.resize = new Subject();\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl);\n }\n get colStart() {\n return this.currentColStart;\n }\n get rowStart() {\n return this.currentRowStart;\n }\n get itemWrapper() {\n return this.draggedItemWrapper;\n }\n get order() {\n return this.targetOrder;\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n handlePress(originalEvent) {\n const resizing = !!originalEvent.target.classList.contains('k-resize-handle');\n const closestTile = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item'), this.tileLayoutSettings.tileLayoutElement);\n const closestHeader = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item-header'), this.tileLayoutSettings.tileLayoutElement);\n if (!closestTile) {\n return;\n }\n this.zone.run(() => {\n this.draggedItemWrapper = closestTile;\n this.draggedItem = this.tileLayoutSettings.items\n .find(item => item.order === +closestTile.style.order);\n });\n const reordering = !resizing && this.reorderable.getValue() && this.draggedItem.reorderable && closestHeader;\n const focusableTarget = isFocusable(originalEvent.target);\n if (!(reordering || resizing) || focusableTarget) {\n return;\n }\n else {\n originalEvent.preventDefault();\n }\n this.zone.run(() => {\n this.reordering = reordering;\n this.resizing = resizing;\n });\n const tileRect = this.draggedItemWrapper.getBoundingClientRect();\n this.zone.run(() => {\n this.offset = {\n top: originalEvent.clientY - tileRect.top,\n left: originalEvent.clientX - tileRect.left,\n x: tileRect.x,\n y: tileRect.y,\n width: tileRect.width,\n height: tileRect.height\n };\n this.targetSize = {\n rowSpan: this.draggedItem.rowSpan,\n colSpan: this.draggedItem.colSpan\n };\n this.cellSize = {\n width: (tileRect.width - ((this.targetSize.colSpan - 1) * this.tileLayoutSettings.gap.columns)) / this.targetSize.colSpan,\n height: (tileRect.height - ((this.targetSize.rowSpan - 1) * this.tileLayoutSettings.gap.rows)) / this.targetSize.rowSpan\n };\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n });\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: tileRect.left + window.pageXOffset - window.scrollX + 'px',\n top: tileRect.top + window.pageYOffset - window.scrollY + 'px',\n width: tileRect.width + 'px',\n height: tileRect.height + 'px',\n zIndex: DRAGGED_ZINDEX\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'flex',\n height: (tileRect.height - HINT_BORDERS_HEIGHT) + 'px'\n });\n this.zone.run(() => this.targetOrder = this.draggedItem.order);\n this.cdr.markForCheck();\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n position: 'fixed'\n });\n if (this.reorderable.getValue() && !resizing) {\n this.zone.run(() => {\n this.currentColStart = this.draggedItem.colStart;\n this.currentRowStart = this.draggedItem.rowStart;\n });\n const headerEl = this.draggedItem.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n this.renderer.addClass(headerEl, 'k-cursor-grabbing');\n this.cdr.markForCheck();\n }\n else if (this.resizable && resizing) {\n this.zone.run(() => {\n this.startingPoint = {\n top: originalEvent.clientY,\n left: originalEvent.clientX\n };\n this.currentResizingColSpan = this.draggedItem.colSpan;\n this.currentResizingRowSpan = this.draggedItem.rowSpan;\n if (this.draggedItem.col) {\n this.currentColStart = this.draggedItem.col.toString();\n }\n if (this.draggedItem.row) {\n this.currentRowStart = this.draggedItem.row.toString();\n }\n this.direction = originalEvent.target.classList[1];\n });\n }\n }\n handleDrag(originalEvent) {\n if (this.draggedItemWrapper) {\n if (this.reordering) {\n this.reorderItems(originalEvent);\n }\n else if (this.resizing) {\n this.resizeItem(originalEvent);\n }\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n }\n }\n handleRelease(originalEvent) {\n originalEvent.preventDefault();\n if (this.reordering) {\n const initialOrder = this.draggedItem.order;\n const initialCol = this.draggedItem.col;\n const initialRow = this.draggedItem.row;\n const targetCol = normalizeValue(this.currentColStart);\n const targetRow = normalizeValue(this.currentRowStart);\n if (propsChanged([this.targetOrder, targetCol, targetRow], [initialOrder, initialCol, initialRow])) {\n const reorderEvent = new TileLayoutReorderEvent(this.draggedItem, this.tileLayoutSettings.items, this.targetOrder, initialOrder, normalizeValue(this.currentColStart), initialCol, targetRow, initialRow);\n this.reorder.next(reorderEvent);\n if (!reorderEvent.isDefaultPrevented()) {\n if (this.targetOrder > initialOrder) {\n this.zone.run(() => {\n for (let i = initialOrder + 1; i <= this.targetOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i - 1;\n }\n });\n }\n else {\n this.zone.run(() => {\n for (let i = this.targetOrder; i < initialOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i + 1;\n }\n });\n }\n this.draggedItem.order = this.targetOrder;\n if (this.draggedItem.col) {\n this.draggedItem.col = +this.currentColStart;\n }\n if (this.draggedItem.row) {\n this.draggedItem.row = +this.currentRowStart;\n }\n }\n }\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n this.cdr.markForCheck();\n this.zone.run(() => this.cleanUp());\n }\n else if (!this.reordering && this.resizing) {\n const initialRowSpan = this.draggedItem.rowSpan;\n const initialColSpan = this.draggedItem.colSpan;\n const { targetColSpan, targetRowSpan } = isRowItemPresent(this.tileLayoutSettings.items) ?\n this.targetSpan() :\n { targetColSpan: this.currentResizingColSpan, targetRowSpan: this.currentResizingRowSpan };\n if (propsChanged([initialRowSpan, initialColSpan], [targetRowSpan, targetColSpan])) {\n const resizeEvent = new TileLayoutResizeEvent(this.draggedItem, this.tileLayoutSettings.items, targetRowSpan, initialRowSpan, targetColSpan, initialColSpan);\n this.resize.next(resizeEvent);\n if (!resizeEvent.isDefaultPrevented()) {\n this.draggedItem.colSpan = this.currentResizingColSpan;\n this.draggedItem.rowSpan = this.currentResizingRowSpan;\n }\n }\n this.zone.run(() => this.cleanUp());\n }\n }\n reorderItems(event) {\n const targets = getDropTarget(event);\n const closestTile = targets.find(t => t !== this.draggedItemWrapper);\n const tileOrder = closestTile ? +closestTile.style.order : +this.draggedItemWrapper.style.order;\n if (this.tileLayoutSettings.autoFlow !== 'none') {\n const deltaX = event.clientX - this.lastDragCursorOffset.x;\n const deltaY = event.clientY - this.lastDragCursorOffset.y;\n const directionX = deltaX > 0 ? 'right' : deltaX < 0 ? 'left' : undefined;\n const directionY = deltaY > 0 ? 'down' : deltaX < 0 ? 'up' : undefined;\n const rect = this.draggedItemWrapper.getBoundingClientRect();\n const horizontalGap = this.tileLayoutSettings.gap.columns;\n const verticalGap = this.tileLayoutSettings.gap.rows;\n if (directionX && this.draggedItem.col) {\n const { col } = calculateCellFromPosition({\n x: directionX === 'right' ? rect.right - horizontalGap : rect.left + horizontalGap,\n y: event.clientY\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartCol = this.getTargetCol(col, directionX);\n this.currentColStart = targetStartCol.toString();\n }\n if (directionY && this.draggedItem.row) {\n const { row } = calculateCellFromPosition({\n x: event.clientX,\n y: directionY === 'down' ? rect.bottom - verticalGap : rect.top + verticalGap\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartRow = this.getTargetRow(row, directionY);\n this.currentRowStart = targetStartRow.toString();\n }\n }\n const hintBefore = tileOrder < this.targetOrder;\n const hintAfter = tileOrder > this.targetOrder;\n this.zone.run(() => this.targetOrder = tileOrder);\n if (hintBefore) {\n this.tileLayoutSettings.tileLayoutElement\n .insertBefore(this.tileLayoutSettings.hintElement, this.tileLayoutSettings.tileLayoutElement.firstChild);\n }\n else if (hintAfter) {\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: (event.pageY - this.offset.top - window.scrollY) + 'px',\n left: (event.pageX - this.offset.left - window.scrollX) + 'px'\n });\n this.cdr.markForCheck();\n }\n resizeItem(event) {\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: this.direction.split('k-cursor-')[1]\n });\n const currentWidth = this.rtl ?\n this.offset.width + (this.offset.x - event.clientX) :\n this.offset.width + (event.clientX - this.startingPoint.left);\n const currentHeight = this.offset.height + (event.clientY - this.startingPoint.top);\n const hintRect = this.tileLayoutSettings.hintElement.getBoundingClientRect();\n const hintWidth = hintRect.width;\n const hintHeight = hintRect.height;\n const horizontalDragDirection = event.clientX - this.lastDragCursorOffset.x;\n const verticalDragDirection = event.clientY - this.lastDragCursorOffset.y;\n const startCol = this.draggedItem.col ? this.draggedItem.col : calculateCellFromPosition({\n x: this.rtl ? hintRect.right : hintRect.x,\n y: hintRect.y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl).col;\n const maxWidth = (this.tileLayoutSettings.columns - startCol) * (this.cellSize.width + this.tileLayoutSettings.gap.columns) + this.cellSize.width;\n const resizeHorizontally = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n width: Math.min(Math.max(currentWidth, this.cellSize.width), maxWidth) + 'px'\n });\n if (this.rtl && currentWidth > this.cellSize.width) {\n const totalWidth = this.tileLayoutSettings.columns * (this.cellSize.width + this.tileLayoutSettings.gap.columns);\n const leftBoundary = this.tileLayoutSettings.tileLayoutElement.getBoundingClientRect().right - totalWidth;\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: Math.max(event.clientX, leftBoundary) + 'px'\n });\n }\n const deltaX = currentWidth - hintWidth;\n const { x, y, right } = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const { col } = calculateCellFromPosition({ x: (this.rtl ? right : x), y: y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const resizedColSpan = col + this.currentResizingColSpan;\n const expandingCondition = this.rtl ? horizontalDragDirection < 0 : horizontalDragDirection > 0;\n const shrinkingCondition = this.rtl ? horizontalDragDirection > 0 : horizontalDragDirection < 0;\n if (deltaX > OVERLAP_THRESHOLD * this.cellSize.width &&\n expandingCondition &&\n resizedColSpan <= this.tileLayoutSettings.columns) {\n this.currentResizingColSpan++;\n }\n else if (this.currentResizingColSpan > 1 &&\n shrinkingCondition &&\n deltaX < REVERSE_OVERLAP_THRESHOLD * this.cellSize.width) {\n this.currentResizingColSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridColumnEnd: `span ${this.currentResizingColSpan}`\n });\n };\n const resizeVertically = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n height: Math.max(currentHeight, this.cellSize.height) + 'px'\n });\n const deltaY = currentHeight - hintHeight;\n if (deltaY > OVERLAP_THRESHOLD * this.cellSize.height && verticalDragDirection > 0) {\n this.currentResizingRowSpan++;\n }\n else if (this.currentResizingRowSpan > 1 &&\n verticalDragDirection < 0 && deltaY < REVERSE_OVERLAP_THRESHOLD * this.cellSize.height) {\n this.currentResizingRowSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridRowEnd: `span ${this.currentResizingRowSpan}`\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n height: `${this.calculateHintHeight()}px`\n });\n };\n if (this.direction.indexOf('ew') > -1) {\n resizeHorizontally();\n }\n else if (this.direction.indexOf('ns') > -1) {\n resizeVertically();\n }\n else {\n resizeHorizontally();\n resizeVertically();\n }\n }\n cleanUp() {\n this.targetOrder = this.currentResizingColSpan = this.currentColStart = this.currentResizingRowSpan = this.currentRowStart = undefined;\n this.resizing = this.reordering = false;\n this.direction = null;\n if (this.draggedItemWrapper) {\n const grabHandle = this.draggedItemWrapper.querySelector('.k-cursor-grab');\n if (grabHandle) {\n this.renderer.removeClass(grabHandle, 'k-cursor-grabbing');\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: '',\n left: '',\n display: '',\n width: '',\n height: '',\n zIndex: '',\n position: ''\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'none',\n height: 'auto'\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: 'default'\n });\n this.draggedItemWrapper =\n this.offset =\n this.draggedItem =\n this.resizing =\n this.reordering =\n this.currentResizingColSpan =\n this.currentResizingRowSpan =\n this.startingPoint = undefined;\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n }\n }\n targetSpan() {\n const itemRect = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const startingCell = calculateCellFromPosition({ x: this.rtl ? itemRect.right : itemRect.x, y: itemRect.y }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetEndCell = calculateCellFromPosition({\n x: this.rtl ? itemRect.x + OVERLAP_THRESHOLD * this.cellSize.width : itemRect.right - OVERLAP_THRESHOLD * this.cellSize.width,\n y: itemRect.bottom - OVERLAP_THRESHOLD * this.cellSize.height\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n return {\n targetColSpan: targetEndCell.col - startingCell.col + 1,\n targetRowSpan: targetEndCell.row - startingCell.row + 1\n };\n }\n getTargetCol(col, direction) {\n if (this.rtl) {\n return direction === 'left' ? col - this.draggedItem.colSpan + 1 : col;\n }\n return direction === 'right' ? col - this.draggedItem.colSpan + 1 : col;\n }\n getTargetRow(row, direction) {\n return direction === 'down' ? row - this.draggedItem.rowSpan + 1 : row;\n }\n calculateHintHeight() {\n const totalHintCellsHeight = this.currentResizingRowSpan * this.cellSize.height;\n const totalHintGapsHeight = (this.currentResizingRowSpan - 1) * this.tileLayoutSettings.gap.rows;\n const hintHeight = totalHintCellsHeight + totalHintGapsHeight - HINT_BORDERS_HEIGHT;\n return hintHeight;\n }\n}\nTileLayoutDraggingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutDraggingService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nTileLayoutDraggingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutDraggingService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutDraggingService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }]; } });\n\n/* eslint-disable no-unused-expressions */\n/**\n * @hidden\n */\nclass TileLayoutKeyboardNavigationService {\n constructor(zone, renderer, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.navigable = new BehaviorSubject(false);\n this.localizationSubscription = this.localization.changes.subscribe(({ rtl }) => this.rtl = rtl);\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n onKeyDown(event, elem, focusableItems, settings) {\n const keyCode = event.keyCode;\n const isTileFocused = document.activeElement === elem;\n const focusedTile = settings.items.find(item => item.elem.nativeElement === elem);\n const col = getCurrentCol(focusedTile, settings, this.rtl);\n if (keyCode === Keys.Enter && isTileFocused && focusableItems.length > 0) {\n this.changeTabIndex('0', elem, focusableItems);\n focusableItems[0].focus();\n }\n else if (keyCode === Keys.Escape) {\n this.changeTabIndex('-1', elem, focusableItems);\n elem.focus();\n }\n else if ((event.ctrlKey || event.metaKey) && isTileFocused && focusedTile.isResizable) {\n event.preventDefault();\n this.zone.run(() => {\n this.resizeItem(keyCode, focusedTile, settings, col);\n });\n }\n else if (event.shiftKey && isTileFocused && focusedTile.isReorderable) {\n this.zone.run(() => {\n this.reorderItem(keyCode, focusedTile, settings, col);\n });\n }\n else if (keyCode === Keys.Tab && !isTileFocused) {\n this.keepFocusWithinComponent(event, elem);\n }\n }\n onFocusOut(event, elem, focusableItems) {\n const isTargetFocusable = focusableItems.includes(event.target);\n const isRelatedTargetFocusable = focusableItems.includes(event.relatedTarget);\n if (isTargetFocusable && !isRelatedTargetFocusable) {\n this.changeTabIndex('-1', elem, focusableItems);\n event.relatedTarget?.focus();\n }\n }\n onClick(event, elem, focusableItems) {\n const isTargetFocusable = focusableItems.includes(event.target);\n if (isTargetFocusable) {\n this.changeTabIndex('0', elem, focusableItems);\n event.target.focus();\n }\n }\n changeTabIndex(tabIndex, elem, focusableItems) {\n this.renderer.setAttribute(elem, 'tabindex', tabIndex === '0' ? '-1' : '0');\n focusableItems.forEach((focusItem) => {\n this.renderer.setAttribute(focusItem, 'tabindex', tabIndex);\n });\n }\n getAllFocusableChildren(parent) {\n return Array.from(parent.querySelectorAll(focusableSelector)).filter((element) => element.offsetParent !== null);\n }\n ;\n resizeItem(keyCode, focusedTile, settings, col) {\n const { resizeRight, resizeLeft, resizeDown, resizeUp } = shouldResize(keyCode, col, focusedTile, settings);\n const resizeHorizontal = resizeLeft || resizeRight;\n const resizeVertical = resizeDown || resizeUp;\n const resizeDir = resizeLeft || resizeUp ? -1 : 1;\n if (resizeHorizontal) {\n focusedTile.colSpan += resizeDir;\n }\n else if (resizeVertical) {\n focusedTile.rowSpan += resizeDir;\n }\n }\n reorderItem(keyCode, focusedTile, settings, col) {\n const { reorderLeft, reorderRight } = shouldReorder(keyCode, col, focusedTile, settings);\n const onReorderRight = () => {\n const nextTile = this.targetTile(focusedTile, settings.items, 1);\n if (nextTile) {\n focusedTile.order += 1;\n nextTile.order -= 1;\n }\n };\n const onReorderLeft = () => {\n const prevTile = this.targetTile(focusedTile, settings.items, -1);\n if (prevTile) {\n focusedTile.order -= 1;\n prevTile.order += 1;\n }\n };\n if (reorderRight || reorderLeft) {\n const reorderDir = reorderRight ? 1 : -1;\n if (focusedTile.col) {\n focusedTile.col += reorderDir;\n }\n else {\n reorderRight ? onReorderRight() : onReorderLeft();\n }\n }\n }\n keepFocusWithinComponent(event, wrapper) {\n const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && event.target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && event.target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n wrapper.blur();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n getFirstAndLastFocusable(parent) {\n const all = this.getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n }\n ;\n targetTile(focusedTile, items, offset) {\n return items.find(item => item.order === focusedTile.order + offset);\n }\n}\nTileLayoutKeyboardNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutKeyboardNavigationService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });\nTileLayoutKeyboardNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutKeyboardNavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutKeyboardNavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }]; } });\n\n/**\n * Holds the content of the header section of the TileLayoutItem component.\n * This is the area which can be dragged to reorder the items if reordering is enabled for this item.\n */\nclass TileLayoutItemHeaderComponent {\n constructor(hostEl, renderer) {\n this.hostEl = hostEl;\n this.renderer = renderer;\n this.hostClass = true;\n }\n /**\n * @hidden\n */\n set reorderable(value) {\n const hostElement = this.hostEl.nativeElement;\n if (value) {\n this.renderer.addClass(hostElement, 'k-touch-action-none');\n this.renderer.removeClass(hostElement, 'k-touch-action-auto');\n }\n else {\n this.renderer.addClass(hostElement, 'k-touch-action-auto');\n this.renderer.removeClass(hostElement, 'k-touch-action-none');\n }\n }\n}\nTileLayoutItemHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemHeaderComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TileLayoutItemHeaderComponent, selector: \"kendo-tilelayout-item-header\", inputs: { reorderable: \"reorderable\" }, host: { properties: { \"class.k-tilelayout-item-header\": \"this.hostClass\", \"class.k-card-header\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemHeaderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-header',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-header']\n }, {\n type: HostBinding,\n args: ['class.k-card-header']\n }], reorderable: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TileLayoutResizeHandleDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n }\n ngOnInit() {\n this.sizeHandle();\n }\n setHorizontalPosition(element) {\n this.renderer.setStyle(element, this.rtl ? 'left' : 'right', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapX + 'px');\n }\n setBottom(element) {\n this.renderer.setStyle(element, 'bottom', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapY + 'px');\n }\n sizeHandle() {\n const element = this.el.nativeElement;\n const handleWidth = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width}px` : '100%';\n const handleHeight = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height ?\n `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height}px` : '100%';\n this.renderer.setStyle(element, 'width', handleWidth);\n this.renderer.setStyle(element, 'height', handleHeight);\n if (this.resizeDirection === 'ew') {\n this.setHorizontalPosition(element);\n }\n else if (this.resizeDirection === 'ns') {\n this.setBottom(element);\n }\n else {\n this.setHorizontalPosition(element);\n this.setBottom(element);\n }\n }\n}\nTileLayoutResizeHandleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutResizeHandleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nTileLayoutResizeHandleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TileLayoutResizeHandleDirective, selector: \"[kendoTileLayoutResizeHandle]\", inputs: { resizeDirection: \"resizeDirection\", rtl: \"rtl\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutResizeHandleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTileLayoutResizeHandle]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { resizeDirection: [{\n type: Input\n }], rtl: [{\n type: Input\n }] } });\n\n/**\n * Represents a tile item within the TileLayoutComponent.\n */\nclass TileLayoutItemComponent {\n constructor(elem, zone, renderer, localization, draggingService, keyboardNavigationService) {\n this.elem = elem;\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.keyboardNavigationService = keyboardNavigationService;\n /**\n * Determines how many rows will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.rowSpan = 1;\n /**\n * Determines how many columns will the tile item span ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.colSpan = 1;\n /**\n * Determines whether the item can be reordered. By default all items are reorderable when the [reorderable]({% slug api_layout_tilelayoutcomponent %}#toc-reorderable) property of the TileLayoutComponent is set to `true` ([see example]({% slug reordering_tilelayout %}#toc-disabling-reordering)).\n *\n * @default true\n */\n this.reorderable = true;\n /**\n * Determines whether the item can be resized. By default all items are resizable when the [resizable]({% slug api_layout_tilelayoutcomponent %}#resizable) property of the TileLayoutComponent is set to `true` ([see example]({% slug resizing_tilelayout %}#toc-disable-resizing)).\n * @default true\n */\n this.resizable = true;\n this.itemClass = true;\n this.hostRole = 'listitem';\n /**\n * @hidden\n */\n this.titleId = '';\n this.subs = new Subscription();\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n this.resizeDirections = resizable && this.resizable ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }));\n this.titleId = getId('k-tilelayout-title');\n }\n /**\n * Determines the order of the tile items within the TileLayout.\n * If not set, the items will receive increasing sequential order in accordance with\n * their position in the DOM when initially rendered.\n */\n set order(value) {\n this._order = value;\n this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order}`);\n }\n get order() {\n return this._order;\n }\n get hostDropEffect() {\n return this.isResizable || this.isReorderable ? 'execute' : undefined;\n }\n get hostTabindex() {\n return this.isNavigable ? '0' : undefined;\n }\n get ariaKeyShortcuts() {\n return this.isNavigable ? 'Enter' : undefined;\n }\n get hostGrabbed() {\n return this.isResizable || this.isReorderable;\n }\n get hostLabelledBy() {\n return this.title ? this.titleId : undefined;\n }\n get colEnd() {\n return `span ${this.colSpan}`;\n }\n get rowEnd() {\n return `span ${this.rowSpan}`;\n }\n get colStart() {\n return isPresent(this.col) ? this.col.toString() : undefined;\n }\n get rowStart() {\n return isPresent(this.row) ? this.row.toString() : undefined;\n }\n /**\n * @hidden\n */\n get isReorderable() {\n return this.reorderable && this.draggingService.reorderable.getValue();\n }\n /**\n * @hidden\n */\n get isNavigable() {\n return this.keyboardNavigationService.navigable.getValue();\n }\n /**\n * @hidden\n */\n get isResizable() {\n return this.resizable && this.draggingService.resizable.getValue();\n }\n ngAfterViewInit() {\n const elem = this.elem.nativeElement;\n const keyboardNavigation = this.keyboardNavigationService;\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n this.toggleCursorClass(reorderable && this.reorderable);\n if (this.headers?.first) {\n this.headers.first.reorderable = reorderable && this.reorderable;\n }\n }));\n this.subs.add(keyboardNavigation.navigable.subscribe(isNavigable => {\n if (isNavigable) {\n this.keyboardNavigationSubs = new Subscription();\n this.focusableItems = keyboardNavigation.getAllFocusableChildren(elem);\n this.zone.runOutsideAngular(() => {\n keyboardNavigation.changeTabIndex('-1', elem, this.focusableItems);\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'keydown', event => keyboardNavigation.onKeyDown(event, elem, this.focusableItems, this.draggingService.tileLayoutSettings)));\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'click', event => keyboardNavigation.onClick(event, elem, this.focusableItems)));\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'focusout', event => keyboardNavigation.onFocusOut(event, elem, this.focusableItems)));\n });\n }\n else if (this.focusableItems) {\n this.focusableItems.forEach((focusItem) => {\n this.renderer.setAttribute(focusItem, 'tabindex', '0');\n });\n this.keyboardNavigationSubs.unsubscribe();\n }\n }));\n }\n ngOnChanges(changes) {\n if (changes['reorderable'] && !changes['reorderable'].firstChange) {\n this.toggleCursorClass(changes['reorderable'].currentValue && this.draggingService.reorderable.getValue());\n }\n if (changes['resizable']) {\n this.resizeDirections = this.resizable && this.draggingService.resizable.getValue() ?\n this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n if (this.keyboardNavigationSubs) {\n this.keyboardNavigationSubs.unsubscribe();\n }\n }\n toggleCursorClass(isReorderable) {\n const headerEl = this.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n if (!headerEl) {\n return;\n }\n if (isReorderable) {\n this.renderer.addClass(headerEl, 'k-cursor-grab');\n }\n else {\n this.renderer.removeClass(headerEl, 'k-cursor-grab');\n }\n }\n}\nTileLayoutItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: TileLayoutDraggingService }, { token: TileLayoutKeyboardNavigationService }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TileLayoutItemComponent, selector: \"kendo-tilelayout-item\", inputs: { title: \"title\", rowSpan: \"rowSpan\", colSpan: \"colSpan\", order: \"order\", col: \"col\", row: \"row\", reorderable: \"reorderable\", resizable: \"resizable\" }, host: { properties: { \"class.k-tilelayout-item\": \"this.itemClass\", \"class.k-card\": \"this.itemClass\", \"attr.role\": \"this.hostRole\", \"attr.aria-dropeffect\": \"this.hostDropEffect\", \"attr.tabindex\": \"this.hostTabindex\", \"attr.aria-keyshortcuts\": \"this.ariaKeyShortcuts\", \"attr.aria-grabbed\": \"this.hostGrabbed\", \"attr.aria-labelledby\": \"this.hostLabelledBy\", \"style.grid-column-end\": \"this.colEnd\", \"style.grid-row-end\": \"this.rowEnd\", \"style.grid-column-start\": \"this.colStart\", \"style.grid-row-start\": \"this.rowStart\" } }, queries: [{ propertyName: \"headers\", predicate: TileLayoutItemHeaderComponent }], usesOnChanges: true, ngImport: i0, template: `\n \n
    {{ title }}
    \n
    \n \n \n \n \n \n `, isInline: true, components: [{ type: TileLayoutItemHeaderComponent, selector: \"kendo-tilelayout-item-header\", inputs: [\"reorderable\"] }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: TileLayoutResizeHandleDirective, selector: \"[kendoTileLayoutResizeHandle]\", inputs: [\"resizeDirection\", \"rtl\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item',\n template: `\n \n
    {{ title }}
    \n
    \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: TileLayoutDraggingService }, { type: TileLayoutKeyboardNavigationService }]; }, propDecorators: { title: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], order: [{\n type: Input\n }], col: [{\n type: Input\n }], row: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], itemClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item']\n }, {\n type: HostBinding,\n args: ['class.k-card']\n }], hostRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostDropEffect: [{\n type: HostBinding,\n args: ['attr.aria-dropeffect']\n }], hostTabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaKeyShortcuts: [{\n type: HostBinding,\n args: ['attr.aria-keyshortcuts']\n }], hostGrabbed: [{\n type: HostBinding,\n args: ['attr.aria-grabbed']\n }], hostLabelledBy: [{\n type: HostBinding,\n args: ['attr.aria-labelledby']\n }], colEnd: [{\n type: HostBinding,\n args: ['style.grid-column-end']\n }], rowEnd: [{\n type: HostBinding,\n args: ['style.grid-row-end']\n }], colStart: [{\n type: HostBinding,\n args: ['style.grid-column-start']\n }], rowStart: [{\n type: HostBinding,\n args: ['style.grid-row-start']\n }], headers: [{\n type: ContentChildren,\n args: [TileLayoutItemHeaderComponent]\n }] } });\n\nconst autoFlowClasses = {\n column: 'k-grid-flow-col',\n row: 'k-grid-flow-row',\n 'column-dense': 'k-grid-flow-col-dense',\n 'row-dense': 'k-grid-flow-row-dense'\n};\n/**\n * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})\n */\nclass TileLayoutComponent {\n constructor(zone, elem, renderer, localization, draggingService, navigationService) {\n this.zone = zone;\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.navigationService = navigationService;\n /**\n * Defines the number of columns ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.columns = 1;\n /**\n * Determines the width of the columns. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.columnWidth = '1fr';\n /**\n * Determines whether the reordering functionality will be enabled ([see example]({% slug reordering_tilelayout %})).\n * @default false\n */\n this.reorderable = false;\n /**\n * Determines whether the resizing functionality will be enabled ([see example]({% slug resizing_tilelayout %})).\n * @default false\n */\n this.resizable = false;\n /**\n * Determines the height of the rows. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.rowHeight = '1fr';\n /**\n * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example]({% slug tiles_autoflow_tilelayout %})).\n * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).\n *\n * The possible values are:\n * * (Default) `column`\n * * `row`\n * * `row dense`\n * * `column dense`\n * * `none`\n *\n */\n this.autoFlow = 'column';\n /**\n * If set to true, the user can use dedicated shortcuts to interact with the TileLayout.\n * By default, navigation is disabled and focusable TileLayout content is a part of the natural tab sequence of the page.\n *\n * @default false\n */\n this.navigable = false;\n /**\n * Fires when the user completes the reordering of the item ([see example]({% slug reordering_tilelayout %})).\n * This event is preventable. If you cancel it, the item will not be reordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the item ([see example]({% slug resizing_tilelayout %})).\n * This event is preventable. If you cancel it, the item will not be resized.\n */\n this.resize = new EventEmitter();\n this.hostClass = true;\n this.hostRole = 'list';\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.subs = new Subscription();\n this._gap = {\n rows: 16,\n columns: 16\n };\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n }\n /**\n * The numeric values which determine the spacing in pixels between the layout items horizontally and vertically.\n * Properties:\n * * rows - the vertical spacing. Numeric values are treated as pixels. Defaults to `16`.\n * * columns - the horizontal spacing. Numeric values are treated as pixels. Defaults to `16`.\n *\n * When bound to a single numeric value, it will be set to both `rows` and `columns` properties.\n */\n set gap(value) {\n this._gap = (typeof value === 'number') ? { rows: value, columns: value } : Object.assign(this._gap, value);\n }\n get gap() {\n return this._gap;\n }\n get gapStyle() {\n return `${this.gap.rows}px ${this.gap.columns}px`;\n }\n get currentColStart() {\n return this.draggingService.colStart;\n }\n get currentRowStart() {\n return this.draggingService.rowStart;\n }\n get draggedItemWrapper() {\n return this.draggingService.itemWrapper;\n }\n get targetOrder() {\n return this.draggingService.order;\n }\n ngOnInit() {\n this.applyColStyling();\n this.applyRowStyling();\n this.draggingService.reorderable.next(this.reorderable);\n this.draggingService.resizable.next(this.resizable);\n this.navigationService.navigable.next(this.navigable);\n if (hasObservers(this.reorder)) {\n this.subs.add(this.draggingService.reorder.subscribe(e => this.reorder.emit(e)));\n }\n if (hasObservers(this.resize)) {\n this.subs.add(this.draggingService.resize.subscribe(e => this.resize.emit(e)));\n }\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n if (reorderable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n if (resizable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngAfterViewInit() {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n this.applyAutoFlow(null, autoFlowClasses[this.autoFlow]);\n this.items.changes.subscribe(() => {\n this.setItemsOrder();\n this.draggingService.tileLayoutSettings.items = this.items.toArray();\n });\n }\n ngAfterContentInit() {\n this.setItemsOrder();\n }\n ngOnChanges(changes) {\n if (changes['columns'] || changes['columnWidth']) {\n this.applyColStyling();\n }\n if (changes['rowHeight']) {\n this.applyRowStyling();\n }\n if (isChanged('reorderable', changes)) {\n this.draggingService.reorderable.next(changes['reorderable'].currentValue);\n }\n if (isChanged('resizable', changes)) {\n this.draggingService.resizable.next(changes['resizable'].currentValue);\n }\n if (changes['gap'] || changes['autoFlow'] || changes['columns']) {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n if (changes['autoFlow']) {\n this.applyAutoFlow(autoFlowClasses[changes['autoFlow'].previousValue] || '', autoFlowClasses[changes['autoFlow'].currentValue]);\n }\n }\n if (isChanged('navigable', changes)) {\n this.navigationService.navigable.next(changes['navigable'].currentValue);\n }\n }\n ngOnDestroy() {\n if (this.draggable) {\n this.draggable.destroy();\n }\n this.subs.unsubscribe();\n }\n handlePress({ originalEvent }) {\n this.draggingService.handlePress(originalEvent);\n }\n handleDrag({ originalEvent }) {\n this.draggingService.handleDrag(originalEvent);\n }\n handleRelease({ originalEvent }) {\n this.draggingService.handleRelease(originalEvent);\n }\n applyColStyling() {\n const colWidth = typeof this.columnWidth === 'number' ? `${this.columnWidth}px` : this.columnWidth;\n const gridTemplateColumnsStyle = `repeat(${this.columns}, ${colWidth})`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-template-columns', gridTemplateColumnsStyle);\n }\n applyRowStyling() {\n const rowHeight = typeof this.rowHeight === 'number' ? `${this.rowHeight}px` : this.rowHeight;\n const gridAutoRowsStyle = `${rowHeight}`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-auto-rows', gridAutoRowsStyle);\n }\n draggingServiceConfig() {\n return {\n tileLayoutElement: this.elem ? this.elem.nativeElement : undefined,\n hintElement: this.hint ? this.hint.nativeElement : undefined,\n gap: this.gap,\n columns: this.columns,\n autoFlow: this.autoFlow,\n items: this.items ? this.items.toArray() : []\n };\n }\n initializeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.elem.nativeElement));\n }\n applyAutoFlow(classToRemove, classToAdd) {\n const element = this.elem.nativeElement;\n if (classToRemove) {\n this.renderer.removeClass(element, classToRemove);\n }\n if (this.autoFlow !== 'none' && isPresent(classToAdd)) {\n this.renderer.addClass(element, classToAdd);\n }\n }\n setItemsOrder() {\n this.items.forEach((item, index) => {\n if (!isPresent(item.order)) {\n item.order = index;\n }\n });\n }\n}\nTileLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: TileLayoutDraggingService }, { token: TileLayoutKeyboardNavigationService }], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TileLayoutComponent, selector: \"kendo-tilelayout\", inputs: { columns: \"columns\", columnWidth: \"columnWidth\", gap: \"gap\", reorderable: \"reorderable\", resizable: \"resizable\", rowHeight: \"rowHeight\", autoFlow: \"autoFlow\", navigable: \"navigable\" }, outputs: { reorder: \"reorder\", resize: \"resize\" }, host: { properties: { \"class.k-tilelayout\": \"this.hostClass\", \"class.k-pos-relative\": \"this.hostClass\", \"attr.role\": \"this.hostRole\", \"style.gap\": \"this.gapStyle\", \"style.padding\": \"this.gapStyle\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n TileLayoutDraggingService,\n TileLayoutKeyboardNavigationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ], queries: [{ propertyName: \"items\", predicate: TileLayoutItemComponent }], viewQueries: [{ propertyName: \"hint\", first: true, predicate: [\"hint\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n
    \n
    \n `, isInline: true, components: [{ type: i1$1.WatermarkOverlayComponent, selector: \"div[kendoWatermarkOverlay]\" }], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout',\n providers: [\n LocalizationService,\n TileLayoutDraggingService,\n TileLayoutKeyboardNavigationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }\n ],\n template: `\n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: TileLayoutDraggingService }, { type: TileLayoutKeyboardNavigationService }]; }, propDecorators: { columns: [{\n type: Input\n }], columnWidth: [{\n type: Input\n }], gap: [{\n type: Input\n }], reorderable: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], autoFlow: [{\n type: Input\n }], navigable: [{\n type: Input\n }], reorder: [{\n type: Output\n }], resize: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout']\n }, {\n type: HostBinding,\n args: ['class.k-pos-relative']\n }], hostRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], gapStyle: [{\n type: HostBinding,\n args: ['style.gap']\n }, {\n type: HostBinding,\n args: ['style.padding']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], items: [{\n type: ContentChildren,\n args: [TileLayoutItemComponent]\n }], hint: [{\n type: ViewChild,\n args: ['hint', { static: false }]\n }] } });\n\n/**\n * Holds the main content of the TileLayoutItem component.\n */\nclass TileLayoutItemBodyComponent {\n constructor() {\n this.hostClass = true;\n this.minHeight = 0;\n }\n}\nTileLayoutItemBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTileLayoutItemBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TileLayoutItemBodyComponent, selector: \"kendo-tilelayout-item-body\", host: { properties: { \"class.k-tilelayout-item-body\": \"this.hostClass\", \"class.k-card-body\": \"this.hostClass\", \"style.min-height\": \"this.minHeight\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutItemBodyComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tilelayout-item-body',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-tilelayout-item-body']\n }, {\n type: HostBinding,\n args: ['class.k-card-body']\n }], minHeight: [{\n type: HostBinding,\n args: ['style.min-height']\n }] } });\n\nconst exportedModules$a = [\n AvatarComponent,\n AvatarCustomMessagesComponent\n];\nconst declarations$a = [\n LocalizedAvatarMessagesDirective,\n ...exportedModules$a\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Avatar component.\n */\nclass AvatarModule {\n}\nAvatarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAvatarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarModule, declarations: [LocalizedAvatarMessagesDirective, AvatarComponent,\n AvatarCustomMessagesComponent], imports: [CommonModule, IconsModule], exports: [AvatarComponent,\n AvatarCustomMessagesComponent] });\nAvatarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarModule, imports: [[CommonModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AvatarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$a],\n exports: [exportedModules$a],\n imports: [CommonModule, IconsModule]\n }]\n }] });\n\nconst cardDirectives = [\n CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective\n];\nconst exportedModules$9 = [\n CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent,\n ...cardDirectives\n];\nconst declarations$9 = [...exportedModules$9];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Card component.\n */\nclass CardModule {\n}\nCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardModule, declarations: [CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent, CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective], imports: [CommonModule], exports: [CardComponent,\n CardHeaderComponent,\n CardBodyComponent,\n CardFooterComponent,\n CardActionsComponent, CardTitleDirective,\n CardSubtitleDirective,\n CardSeparatorDirective,\n CardMediaDirective] });\nCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CardModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$9],\n exports: [exportedModules$9],\n imports: [CommonModule]\n }]\n }] });\n\nconst templateDirectives$1 = [\n DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective\n];\nconst exportedModules$8 = [\n DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent,\n ...templateDirectives$1\n];\nconst declarations$8 = [\n DrawerItemComponent,\n DrawerListComponent,\n ...exportedModules$8\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Drawer component.\n */\nclass DrawerModule {\n}\nDrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDrawerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerModule, declarations: [DrawerItemComponent,\n DrawerListComponent, DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent, DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective], imports: [CommonModule, IconsModule, WatermarkModule], exports: [DrawerComponent,\n DrawerContainerComponent,\n DrawerContentComponent, DrawerTemplateDirective,\n DrawerHeaderTemplateDirective,\n DrawerFooterTemplateDirective,\n DrawerItemTemplateDirective] });\nDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerModule, imports: [[CommonModule, IconsModule, WatermarkModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DrawerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$8],\n exports: [exportedModules$8],\n imports: [CommonModule, IconsModule, WatermarkModule]\n }]\n }] });\n\nconst exportedModules$7 = [\n ExpansionPanelComponent,\n ExpansionPanelTitleDirective\n];\nconst declarations$7 = [\n ...exportedModules$7\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the ExpansionPanel component.\n */\nclass ExpansionPanelModule {\n}\nExpansionPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nExpansionPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelModule, declarations: [ExpansionPanelComponent,\n ExpansionPanelTitleDirective], imports: [CommonModule, EventsModule, IconsModule], exports: [ExpansionPanelComponent,\n ExpansionPanelTitleDirective] });\nExpansionPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelModule, imports: [[CommonModule, EventsModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ExpansionPanelModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$7],\n exports: [exportedModules$7],\n imports: [CommonModule, EventsModule, IconsModule]\n }]\n }] });\n\nconst exportedModules$6 = [\n PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective\n];\nconst declarations$6 = [\n ...exportedModules$6\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the PanelBar component.\n *\n * The module registers:\n * - `PanelBarComponent`—The `PanelBar` component class.\n * - `PanelBarItemComponent`—The `PanelBarItem` component class.\n * - `PanelBarContentComponent`—The `PanelBarContent` component class.\n * - `PanelBarItemTemplateDirective—The `PanelBarItemTemplate` directive.\n * - `PanelBarItemTitleDirective—The `PanelBarItemTitle` directive.\n */\nclass PanelBarModule {\n}\nPanelBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPanelBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarModule, declarations: [PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective], imports: [CommonModule, IconsModule, WatermarkModule], exports: [PanelBarComponent,\n PanelBarItemComponent,\n PanelBarContentDirective,\n PanelBarItemTemplateDirective,\n PanelBarItemTitleDirective] });\nPanelBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarModule, imports: [[CommonModule, IconsModule, WatermarkModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PanelBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$6],\n exports: [exportedModules$6],\n imports: [CommonModule, IconsModule, WatermarkModule]\n }]\n }] });\n\nconst exportedModules$5 = [\n SplitterComponent,\n SplitterPaneComponent\n];\nconst declarations$5 = [\n SplitterBarComponent,\n ...exportedModules$5\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Splitter component.\n *\n * The module registers:\n * - `SplitterComponent`—The `Splitter` component class.\n * - `SplitterPaneComponent`—The `SplitterPane` component class.\n */\nclass SplitterModule {\n}\nSplitterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSplitterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterModule, declarations: [SplitterBarComponent, SplitterComponent,\n SplitterPaneComponent], imports: [CommonModule,\n DraggableModule,\n IconsModule], exports: [SplitterComponent,\n SplitterPaneComponent] });\nSplitterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterModule, imports: [[\n CommonModule,\n DraggableModule,\n IconsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: SplitterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$5],\n exports: [exportedModules$5],\n imports: [\n CommonModule,\n DraggableModule,\n IconsModule\n ]\n }]\n }] });\n\nconst templateDirectives = [\n StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective\n];\nconst exportedModules$4 = [\n StepperComponent,\n StepperCustomMessagesComponent,\n ...templateDirectives\n];\nconst declarations$4 = [\n StepperStepComponent,\n StepperListComponent,\n LocalizedStepperMessagesDirective,\n ...exportedModules$4\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Stepper component.\n */\nclass StepperModule {\n}\nStepperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStepperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperModule, declarations: [StepperStepComponent,\n StepperListComponent,\n LocalizedStepperMessagesDirective, StepperComponent,\n StepperCustomMessagesComponent, StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective], imports: [CommonModule, ProgressBarModule, IconsModule], exports: [StepperComponent,\n StepperCustomMessagesComponent, StepperStepTemplateDirective,\n StepperLabelTemplateDirective,\n StepperIndicatorTemplateDirective] });\nStepperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperModule, imports: [[CommonModule, ProgressBarModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StepperModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$4],\n exports: [exportedModules$4],\n imports: [CommonModule, ProgressBarModule, IconsModule]\n }]\n }] });\n\nconst exportedModules$3 = [\n TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective,\n TabTemplateDirective\n];\nconst declarations$3 = [\n ...exportedModules$3,\n TabStripScrollableButtonComponent\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the TabStrip component.\n *\n * The module registers:\n * - `TabStripComponent`—The `TabStrip` component class.\n * - `TabStripTabComponent`—The `TabStripTab` component class.\n * - `TabContentDirective`—The tab content directive used on the `` tag.\n * - `TabTitleDirective`—The tab title directive used on the `` tag.\n */\nclass TabStripModule {\n}\nTabStripModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTabStripModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripModule, declarations: [TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective,\n TabTemplateDirective, TabStripScrollableButtonComponent], imports: [CommonModule, ResizeSensorModule, IconsModule, ButtonModule, WatermarkModule], exports: [TabStripComponent,\n TabStripTabComponent,\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabStripCustomMessagesComponent,\n LocalizedTabStripMessagesDirective,\n TabTemplateDirective] });\nTabStripModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripModule, imports: [[CommonModule, ResizeSensorModule, IconsModule, ButtonModule, WatermarkModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TabStripModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$3],\n exports: [exportedModules$3],\n imports: [CommonModule, ResizeSensorModule, IconsModule, ButtonModule, WatermarkModule]\n }]\n }] });\n\nconst exportedModules$2 = [\n TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective\n];\nconst declarations$2 = [\n ...exportedModules$2\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the TileLayout component.\n *\n * The module registers:\n * - `TileLayoutComponent`—The `TileLayoutComponent` component class.\n * - `TileLayoutItemComponent`—The `TileLayoutItemComponent` component class.\n * - `TileLayoutItemHeaderComponent`—The `TileLayoutItemHeaderComponent` component class.\n * - `TileLayoutItemBodyComponent`—The `TileLayoutItemBodyComponent` component class.\n */\nclass TileLayoutModule {\n}\nTileLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTileLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutModule, declarations: [TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective], imports: [CommonModule, WatermarkModule], exports: [TileLayoutComponent,\n TileLayoutItemComponent,\n TileLayoutItemHeaderComponent,\n TileLayoutItemBodyComponent,\n TileLayoutResizeHandleDirective] });\nTileLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutModule, imports: [[CommonModule, WatermarkModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TileLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$2],\n imports: [CommonModule, WatermarkModule]\n }]\n }] });\n\n/**\n * @hidden\n */\nconst VERTICAL_SUFFIX = {\n top: 'start',\n middle: 'center',\n bottom: 'end',\n stretch: 'stretch'\n};\n/**\n * @hidden\n */\nconst JUSTIFY_PREFIX = `k-justify-content`;\n/**\n * @hidden\n */\nconst GRID_JUSTIFY_PREFIX = `k-justify-items`;\n/**\n * @hidden\n */\nconst ALIGN_PREFIX = `k-align-items`;\n/**\n * @hidden\n */\nconst normalizeGap = (gap) => {\n if (typeof gap === 'number' || typeof gap === 'string') {\n return { cols: gap, rows: gap };\n }\n else {\n const parsedGap = {};\n parsedGap.rows = gap.rows ? gap.rows : 0;\n parsedGap.cols = gap.cols ? gap.cols : 0;\n return parsedGap;\n }\n};\n/**\n * @hidden\n */\nconst generateGapStyle = (gap) => {\n if (gap.rows === gap.cols) {\n return typeof gap.rows === 'number' ? `${gap.rows}px` : gap.rows;\n }\n else {\n const rowStyle = `${typeof gap.rows === 'number' ? gap.rows + 'px' : gap.rows}`;\n const colStyle = `${typeof gap.cols === 'number' ? gap.cols + 'px' : gap.cols}`;\n return `${rowStyle} ${colStyle}`;\n }\n};\n/**\n * @hidden\n */\nconst generateGridStyle = (items, itemType) => {\n const styling = [];\n items.forEach((item) => {\n if (typeof item === 'number') {\n styling.push(`${item}px`);\n }\n else if (typeof item === 'string') {\n styling.push(item);\n }\n else {\n if (itemType === 'rows') {\n const rowHeight = item.height;\n if (rowHeight) {\n styling.push(typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight);\n }\n else {\n styling.push('0px');\n }\n }\n else {\n const colWidth = item.width;\n if (colWidth) {\n styling.push(typeof colWidth === 'number' ? `${colWidth}px` : colWidth);\n }\n else {\n styling.push('0px');\n }\n }\n }\n });\n return styling;\n};\n/**\n * @hidden\n */\nconst validateGridLayoutRowsCols = (arr) => {\n for (const el of arr) {\n const isNum = typeof el === 'number';\n const isStr = typeof el === 'string';\n const isObject = typeof el === 'object' && el !== null;\n if (!isNum && !isStr && !isObject) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Represents the [Kendo UI StackLayout component for Angular]({% slug overview_stacklayout %}).\n */\nclass StackLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gap between the inner StackLayout elements. The default value is `0`\n * ([see example]({% slug layout_stacklayout %}#toc-gaps)).\n */\n this.gap = 0;\n /**\n * Specifies the orientation of the StackLayout\n * ([see example]({% slug layout_stacklayout %}#toc-orientation)).\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner StackLayout elements\n * ([see example]({% slug layout_stacklayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('orientation', changes)) {\n this.handleAlignClasses();\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n if (this.orientation === 'horizontal') {\n this.justifyClass = `${JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n }\n else {\n this.justifyClass = `${JUSTIFY_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.alignClass = `${ALIGN_PREFIX}-${this.align.horizontal}`;\n }\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n const parsedGap = isNumber(this.gap) ? `${this.gap}px` : this.gap;\n this.renderer.setStyle(this.element.nativeElement, 'gap', parsedGap);\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nStackLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nStackLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: StackLayoutComponent, selector: \"kendo-stacklayout\", inputs: { align: \"align\", gap: \"gap\", orientation: \"orientation\" }, host: { properties: { \"class.k-stack-layout\": \"this.hostClass\", \"class.k-hstack\": \"this.horizontalClass\", \"class.k-vstack\": \"this.verticalClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stacklayout'\n }\n ], exportAs: [\"kendoStackLayout\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoStackLayout',\n selector: 'kendo-stacklayout',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.stacklayout'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-stack-layout']\n }], horizontalClass: [{\n type: HostBinding,\n args: ['class.k-hstack']\n }], verticalClass: [{\n type: HostBinding,\n args: ['class.k-vstack']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], align: [{\n type: Input\n }], gap: [{\n type: Input\n }], orientation: [{\n type: Input\n }] } });\n\nconst exportedModules$1 = [\n StackLayoutComponent\n];\nconst declarations$1 = [\n ...exportedModules$1\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the StackLayout component.\n */\nclass StackLayoutModule {\n}\nStackLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nStackLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutModule, declarations: [StackLayoutComponent], imports: [CommonModule], exports: [StackLayoutComponent] });\nStackLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: StackLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedModules$1],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [Kendo UI GridLayout component for Angular]({% slug overview_gridlayout %}).\n */\nclass GridLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gaps between the elements. The default value is `0`\n * ([see example]({% slug layout_gridlayout %}#toc-gaps)).\n */\n this.gap = 0;\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner GridLayout elements\n * ([see example]({% slug layout_gridlayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.handleGridTemplateStyling('rows');\n this.handleGridTemplateStyling('cols');\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('rows', changes)) {\n this.handleGridTemplateStyling('rows');\n }\n if (isChanged('cols', changes)) {\n this.handleGridTemplateStyling('cols');\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n this.justifyClass = `${GRID_JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n const parsedGap = normalizeGap(this.gap);\n const gapStyle = generateGapStyle(parsedGap);\n this.renderer.setStyle(this.element.nativeElement, 'gap', gapStyle);\n }\n handleGridTemplateStyling(type) {\n if (!isPresent(this[type])) {\n return;\n }\n const isValid = validateGridLayoutRowsCols(this[type]);\n if (!isValid && isDevMode()) {\n const valueType = type === 'rows' ? 'GridLayoutRowSize' : 'GridLayoutColSize';\n throw new Error(`The provided ${type} value contains invalid elements. The array supports values of type number, string or ${valueType}.`);\n }\n const gridTemplateStyle = type === 'rows' ? 'grid-template-rows' : 'grid-template-columns';\n const gridStyle = generateGridStyle(this[type], type);\n this.renderer.setStyle(this.element.nativeElement, gridTemplateStyle, gridStyle.join(' '));\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n}\nGridLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nGridLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: GridLayoutComponent, selector: \"kendo-gridlayout\", inputs: { rows: \"rows\", cols: \"cols\", gap: \"gap\", align: \"align\" }, host: { properties: { \"class.k-grid-layout\": \"this.hostClass\", \"attr.dir\": \"this.dir\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.gridlayout'\n }\n ], exportAs: [\"kendoGridLayout\"], usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoGridLayout',\n selector: 'kendo-gridlayout',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.gridlayout'\n }\n ],\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-grid-layout']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], rows: [{\n type: Input\n }], cols: [{\n type: Input\n }], gap: [{\n type: Input\n }], align: [{\n type: Input\n }] } });\n\nclass GridLayoutItemComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n }\n ngOnInit() {\n this.setItemStyle();\n }\n ngOnChanges() {\n this.setItemStyle();\n }\n setItemStyle() {\n const row = this.row || 'auto';\n const col = this.col || 'auto';\n const rowSpan = this.rowSpan ? `span ${this.rowSpan}` : 'auto';\n const colSpan = this.colSpan ? `span ${this.colSpan}` : 'auto';\n const gridAreaStyle = `${row} / ${col} / ${rowSpan} / ${colSpan}`;\n this.renderer.setStyle(this.element.nativeElement, 'grid-area', gridAreaStyle);\n }\n}\nGridLayoutItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutItemComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nGridLayoutItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: GridLayoutItemComponent, selector: \"kendo-gridlayout-item\", inputs: { row: \"row\", col: \"col\", rowSpan: \"rowSpan\", colSpan: \"colSpan\" }, usesOnChanges: true, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutItemComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-gridlayout-item',\n template: `\n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { row: [{\n type: Input\n }], col: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], colSpan: [{\n type: Input\n }] } });\n\nconst exportedModules = [\n GridLayoutComponent,\n GridLayoutItemComponent\n];\nconst declarations = [\n ...exportedModules\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the GridLayout component.\n */\nclass GridLayoutModule {\n}\nGridLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGridLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutModule, declarations: [GridLayoutComponent,\n GridLayoutItemComponent], imports: [CommonModule], exports: [GridLayoutComponent,\n GridLayoutItemComponent] });\nGridLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: GridLayoutModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Layout components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Layout module\n * import { LayoutModule } from '@progress/kendo-angular-layout';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LayoutModule], // import Layout module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LayoutModule, exports: [AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule] });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LayoutModule, imports: [AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n AvatarModule,\n CardModule,\n DrawerModule,\n PanelBarModule,\n ExpansionPanelModule,\n SplitterModule,\n StepperModule,\n TabStripModule,\n TileLayoutModule,\n StackLayoutModule,\n GridLayoutModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AvatarComponent, AvatarCustomMessagesComponent, AvatarModule, CardAction, CardActionsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardMediaDirective, CardModule, CardSeparatorDirective, CardSubtitleDirective, CardTitleDirective, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerFooterTemplateDirective, DrawerHeaderTemplateDirective, DrawerItemTemplateDirective, DrawerModule, DrawerSelectEvent, DrawerTemplateDirective, ExpansionPanelActionEvent, ExpansionPanelComponent, ExpansionPanelModule, ExpansionPanelTitleDirective, GridLayoutComponent, GridLayoutItemComponent, GridLayoutModule, LayoutModule, LocalizedAvatarMessagesDirective, LocalizedStepperMessagesDirective, LocalizedTabStripMessagesDirective, PanelBarCollapseEvent, PanelBarComponent, PanelBarContentDirective, PanelBarExpandEvent, PanelBarExpandMode, PanelBarItemClickEvent, PanelBarItemComponent, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarModule, PanelBarSelectEvent, PanelBarStateChangeEvent, SelectEvent, SplitterComponent, SplitterModule, SplitterPaneComponent, StackLayoutComponent, StackLayoutModule, StepperActivateEvent, StepperComponent, StepperCustomMessagesComponent, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperModule, StepperStepTemplateDirective, TabCloseEvent, TabComponent, TabContentDirective, TabStripComponent, TabStripCustomMessagesComponent, TabStripModule, TabStripTabComponent, TabTemplateDirective, TabTitleDirective, TileLayoutComponent, TileLayoutItemBodyComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TileLayoutModule, TileLayoutReorderEvent, TileLayoutResizeEvent, TileLayoutResizeHandleDirective };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Component, HostBinding, Input, NgModule, Directive, Optional, EventEmitter, Output, ViewChildren, isDevMode, ElementRef, ViewChild, ContentChild } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i3 from '@progress/kendo-angular-common';\nimport { focusableSelector, closestInScope as closestInScope$1, isDocumentAvailable, Keys, ResizeSensorModule, isPresent as isPresent$1 } from '@progress/kendo-angular-common';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { fromEvent, merge, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { filter, map, startWith, share, take } from 'rxjs/operators';\nimport * as i1$1 from '@progress/kendo-angular-icons';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport { chevronRightIcon, chevronLeftIcon } from '@progress/kendo-svg-icons';\nimport * as i2$1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-navigation',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142257,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * Represents the [Kendo UI AppBar component for Angular]({% slug overview_appbar %}).\n * Used to display information, actions, branding titles and additional navigation on the current screen.\n */\nclass AppBarComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the position of the AppBar\n * ([see example]({% slug positioning_appbar %}#toc-position)).\n *\n * * The possible values are:\n * * `top` (Default)—Positions the AppBar at the top of the content.\n * Setting the `position` property to `top` requires adding the Appbar component before the page content.\n * The position property applies CSS `top: 0` style in [`fixed mode`]({% slug api_navigation_appbarcomponent %}#toc-positionMode) and also adds a `box-shadow` to the bottom of the AppBar.\n *\n * * `bottom`—Positions the AppBar at the bottom of the content.\n * Setting the `position` property to `bottom` requires adding the Appbar component after the page content.\n * The position property applies CSS `bottom: 0` style in [`fixed mode`]({% slug api_navigation_appbarcomponent %}#toc-positionMode) and also adds a `box-shadow ` to the top of the AppBar.\n *\n */\n this.position = 'top';\n /**\n * Specifies the positionMode of the AppBar\n * ([see example]({% slug positioning_appbar %}#toc-positionmode)).\n *\n * * The possible values are:\n * * `static` (Default)—Does not position the AppBar in any special way. It is positioned according to the normal flow of the page.\n * * `sticky`—Positions the AppBar based on the user's scroll position. A sticky element toggles between static and fixed CSS [`position`](https://developer.mozilla.org/en-US/docs/Web/CSS/position) property, depending on the scroll position.\n * * `fixed`—Positions the AppBar relative to the viewport. It always stays in the same place even if the page is scrolled.\n */\n this.positionMode = 'static';\n /**\n * Specifies the theme color of the AppBar.\n * The theme color will be applied as background color of the component.\n *\n *\n * * The possible values are:\n * * `light` (Default)—Applies coloring based on light theme color.\n * * `dark`—Applies coloring based on dark theme color.\n * * `inherit`— Applies inherited coloring value.\n *\n */\n this.themeColor = 'light';\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get topClass() {\n return this.position === 'top';\n }\n get bottomClass() {\n return this.position === 'bottom';\n }\n get stickyClass() {\n return this.positionMode === 'sticky';\n }\n get fixedClass() {\n return this.positionMode === 'fixed';\n }\n get staticClass() {\n return this.positionMode === 'static';\n }\n get lightClass() {\n return this.themeColor === 'light';\n }\n get darkClass() {\n return this.themeColor === 'dark';\n }\n get inheritClass() {\n return this.themeColor === 'inherit';\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n}\nAppBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nAppBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: AppBarComponent, selector: \"kendo-appbar\", inputs: { position: \"position\", positionMode: \"positionMode\", themeColor: \"themeColor\" }, host: { properties: { \"class.k-appbar\": \"this.hostClass\", \"class.k-appbar-top\": \"this.topClass\", \"class.k-appbar-bottom\": \"this.bottomClass\", \"class.k-appbar-sticky\": \"this.stickyClass\", \"class.k-appbar-fixed\": \"this.fixedClass\", \"class.k-appbar-static\": \"this.staticClass\", \"class.k-appbar-light\": \"this.lightClass\", \"class.k-appbar-dark\": \"this.darkClass\", \"class.k-appbar-inherit\": \"this.inheritClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.appbar.component'\n }\n ], exportAs: [\"kendoAppBar\"], ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoAppBar',\n selector: 'kendo-appbar',\n template: `\n \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.appbar.component'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-appbar']\n }], topClass: [{\n type: HostBinding,\n args: ['class.k-appbar-top']\n }], bottomClass: [{\n type: HostBinding,\n args: ['class.k-appbar-bottom']\n }], stickyClass: [{\n type: HostBinding,\n args: ['class.k-appbar-sticky']\n }], fixedClass: [{\n type: HostBinding,\n args: ['class.k-appbar-fixed']\n }], staticClass: [{\n type: HostBinding,\n args: ['class.k-appbar-static']\n }], lightClass: [{\n type: HostBinding,\n args: ['class.k-appbar-light']\n }], darkClass: [{\n type: HostBinding,\n args: ['class.k-appbar-dark']\n }], inheritClass: [{\n type: HostBinding,\n args: ['class.k-appbar-inherit']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], position: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI AppBarSection component for Angular]({% slug contentarrangement_appbar %}#toc-sections).\n *\n * @example\n *\n * ```ts-no-run\n * * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

    Page Title

    \n *
    \n *
    \n * `\n * })\n * class AppComponent {}\n */\nclass AppBarSectionComponent {\n constructor() {\n this.hostClass = true;\n }\n}\nAppBarSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nAppBarSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: AppBarSectionComponent, selector: \"kendo-appbar-section\", host: { properties: { \"class.k-appbar-section\": \"this.hostClass\" } }, ngImport: i0, template: `\n \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarSectionComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-appbar-section',\n template: `\n \n `\n }]\n }], propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-appbar-section']\n }] } });\n\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst outerWidth = (element) => {\n const style = getComputedStyle(element);\n let width = parseFloat(style.width);\n width += (parseFloat(style.marginLeft) || 0) + (parseFloat(style.marginRight) || 0);\n return width;\n};\n/**\n * @hidden\n */\nconst getFirstAndLastFocusable = (parent) => {\n const all = getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n};\n/**\n * @hidden\n */\nconst getAllFocusableChildren = (parent) => {\n return parent.querySelectorAll(focusableSelector);\n};\n/**\n * @hidden\n */\nlet idx = 0;\n/**\n * @hidden\n */\nconst hexColorRegex = /^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;\n/**\n * @hidden\n */\nconst getId = (prefix) => {\n return `${prefix}${++idx}`;\n};\n/**\n * @hidden\n */\nconst ACTIONSHEET_ITEM_INDEX_ATTRIBUTE = 'kendo-actionsheet-item-index';\n/**\n * @hidden\n */\nconst getActionSheetItemIndex = (target, targetAttr, scope) => {\n const item = closestItem$1(target, targetAttr, scope);\n if (item) {\n return itemIndex$1(item, targetAttr);\n }\n};\nconst itemIndex$1 = (item, indexAttr) => +item.getAttribute(indexAttr);\nconst hasItemIndex$1 = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\nconst closestItem$1 = (target, targetAttr, scope) => closestInScope$1(target, el => hasItemIndex$1(el, targetAttr), scope);\n\n/**\n * Represents the [Kendo UI AppBarSpacer component for Angular]({% slug contentarrangement_appbar %}#toc-spacings).\n * Used to give additional white space between the AppBar sections and provides a way for customizing its width.\n *\n * @example\n *\n * ```ts-no-run\n * * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n *\n * \n *\n * \n *

    Page Title

    \n *
    \n *
    \n * `\n * })\n * class AppComponent {}\n * ```\n */\nclass AppBarSpacerComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n }\n get sizedClass() {\n return isPresent(this.width);\n }\n ngAfterViewInit() {\n if (isPresent(this.width)) {\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, 'flexBasis', this.width);\n }\n }\n}\nAppBarSpacerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarSpacerComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nAppBarSpacerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: AppBarSpacerComponent, selector: \"kendo-appbar-spacer\", inputs: { width: \"width\" }, host: { properties: { \"class.k-appbar-spacer\": \"this.hostClass\", \"class.k-appbar-spacer-sized\": \"this.sizedClass\" } }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarSpacerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-appbar-spacer',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-appbar-spacer']\n }], sizedClass: [{\n type: HostBinding,\n args: ['class.k-appbar-spacer-sized']\n }], width: [{\n type: Input\n }] } });\n\nconst exportedModules$2 = [\n AppBarComponent,\n AppBarSectionComponent,\n AppBarSpacerComponent\n];\nconst declarations$3 = [\n ...exportedModules$2\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the AppBar component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the AppBar module\n * import { AppBarModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, AppBarModule], // import AppBar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass AppBarModule {\n}\nAppBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAppBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarModule, declarations: [AppBarComponent,\n AppBarSectionComponent,\n AppBarSpacerComponent], imports: [CommonModule], exports: [AppBarComponent,\n AppBarSectionComponent,\n AppBarSpacerComponent] });\nAppBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AppBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$3],\n exports: [exportedModules$2],\n imports: [CommonModule]\n }]\n }] });\n\n/**\n * Represents a template that defines the content of a Breadcrumb item.\n * To define the template, nest an `` tag with the `kendoBreadCrumbItemTemplate` directive inside the `` tag.\n *\n * For more information and example refer to the [Templates]({% slug templates_breadcrumb %}) article.\n */\nclass BreadCrumbItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nBreadCrumbItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nBreadCrumbItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BreadCrumbItemTemplateDirective, selector: \"[kendoBreadCrumbItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoBreadCrumbItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nconst BREADCRUMB_ITEM_INDEX = 'data-kendo-breadcrumb-index';\n/**\n * @hidden\n */\nconst DEFAULT_SIZE = 'medium';\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-breadcrumb-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-breadcrumb-${SIZES[newValue]}` : ''\n };\n default:\n break;\n }\n};\n\n/**\n * @hidden\n */\nclass BreadCrumbItemComponent {\n constructor(el) {\n this.el = el;\n this.index = -1;\n this.hostClasses = true;\n this.disabled = false;\n }\n get isRootItem() {\n return this.item.context.isFirst;\n }\n get isDisabled() {\n return this.disabled || null;\n }\n get isLastItem() {\n return this.item.context.isLast;\n }\n ngOnInit() {\n this.disabled = this.item.data && (this.item.data.disabled || this.item.context.isLast);\n }\n ngAfterViewInit() {\n if (isDocumentAvailable()) {\n this.width = outerWidth(this.el.nativeElement);\n }\n }\n onImageLoad() {\n if (isDocumentAvailable()) {\n this.width = outerWidth(this.el.nativeElement);\n }\n }\n}\nBreadCrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nBreadCrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BreadCrumbItemComponent, selector: \"[kendoBreadCrumbItem]\", inputs: { item: \"item\", collapseMode: \"collapseMode\", index: \"index\", itemTemplate: \"itemTemplate\" }, host: { properties: { \"class.k-breadcrumb-item\": \"this.hostClasses\", \"class.k-breadcrumb-root-item\": \"this.isRootItem\", \"attr.aria-disabled\": \"this.isDisabled\", \"class.k-breadcrumb-last-item\": \"this.isLastItem\" } }, ngImport: i0, template: `\n \n \n \n\n \n \n \n\n \n \n \n \n \n {{ item.data.text }}\n \n \n \n\n \n \n \n `, isInline: true, components: [{ type: i1$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoBreadCrumbItem]',\n template: `\n \n \n \n\n \n \n \n\n \n \n \n \n \n {{ item.data.text }}\n \n
    \n \n\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{\n type: Input\n }], collapseMode: [{\n type: Input\n }], index: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-item']\n }], isRootItem: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-root-item']\n }], isDisabled: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }], isLastItem: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-last-item']\n }] } });\n\nconst closestInScope = (target, targetAttr, predicate, scope) => {\n while (target && target !== scope && !predicate(target, targetAttr)) {\n target = target.parentNode;\n }\n if (target !== scope) {\n return target;\n }\n};\nconst hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\n/**\n * @hidden\n */\nconst itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);\n/**\n * @hidden\n */\nconst closestItem = (target, targetAttr, scope) => closestInScope(target, targetAttr, hasItemIndex, scope);\n\nconst DEFAULT_ICON = 'chevron-right';\nconst DEFAULT_RTL_ICON = 'chevron-left';\nconst DEFAULT_SVG_ICON = chevronRightIcon;\nconst DEFAULT_RTL_SVG_ICON = chevronLeftIcon;\n/**\n * @hidden\n */\nclass BreadCrumbSeparatorDirective {\n constructor(el, localization) {\n this.el = el;\n this.localization = localization;\n this.defaultClasses = true;\n this.ariaHidden = true;\n this.direction = 'ltr';\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n }\n set icon(icon) {\n if (isPresent(icon)) {\n this._icon = icon;\n this.hasDefaultIcon = false;\n }\n else {\n this._icon = this.direction === 'ltr' ? DEFAULT_ICON : DEFAULT_RTL_ICON;\n this.hasDefaultIcon = true;\n }\n }\n get icon() {\n return this._icon;\n }\n set svgIcon(svgIcon) {\n if (isPresent(svgIcon)) {\n this._svgIcon = svgIcon;\n this.hasDefaultSvgIcon = false;\n }\n else {\n this._svgIcon = this.direction === 'ltr' ? DEFAULT_SVG_ICON : DEFAULT_RTL_SVG_ICON;\n this.hasDefaultSvgIcon = true;\n }\n }\n get svgIcon() {\n return this._svgIcon;\n }\n ngOnInit() {\n this.localizationChangesSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n if (this.hasDefaultIcon) {\n this.icon = undefined;\n }\n if (this.hasDefaultSvgIcon) {\n this.svgIcon = undefined;\n }\n });\n }\n ngOnDestroy() {\n this.localizationChangesSubscription.unsubscribe();\n }\n}\nBreadCrumbSeparatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbSeparatorDirective, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nBreadCrumbSeparatorDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BreadCrumbSeparatorDirective, selector: \"[kendoBreadCrumbSeparator]\", inputs: { icon: \"icon\", svgIcon: \"svgIcon\" }, host: { properties: { \"class.k-breadcrumb-delimiter-icon\": \"this.defaultClasses\", \"class.k-icon\": \"this.defaultClasses\", \"attr.aria-hidden\": \"this.ariaHidden\" } }, ngImport: i0, template: `\n \n \n `, isInline: true, components: [{ type: i1$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbSeparatorDirective, decorators: [{\n type: Component,\n args: [{\n selector: '[kendoBreadCrumbSeparator]',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { icon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], defaultClasses: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-delimiter-icon']\n }, {\n type: HostBinding,\n args: ['class.k-icon']\n }], ariaHidden: [{\n type: HostBinding,\n args: ['attr.aria-hidden']\n }] } });\n\n/**\n * @hidden\n */\nclass BreadCrumbListComponent {\n constructor(el, zone) {\n this.el = el;\n this.zone = zone;\n this.items = [];\n this.collapseMode = 'auto';\n this.itemClick = new EventEmitter();\n const element = this.el.nativeElement;\n this.isRootItemContainer = element.classList.contains('k-breadcrumb-root-item-container');\n this.zone.runOutsideAngular(() => {\n const click$ = fromEvent(element, 'click');\n const enterKey$ = fromEvent(element, 'keydown').pipe(filter((ev /* KeyboardEvent causes lint error */) => ev.keyCode === Keys.Enter));\n this.domEventsSubscription = merge(click$, enterKey$)\n .pipe(map((ev) => ev.target), filter(e => !e.classList.contains('k-breadcrumb-delimiter-icon')), // do not trigger handler when a separator is clicked\n map(e => this.getItemIndex(e)), filter(isPresent), map(i => parseInt(i, 10)), map(i => this.items[i]), filter(item => !item.data.disabled && !item.context.isLast), map(item => item.data))\n .subscribe(el => {\n this.zone.run(() => this.itemClick.emit(el));\n });\n });\n }\n ngOnDestroy() {\n this.domEventsSubscription.unsubscribe();\n }\n getItemIndex(target) {\n const item = closestItem(target, BREADCRUMB_ITEM_INDEX, this.el.nativeElement);\n if (item) {\n return itemIndex(item, BREADCRUMB_ITEM_INDEX);\n }\n }\n}\nBreadCrumbListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nBreadCrumbListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BreadCrumbListComponent, selector: \"[kendoBreadCrumbList]\", inputs: { items: \"items\", itemTemplate: \"itemTemplate\", collapseMode: \"collapseMode\", separatorIcon: \"separatorIcon\", separatorSVGIcon: \"separatorSVGIcon\" }, outputs: { itemClick: \"itemClick\" }, viewQueries: [{ propertyName: \"renderedItems\", predicate: BreadCrumbItemComponent, descendants: true }], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n \", isInline: true, components: [{ type: BreadCrumbItemComponent, selector: \"[kendoBreadCrumbItem]\", inputs: [\"item\", \"collapseMode\", \"index\", \"itemTemplate\"] }, { type: BreadCrumbSeparatorDirective, selector: \"[kendoBreadCrumbSeparator]\", inputs: [\"icon\", \"svgIcon\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoBreadCrumbList]',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { items: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], collapseMode: [{\n type: Input\n }], separatorIcon: [{\n type: Input\n }], separatorSVGIcon: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], renderedItems: [{\n type: ViewChildren,\n args: [BreadCrumbItemComponent]\n }] } });\n\nconst getCollapsed = (itemComponent) => itemComponent.item.context.collapsed;\n/**\n * @hidden\n */\nconst collapsed = (itemComponent) => getCollapsed(itemComponent) === true;\n/**\n * @hidden\n */\nconst expanded = (itemComponent) => getCollapsed(itemComponent) === false;\nconst toggleFirst = (collapsed) => (itemComponents) => (itemComponents.find(ic => getCollapsed(ic) === collapsed).item.context.collapsed = !collapsed);\n/**\n * @hidden\n */\nconst collapseFirst = toggleFirst(false);\n/**\n * @hidden\n */\nconst expandFirst = toggleFirst(true);\n\n/* eslint-disable @typescript-eslint/no-inferrable-types */\n/**\n * Represents the [Kendo UI Breadcrumb component for Angular]({% slug overview_breadcrumb %}).\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: BreadCrumbItem[] = [\n * { text: 'Home', title: 'Home', icon: 'home' },\n * { text: 'Kids', title: 'Kids' },\n * { text: '8y-16y', title: '8y-16y', disabled: true },\n * { text: 'New collection', title: 'New collection' },\n * { text: 'Jeans', title: 'Jeans' }\n * ];\n *\n * public onItemClick(item: BreadCrumbItem): void {\n * console.log(item);\n * }\n * }\n * ```\n */\nclass BreadCrumbComponent {\n constructor(localization, el, cdr, zone, renderer) {\n this.localization = localization;\n this.el = el;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n /**\n * Fires when a Breadcrumb item is clicked. The event will not be fired by disabled items and the last item.\n */\n this.itemClick = new EventEmitter();\n this.hostClasses = true;\n this.hostAriaLabel = 'Breadcrumb';\n this._items = [];\n this._collapseMode = 'auto';\n this._size = DEFAULT_SIZE;\n this.updateItems = new ReplaySubject();\n this.afterViewInit = new Subject();\n this.subscriptions = new Subscription();\n this.direction = 'ltr';\n validatePackage(packageMetadata);\n const updateItems$ = this.updateItems.asObservable().pipe(startWith([]));\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.itemsData$ = updateItems$.pipe(map(items => items.filter(Boolean)), map(items => items.map((item, index, collection) => ({\n context: {\n collapsed: false,\n isLast: index === collection.length - 1,\n isFirst: index === 0\n },\n data: item\n }))), share());\n this.firstItem$ = updateItems$.pipe(map(items => {\n if (items.length > 0) {\n return [\n {\n context: {\n collapsed: false,\n isLast: items.length === 1,\n isFirst: true\n },\n data: items[0]\n }\n ];\n }\n return [];\n }), share());\n }\n /**\n * The collection of items that will be rendered in the Breadcrumb.\n */\n set items(items) {\n this._items = items || [];\n this.updateItems.next(this._items);\n }\n get items() {\n return this._items;\n }\n /**\n * Specifies the collapse mode of the Breadcrumb ([see example]({% slug collapse_modes_breadcrumb %})).\n *\n * The possible values are:\n * - `auto` (default)—items are automatically collapsed based on the width of the Breadcrumb.\n * - `wrap`—items are wrapped on multiple rows.\n * - `none`—all items are expanded on the same row.\n *\n * For more information and example refer to the [Collapse Modes]({% slug collapse_modes_breadcrumb %}) article.\n */\n set collapseMode(mode) {\n if (isDevMode() && ['auto', 'wrap', 'none'].indexOf(mode) < 0) {\n throw new Error('Invalid collapse mode. Allowed values are \"auto\", \"wrap\" or \"none\". \\nFor more details see https://www.telerik.com/kendo-angular-ui/components/navigation/api/BreadCrumbCollapseMode/');\n }\n this._collapseMode = mode || 'auto';\n this.updateItems.next(this.items);\n }\n get collapseMode() {\n return this._collapseMode;\n }\n /**\n * Specifies the padding of all Breadcrumb elements.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n get wrapMode() {\n return this.collapseMode === 'wrap';\n }\n get getDir() {\n return this.direction;\n }\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.handleClasses(this.size, 'size');\n }\n ngAfterViewInit() {\n this.attachResizeHandler();\n this.afterViewInit.next();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleResize() {\n const autoCollapseCandidates = [\n ...this.listComponent.renderedItems.toArray().filter(ri => !ri.item.context.isFirst && !ri.item.context.isLast)\n ];\n const componentWidth = Math.floor(outerWidth(this.el.nativeElement));\n const itemsContainerWidth = Math.round(this.itemsContainers\n .toArray()\n .map(el => outerWidth(el.nativeElement))\n .reduce((acc, curr) => acc + curr, 0));\n const nextExpandWidth = Math.ceil(([...autoCollapseCandidates].reverse().find(collapsed) || { width: 0 }).width);\n // // shrink\n if (componentWidth <= itemsContainerWidth && autoCollapseCandidates.find(expanded)) {\n collapseFirst(autoCollapseCandidates);\n // needed by resize sensor\n this.cdr.detectChanges();\n return this.handleResize();\n }\n // expand\n if (componentWidth > itemsContainerWidth + nextExpandWidth && autoCollapseCandidates.find(collapsed)) {\n expandFirst([...autoCollapseCandidates].reverse());\n // needed by resize sensor\n this.cdr.detectChanges();\n return this.handleResize();\n }\n }\n shouldResize() {\n return isDocumentAvailable() && this.collapseMode === 'auto';\n }\n attachResizeHandler() {\n // resize when:\n // the component is initialized\n // the container is resized\n // items are added/removed\n this.subscriptions.add(merge(this.resizeSensor.resize, this.itemsData$, this.afterViewInit.asObservable())\n .pipe(filter(() => this.shouldResize()))\n .subscribe(() => {\n this.zone.runOutsideAngular(() => setTimeout(() => {\n this.zone.run(() => {\n if (this.listComponent) {\n this.handleResize();\n this.resizeSensor.acceptSize();\n }\n });\n }));\n }));\n }\n handleClasses(value, input) {\n const elem = this.el.nativeElement;\n const classes = getStylingClasses(input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n}\nBreadCrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nBreadCrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BreadCrumbComponent, selector: \"kendo-breadcrumb\", inputs: { items: \"items\", separatorIcon: \"separatorIcon\", separatorSVGIcon: \"separatorSVGIcon\", collapseMode: \"collapseMode\", size: \"size\" }, outputs: { itemClick: \"itemClick\" }, host: { properties: { \"class.k-breadcrumb\": \"this.hostClasses\", \"class.k-breadcrumb-wrap\": \"this.wrapMode\", \"attr.aria-label\": \"this.hostAriaLabel\", \"attr.dir\": \"this.getDir\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.breadcrumb'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: BreadCrumbItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"resizeSensor\", first: true, predicate: [\"resizeSensor\"], descendants: true, static: true }, { propertyName: \"listComponent\", first: true, predicate: BreadCrumbListComponent, descendants: true, static: true }, { propertyName: \"itemsContainers\", predicate: [\"itemsContainer\"], descendants: true, read: ElementRef }], exportAs: [\"kendoBreadCrumb\"], ngImport: i0, template: `\n \n \n \n `, isInline: true, components: [{ type: BreadCrumbListComponent, selector: \"[kendoBreadCrumbList]\", inputs: [\"items\", \"itemTemplate\", \"collapseMode\", \"separatorIcon\", \"separatorSVGIcon\"], outputs: [\"itemClick\"] }, { type: i3.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], pipes: { \"async\": i2.AsyncPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoBreadCrumb',\n selector: 'kendo-breadcrumb',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.breadcrumb'\n }\n ],\n template: `\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { items: [{\n type: Input\n }], separatorIcon: [{\n type: Input\n }], separatorSVGIcon: [{\n type: Input\n }], collapseMode: [{\n type: Input\n }], size: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: true }]\n }], itemsContainers: [{\n type: ViewChildren,\n args: ['itemsContainer', { read: ElementRef }]\n }], listComponent: [{\n type: ViewChild,\n args: [BreadCrumbListComponent, { static: true }]\n }], itemTemplate: [{\n type: ContentChild,\n args: [BreadCrumbItemTemplateDirective]\n }], hostClasses: [{\n type: HostBinding,\n args: ['class.k-breadcrumb']\n }], wrapMode: [{\n type: HostBinding,\n args: ['class.k-breadcrumb-wrap']\n }], hostAriaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }] } });\n\nconst templateDirectives$2 = [\n BreadCrumbItemTemplateDirective\n];\nconst exportedModules$1 = [\n BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent,\n ...templateDirectives$2\n];\nconst declarations$2 = [\n ...exportedModules$1,\n BreadCrumbSeparatorDirective\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the BreadCrumb component.\n * @example\n *\n * ```ts-no-run\n * // Import the BreadCrumb module\n * import { BreadCrumbModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BreadCrumbModule], // import BreadCrumb module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass BreadCrumbModule {\n}\nBreadCrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBreadCrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbModule, declarations: [BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent, BreadCrumbItemTemplateDirective, BreadCrumbSeparatorDirective], imports: [CommonModule, ResizeSensorModule, IconsModule], exports: [BreadCrumbComponent,\n BreadCrumbItemComponent,\n BreadCrumbListComponent, BreadCrumbItemTemplateDirective] });\nBreadCrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbModule, imports: [[CommonModule, ResizeSensorModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BreadCrumbModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$2],\n exports: [exportedModules$1],\n imports: [CommonModule, ResizeSensorModule, IconsModule]\n }]\n }] });\n\n/**\n * Represents a template that defines the item content of the BottomNavigation.\n * To define the template, nest an `` tag\n * with the `kendoBottomNavigationItemTemplate` directive inside the `` tag ([see example]({% slug templates_bottomnavigation %})).\n */\nclass BottomNavigationItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nBottomNavigationItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nBottomNavigationItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BottomNavigationItemTemplateDirective, selector: \"[kendoBottomNavigationItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoBottomNavigationItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass BottomNavigationItemComponent {\n get disabledClass() {\n return this.item.disabled;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n get tabindex() {\n return this.item.tabIndex ? this.item.tabIndex : 0;\n }\n get selectedClass() {\n return this.selectedIdx ? this.selectedIdx === this.index : this.item.selected;\n }\n get itemIcon() {\n return Boolean(this.item.icon || this.item.iconClass || this.item.svgIcon);\n }\n get iconClasses() {\n const kendoIcon = this.item.icon ? `k-icon k-i-${this.item.icon}` : '';\n const customIcon = this.item.iconClass ? this.item.iconClass : '';\n return `${kendoIcon} ${customIcon}`;\n }\n}\nBottomNavigationItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nBottomNavigationItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BottomNavigationItemComponent, selector: \"[kendoBottomNavigationItem]\", inputs: { itemTemplate: \"itemTemplate\", item: \"item\", index: \"index\", disabledComponent: \"disabledComponent\", selectedIdx: \"selectedIdx\", orientation: \"orientation\" }, host: { properties: { \"attr.aria-disabled\": \"this.disabledClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.aria-label\": \"this.label\", \"attr.tabindex\": \"this.tabindex\", \"attr.aria-current\": \"this.selectedClass\", \"class.k-selected\": \"this.selectedClass\" } }, ngImport: i0, template: `\n \n \n {{item.text}}\n \n \n \n `, isInline: true, components: [{ type: i1$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoBottomNavigationItem]',\n template: `\n \n \n {{item.text}}\n \n \n \n `\n }]\n }], propDecorators: { itemTemplate: [{\n type: Input\n }], item: [{\n type: Input\n }], index: [{\n type: Input\n }], disabledComponent: [{\n type: Input\n }], selectedIdx: [{\n type: Input\n }], orientation: [{\n type: Input\n }], disabledClass: [{\n type: HostBinding,\n args: ['attr.aria-disabled']\n }, {\n type: HostBinding,\n args: ['class.k-disabled']\n }], label: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], selectedClass: [{\n type: HostBinding,\n args: ['attr.aria-current']\n }, {\n type: HostBinding,\n args: ['class.k-selected']\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `select` event of the BottomNavigation.\n */\nclass BottomNavigationSelectEvent extends PreventableEvent {\n}\n\n/**\n * @hidden\n */\nconst BOTTOMNAVIGATION_ITEM_INDEX = 'data-kendo-bottomnavigation-index';\n/**\n * @hidden\n */\nconst colors = ['primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n\n/**\n * Represents the [Kendo UI BottomNavigation component for Angular]({% slug overview_bottomnavigation %}).\n *\n * @example\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\n * { text: 'Inbox', icon: 'envelop', selected: true },\n * { text: 'Calendar', icon: 'calendar'},\n * { text: 'Profile', icon: 'user'}\n * ]\n * }\n * ```\n */\nclass BottomNavigationComponent {\n constructor(localization, hostElement, ngZone, changeDetector, renderer) {\n this.localization = localization;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.renderer = renderer;\n /**\n * Sets a top border to the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * @default false\n */\n this.border = false;\n /**\n * Disables the whole BottomNavigation.\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Fires each time an item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * @hidden\n */\n this.hostClass = true;\n /**\n * @hidden\n */\n this.role = 'navigation';\n this._fill = 'flat';\n this._itemFlow = 'vertical';\n this._positionMode = 'fixed';\n this._themeColor = 'primary';\n this._nativeHostElement = this.hostElement.nativeElement;\n this.subscriptions = new Subscription();\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * The fill style of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * * The possible values are:\n * * (Default) `flat`\n * * `solid`\n */\n set fill(fill) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this.fill}-${this.themeColor}`);\n this._fill = fill === 'solid' ? 'solid' : 'flat';\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._fill}`);\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this._fill}-${this.themeColor}`);\n }\n get fill() {\n return this._fill;\n }\n /**\n * Specifies how the icon and text label are positioned in the BottomNavigation items ([see example]({% slug items_bottomnavigation %}#toc-itemflow)).\n *\n * The possible values are:\n * * (Default) `vertical` - Renders the text below the icon.\n * * `horizontal` - Renders the icon and the text on the same line.\n */\n set itemFlow(itemFlow) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);\n this._itemFlow = itemFlow === 'horizontal' ? 'horizontal' : 'vertical';\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this._itemFlow}`);\n }\n get itemFlow() {\n return this._itemFlow;\n }\n /**\n * Specifies the position and behavior of the BottomNavigation when the page is scrollable ([see example]({% slug positioning_bottomnavigation %})).\n *\n * The possible values are:\n * * (Default) `fixed` - The BottomNavigation always stays at the bottom of the viewport, regardless of the page scroll position.\n * * `sticky` - Positions the BottomNavigation at the end of the scrollable container.\n */\n set positionMode(positionMode) {\n this.renderer.removeClass(this._nativeHostElement, `k-pos-${this.positionMode}`);\n this._positionMode = positionMode === 'sticky' ? 'sticky' : 'fixed';\n this.renderer.addClass(this._nativeHostElement, `k-pos-${this._positionMode}`);\n }\n get positionMode() {\n return this._positionMode;\n }\n /**\n * Specifies the theme color of the BottomNavigation ([see example]({% slug appearance_bottomnavigation %})).\n *\n * * The possible values are:\n * * (Default) `primary` - Applies coloring based on the primary theme color.\n * * `secondary` - Applies coloring based on the secondary theme color.\n * * `tertiary` - Applies coloring based on the tertiary theme color.\n * * `info` - Applies coloring based on the info theme color.\n * * `success` - Applies coloring based on the success theme color.\n * * `warning` - Applies coloring based on the warning theme color.\n * * `error` - Applies coloring based on the error theme color.\n * * `dark` - Applies coloring based on the dark theme color.\n * * `light` - Applies coloring based on the light theme color.\n * * `inverse` - Applies coloring based on the inverted theme color.\n */\n set themeColor(themeColor) {\n const newColor = colors.find(color => color === themeColor);\n if (newColor) {\n this.renderer.removeClass(this._nativeHostElement, `k-bottom-nav-${this.fill}-${this._themeColor}`);\n this._themeColor = themeColor;\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.fill}-${this._themeColor}`);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get disabledClass() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.initDomEvents();\n }\n /**\n * @hidden\n */\n ngAfterViewInit() {\n this.applyClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n selectItem(idx, args) {\n const eventArgs = new BottomNavigationSelectEvent({ ...args });\n this.select.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.selectedIdx = idx;\n }\n }\n applyClasses() {\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.fill}`);\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-item-flow-${this.itemFlow}`);\n this.renderer.addClass(this._nativeHostElement, `k-pos-${this.positionMode}`);\n this.renderer.addClass(this._nativeHostElement, `k-bottom-nav-${this.fill}-${this.themeColor}`);\n }\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(this._nativeHostElement, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n clickHandler(e) {\n const itemIdx = this.getBottomNavigationItemIndex(e.target);\n const item = this.items[itemIdx];\n if (!item) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: itemIdx,\n item: item,\n originalEvent: e,\n sender: this\n };\n this.ngZone.run(() => {\n this.selectItem(itemIdx, args);\n this.changeDetector.markForCheck();\n });\n }\n keyDownHandler(e) {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n this.clickHandler(e);\n }\n getBottomNavigationItemIndex(target) {\n const item = closestItem(target, BOTTOMNAVIGATION_ITEM_INDEX, this._nativeHostElement);\n if (item) {\n return itemIndex(item, BOTTOMNAVIGATION_ITEM_INDEX);\n }\n }\n}\nBottomNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nBottomNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: BottomNavigationComponent, selector: \"kendo-bottomnavigation\", inputs: { items: \"items\", border: \"border\", disabled: \"disabled\", fill: \"fill\", itemFlow: \"itemFlow\", positionMode: \"positionMode\", themeColor: \"themeColor\" }, outputs: { select: \"select\" }, host: { properties: { \"class.k-bottom-nav\": \"this.hostClass\", \"class.k-bottom-nav-border\": \"this.borderClass\", \"class.k-disabled\": \"this.disabledClass\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.bottomnavigation'\n }\n ], queries: [{ propertyName: \"itemTemplate\", first: true, predicate: BottomNavigationItemTemplateDirective, descendants: true }], exportAs: [\"kendoBottomNavigation\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \", isInline: true, components: [{ type: BottomNavigationItemComponent, selector: \"[kendoBottomNavigationItem]\", inputs: [\"itemTemplate\", \"item\", \"index\", \"disabledComponent\", \"selectedIdx\", \"orientation\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoBottomNavigation',\n selector: 'kendo-bottomnavigation',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.bottomnavigation'\n }\n ],\n template: `\n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { items: [{\n type: Input\n }], border: [{\n type: Input\n }], disabled: [{\n type: Input\n }], fill: [{\n type: Input\n }], itemFlow: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], select: [{\n type: Output\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-bottom-nav']\n }], borderClass: [{\n type: HostBinding,\n args: ['class.k-bottom-nav-border']\n }], disabledClass: [{\n type: HostBinding,\n args: ['class.k-disabled']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], itemTemplate: [{\n type: ContentChild,\n args: [BottomNavigationItemTemplateDirective, { static: false }]\n }] } });\n\nconst templateDirectives$1 = [BottomNavigationItemTemplateDirective];\nconst exportedComponents = [BottomNavigationComponent, ...templateDirectives$1];\nconst declarations$1 = [BottomNavigationItemComponent, ...exportedComponents];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the BottomNavigation component.\n * @example\n *\n * ```ts-no-run\n * // Import the BottomNavigation module\n * import { BottomNavigationModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, BottomNavigationModule], // import BottomNavigation module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass BottomNavigationModule {\n}\nBottomNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBottomNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationModule, declarations: [BottomNavigationItemComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective], imports: [CommonModule, IconsModule], exports: [BottomNavigationComponent, BottomNavigationItemTemplateDirective] });\nBottomNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationModule, imports: [[CommonModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: BottomNavigationModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations$1],\n exports: [exportedComponents],\n imports: [CommonModule, IconsModule]\n }]\n }] });\n\n/**\n * Arguments for the `itemClick` event of the ActionSheet.\n */\nclass ActionSheetItemClickEvent {\n}\n\n/**\n * Represents a template that defines the header content of the ActionSheet. Utilizing the template overrides both the `title` and `subtitle` of the ActionSheet.\n * To define the template, nest an `` tag\n * with the `kendoActionSheetHeaderTemplate` directive inside the `` tag.\n */\nclass ActionSheetHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nActionSheetHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetHeaderTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nActionSheetHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetHeaderTemplateDirective, selector: \"[kendoActionSheetHeaderTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetHeaderTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoActionSheetHeaderTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the item content of the ActionSheet.\n * To define the template, nest an `` tag\n * with the `kendoActionSheetItemTemplate` directive inside the `` tag.\n */\nclass ActionSheetItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nActionSheetItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetItemTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nActionSheetItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetItemTemplateDirective, selector: \"[kendoActionSheetItemTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetItemTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoActionSheetItemTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the items list content of the ActionSheet.\n * To define the template, nest an `` tag\n * with the `kendoActionSheetContentTemplate` directive inside the `` tag.\n */\nclass ActionSheetContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nActionSheetContentTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nActionSheetContentTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetContentTemplateDirective, selector: \"[kendoActionSheetContentTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetContentTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoActionSheetContentTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the footer of the ActionSheet.\n * To define the template, nest an `` tag\n * with the `kendoActionSheetFooterTemplate` directive inside the `` tag.\n */\nclass ActionSheetFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nActionSheetFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetFooterTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nActionSheetFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetFooterTemplateDirective, selector: \"[kendoActionSheetFooterTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetFooterTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoActionSheetFooterTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the ActionSheet.\n * To define the template, nest an `` tag\n * with the `kendoActionSheetTemplate` directive inside the `` tag.\n */\nclass ActionSheetTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nActionSheetTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nActionSheetTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetTemplateDirective, selector: \"[kendoActionSheetTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoActionSheetTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nfunction slideUp(duration, height) {\n return [\n style({ overflow: 'hidden', display: 'block', height: 0 }),\n animate(`${duration}ms ease-in`, style({ height: `${height}` }))\n ];\n}\n/**\n * @hidden\n */\nfunction slideDown(duration, height) {\n return [\n style({ overflow: 'hidden', height: `${height}` }),\n animate(`${duration}ms ease-in`, style({ overflow: 'hidden', height: 0 }))\n ];\n}\n\n/**\n * @hidden\n */\nclass ActionSheetItemComponent {\n constructor() {\n this.pointerClass = true;\n }\n manageIconClasses(item) {\n const classes = ['k-actionsheet-item-icon'];\n const isHexColor = isPresent(item.iconColor) && hexColorRegex.test(item.iconColor);\n const isThemeColor = isPresent(item.iconColor) && item.iconColor !== '' && !isHexColor;\n if (isThemeColor) {\n classes.push(`k-text-${item.iconColor}`);\n }\n return classes.join(' ');\n }\n manageIconStyles(item) {\n const isHexColor = isPresent(item.iconColor) && hexColorRegex.test(item.iconColor);\n const isSizeSet = isPresent(item.iconSize) && item.iconSize !== '';\n const styles = {};\n if (isHexColor) {\n styles.color = item.iconColor;\n }\n if (isSizeSet) {\n styles.fontSize = item.iconSize;\n }\n return styles;\n }\n}\nActionSheetItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nActionSheetItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetItemComponent, selector: \"[kendoActionSheetItem]\", inputs: { itemTemplate: \"itemTemplate\", item: \"item\" }, host: { properties: { \"class.k-cursor-pointer\": \"this.pointerClass\" } }, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n {{item.title}}\n {{item.description}}\n \n \n \n `, isInline: true, components: [{ type: i1$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetItemComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoActionSheetItem]',\n template: `\n \n \n \n \n \n \n \n \n \n {{item.title}}\n {{item.description}}\n \n \n \n `\n }]\n }], propDecorators: { itemTemplate: [{\n type: Input\n }], item: [{\n type: Input\n }], pointerClass: [{\n type: HostBinding,\n args: ['class.k-cursor-pointer']\n }] } });\n\n/**\n * @hidden\n */\nclass ActionSheetListComponent {\n constructor(renderer, ngZone, element) {\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.groupItems = [];\n this.allItems = [];\n this.itemClick = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngAfterViewInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));\n });\n }\n clickHandler(e) {\n const itemIndex = getActionSheetItemIndex(e.target, ACTIONSHEET_ITEM_INDEX_ATTRIBUTE, this.element.nativeElement);\n const item = this.allItems[itemIndex];\n if (!item) {\n return;\n }\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n this.ngZone.run(() => {\n this.itemClick.emit({ item, originalEvent: e });\n });\n }\n setAttrIndex(item) {\n return this.allItems.indexOf(item);\n }\n}\nActionSheetListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nActionSheetListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetListComponent, selector: \"[kendoActionSheetList]\", inputs: { groupItems: \"groupItems\", allItems: \"allItems\", itemTemplate: \"itemTemplate\" }, outputs: { itemClick: \"itemClick\" }, ngImport: i0, template: \"\\n \\n \\n \", isInline: true, components: [{ type: ActionSheetItemComponent, selector: \"[kendoActionSheetItem]\", inputs: [\"itemTemplate\", \"item\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetListComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[kendoActionSheetList]',\n template: `\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { groupItems: [{\n type: Input\n }], allItems: [{\n type: Input\n }], itemTemplate: [{\n type: Input\n }], itemClick: [{\n type: Output\n }] } });\n\nconst DEFAULT_ANIMATION_CONFIG = { duration: 300 };\n/**\n * Represents the [Kendo UI ActionSheet component for Angular]({% slug overview_actionsheet %}).\n * Used to display a set of choices related to a task the user initiates.\n */\nclass ActionSheetComponent {\n constructor(element, ngZone, renderer, localizationService, builder, cdr) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.localizationService = localizationService;\n this.builder = builder;\n this.cdr = cdr;\n /**\n * Configures the ActionSheet opening and closing animations ([see example]({% slug animations_actionsheet %})).\n * By default the animations are turned off. The default animations' duration is `300ms`.\n *\n * @default true\n */\n this.animation = true;\n /**\n * Specifies the state of the ActionSheet.\n *\n * @default false\n */\n this.expanded = false;\n /**\n * Sets the `aria-labelledby` attribute of the ActionSheet wrapper element.\n * Use this option when the built-in header element is replaced through the [`ActionSheetHeaderTemplate`]({% slug api_navigation_actionsheetheadertemplatedirective %})\n * or [`ActionSheetContentTemplate`]({% slug api_navigation_actionsheetcontenttemplatedirective %}).\n *\n */\n this.titleId = getId('k-actionsheet-title');\n /**\n * Fires when the `expanded` property of the component is updated.\n * Used to provide a two-way binding for the `expanded` property.\n */\n this.expandedChange = new EventEmitter();\n /**\n * Fires when the ActionSheet is expanded and its animation is complete.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the ActionSheet is collapsed and its animation is complete.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when an ActionSheet item is clicked.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires when the modal overlay is clicked.\n */\n this.overlayClick = new EventEmitter();\n this.rtl = false;\n this.domSubs = new Subscription();\n this.animationEnd = new EventEmitter();\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n /**\n * @hidden\n */\n get hostClass() {\n return this.expanded;\n }\n ;\n ngAfterViewInit() {\n this.initDomEvents();\n this.setCssVariables();\n }\n ngOnChanges(changes) {\n if (changes['expanded'] && this.expanded) {\n this.setExpanded(true);\n }\n }\n ngOnDestroy() {\n this.domSubs.unsubscribe();\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n if (this.player) {\n this.player.destroy();\n }\n }\n /**\n * Toggles the visibility of the ActionSheet.\n *\n * @param expanded? - Boolean. Specifies if the ActionSheet will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent$1(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n if (current === true) {\n this.setExpanded(true);\n }\n else if (current === false && !this.animation) {\n this.setExpanded(false);\n }\n if (this.animation) {\n this.animationEnd.pipe(take(1))\n .subscribe(() => { this.onAnimationEnd(current); });\n this.playAnimation(current);\n }\n else {\n this[current ? 'expand' : 'collapse'].emit();\n }\n }\n /**\n * @hidden\n */\n get topGroupItems() {\n return this.items?.filter(item => !item.group || item.group === 'top');\n }\n /**\n * @hidden\n */\n get bottomGroupItems() {\n return this.items?.filter(item => item.group === 'bottom');\n }\n /**\n * @hidden\n */\n onItemClick(ev) {\n this.itemClick.emit(ev);\n }\n /**\n * @hidden\n */\n onOverlayClick() {\n this.overlayClick.emit();\n }\n /**\n * @hidden\n */\n get shouldRenderSeparator() {\n return this.topGroupItems?.length > 0 && this.bottomGroupItems?.length > 0;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubs.add(this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {\n this.onKeyDown(ev);\n }));\n });\n }\n setCssVariables() {\n if (!this.element || !isDocumentAvailable()) {\n return;\n }\n // The following syntax is used as it does not violate CSP compliance\n this.element.nativeElement.style.setProperty('--kendo-actionsheet-height', 'auto');\n this.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n onKeyDown(event) {\n const target = event.target;\n if (event.keyCode === Keys.Tab) {\n this.ngZone.run(() => {\n this.keepFocusWithinComponent(target, event);\n });\n }\n if (event.keyCode === Keys.Escape) {\n this.ngZone.run(() => {\n this.overlayClick.emit();\n });\n }\n if (event.keyCode === Keys.Enter) {\n this.ngZone.run(() => {\n this.triggerItemClick(target, event);\n });\n }\n }\n handleInitialFocus() {\n const [firstFocusable] = getFirstAndLastFocusable(this.element.nativeElement);\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n keepFocusWithinComponent(target, event) {\n const wrapper = this.element.nativeElement;\n const [firstFocusable, lastFocusable] = getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n triggerItemClick(target, event) {\n const itemIndex = getActionSheetItemIndex(target, ACTIONSHEET_ITEM_INDEX_ATTRIBUTE, this.element.nativeElement);\n const item = isPresent$1(itemIndex) ? this.items[itemIndex] : null;\n if (!item || item.disabled) {\n return;\n }\n this.itemClick.emit({ item, originalEvent: event });\n }\n setExpanded(value) {\n this.expanded = value;\n this.expandedChange.emit(value);\n if (this.expanded) {\n this.cdr.detectChanges();\n this.handleInitialFocus();\n }\n }\n onAnimationEnd(currentExpanded) {\n if (currentExpanded) {\n this.expand.emit();\n }\n else {\n this.setExpanded(false);\n this.collapse.emit();\n }\n }\n playAnimation(expanded) {\n const duration = typeof this.animation !== 'boolean' && this.animation.duration ? this.animation.duration : DEFAULT_ANIMATION_CONFIG.duration;\n const contentHeight = getComputedStyle(this.childContainer.nativeElement).height;\n const animation = expanded ? slideUp(duration, contentHeight) : slideDown(duration, contentHeight);\n const factory = this.builder.build(animation);\n this.player = factory.create(this.childContainer.nativeElement);\n this.player.onDone(() => {\n if (this.player) {\n this.animationEnd.emit();\n this.player.destroy();\n this.player = null;\n }\n });\n this.player.play();\n }\n}\nActionSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: i2$1.AnimationBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nActionSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ActionSheetComponent, selector: \"kendo-actionsheet\", inputs: { title: \"title\", subtitle: \"subtitle\", items: \"items\", cssClass: \"cssClass\", animation: \"animation\", expanded: \"expanded\", titleId: \"titleId\" }, outputs: { expandedChange: \"expandedChange\", expand: \"expand\", collapse: \"collapse\", itemClick: \"itemClick\", overlayClick: \"overlayClick\" }, host: { properties: { \"class.k-actionsheet-container\": \"this.hostClass\", \"attr.dir\": \"this.direction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.actionsheet.component'\n }\n ], queries: [{ propertyName: \"actionSheetTemplate\", first: true, predicate: ActionSheetTemplateDirective, descendants: true }, { propertyName: \"headerTemplate\", first: true, predicate: ActionSheetHeaderTemplateDirective, descendants: true }, { propertyName: \"contentTemplate\", first: true, predicate: ActionSheetContentTemplateDirective, descendants: true }, { propertyName: \"itemTemplate\", first: true, predicate: ActionSheetItemTemplateDirective, descendants: true }, { propertyName: \"footerTemplate\", first: true, predicate: ActionSheetFooterTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"childContainer\", first: true, predicate: [\"childContainer\"], descendants: true }], exportAs: [\"kendoActionSheet\"], usesOnChanges: true, ngImport: i0, template: `\n \n
    \n
    \n
    \n
    \n\n \n \n\n \n
    \n \n \n\n \n
    \n
    \n
    {{title}}
    \n
    {{subtitle}}
    \n
    \n
    \n
    \n
    \n\n
    \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n `, isInline: true, components: [{ type: ActionSheetListComponent, selector: \"[kendoActionSheetList]\", inputs: [\"groupItems\", \"allItems\", \"itemTemplate\"], outputs: [\"itemClick\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoActionSheet',\n selector: 'kendo-actionsheet',\n template: `\n \n
    \n
    \n
    \n
    \n\n \n \n\n \n
    \n \n \n\n \n
    \n
    \n
    {{title}}
    \n
    {{subtitle}}
    \n
    \n
    \n
    \n
    \n\n
    \n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.actionsheet.component'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.LocalizationService }, { type: i2$1.AnimationBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { hostClass: [{\n type: HostBinding,\n args: ['class.k-actionsheet-container']\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], items: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], animation: [{\n type: Input\n }], expanded: [{\n type: Input\n }], titleId: [{\n type: Input\n }], expandedChange: [{\n type: Output\n }], expand: [{\n type: Output\n }], collapse: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], overlayClick: [{\n type: Output\n }], childContainer: [{\n type: ViewChild,\n args: ['childContainer']\n }], actionSheetTemplate: [{\n type: ContentChild,\n args: [ActionSheetTemplateDirective]\n }], headerTemplate: [{\n type: ContentChild,\n args: [ActionSheetHeaderTemplateDirective]\n }], contentTemplate: [{\n type: ContentChild,\n args: [ActionSheetContentTemplateDirective]\n }], itemTemplate: [{\n type: ContentChild,\n args: [ActionSheetItemTemplateDirective]\n }], footerTemplate: [{\n type: ContentChild,\n args: [ActionSheetFooterTemplateDirective]\n }] } });\n\nconst templateDirectives = [\n ActionSheetHeaderTemplateDirective,\n ActionSheetItemTemplateDirective,\n ActionSheetContentTemplateDirective,\n ActionSheetFooterTemplateDirective,\n ActionSheetTemplateDirective\n];\nconst exportedModules = [\n ActionSheetComponent,\n ...templateDirectives\n];\nconst declarations = [\n ActionSheetItemComponent,\n ActionSheetListComponent,\n ...exportedModules\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the ActionSheet component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ActionSheet module\n * import { ActionSheetModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { BrowserModule } from '@angular/platform-browser';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ActionSheetModule], // import ActionSheet module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ActionSheetModule {\n}\nActionSheetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nActionSheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetModule, declarations: [ActionSheetItemComponent,\n ActionSheetListComponent, ActionSheetComponent, ActionSheetHeaderTemplateDirective,\n ActionSheetItemTemplateDirective,\n ActionSheetContentTemplateDirective,\n ActionSheetFooterTemplateDirective,\n ActionSheetTemplateDirective], imports: [CommonModule, IconsModule], exports: [ActionSheetComponent, ActionSheetHeaderTemplateDirective,\n ActionSheetItemTemplateDirective,\n ActionSheetContentTemplateDirective,\n ActionSheetFooterTemplateDirective,\n ActionSheetTemplateDirective] });\nActionSheetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetModule, imports: [[CommonModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ActionSheetModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [declarations],\n exports: [exportedModules],\n imports: [CommonModule, IconsModule]\n }]\n }] });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Navigation components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Navigation module\n * import { NavigationModule } from '@progress/kendo-angular-navigation';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, NavigationModule], // import Navigation module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass NavigationModule {\n}\nNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationModule, exports: [AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule,\n ActionSheetModule] });\nNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationModule, imports: [AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule,\n ActionSheetModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n AppBarModule,\n BreadCrumbModule,\n BottomNavigationModule,\n ActionSheetModule\n ]\n }]\n }] });\n\n// AppBar exports\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActionSheetComponent, ActionSheetContentTemplateDirective, ActionSheetFooterTemplateDirective, ActionSheetHeaderTemplateDirective, ActionSheetItemClickEvent, ActionSheetItemTemplateDirective, ActionSheetModule, ActionSheetTemplateDirective, AppBarComponent, AppBarModule, AppBarSectionComponent, AppBarSpacerComponent, BottomNavigationComponent, BottomNavigationItemTemplateDirective, BottomNavigationModule, BottomNavigationSelectEvent, BreadCrumbComponent, BreadCrumbItemComponent, BreadCrumbItemTemplateDirective, BreadCrumbListComponent, BreadCrumbModule, NavigationModule };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, Optional, EventEmitter, isDevMode, Component, Input, Output, ViewChild, TemplateRef, NgModule } from '@angular/core';\nimport { siblingContainer, parents, addScroll, align, boundingOffset, offset, positionWithScroll, removeScroll, restrictToView, scrollPosition, getWindowViewPort } from '@progress/kendo-popup-common';\nimport * as i7 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, hasObservers, ResizeSensorComponent, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport { fromEvent, merge, from } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport * as i1 from '@angular/animations';\nimport { style, animate } from '@angular/animations';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i8 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst eitherRect = (rect, offset) => {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nconst replaceOffset = (rect, offset) => {\n if (!offset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst removeStackingOffset = (rect, stackingOffset) => {\n if (!stackingOffset) {\n return rect;\n }\n const result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nconst isDifferentOffset = (oldOffset, newOffset) => {\n const { left: oldLeft, top: oldTop } = oldOffset;\n const { left: newLeft, top: newTop } = newOffset;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => {\n return typeof window !== 'undefined';\n};\n/**\n * @hidden\n */\nconst hasBoundingRect = (elem) => !!elem.getBoundingClientRect;\n/**\n * @hidden\n */\nconst OVERFLOW_REGEXP = /auto|scroll/;\nconst overflowElementStyle = (element) => {\n return `${element.style.overflow}${element.style.overflowX}${element.style.overflowY}`;\n};\nconst overflowComputedStyle = (element) => {\n const styles = window.getComputedStyle(element);\n return `${styles.overflow}${styles.overflowX}${styles.overflowY}`;\n};\nconst overflowStyle = (element) => {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n/**\n * @hidden\n */\nconst scrollableParents = (element) => {\n const parentElements = [];\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return parentElements;\n }\n let parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nconst FRAME_DURATION = 1000 / 60; //1000ms divided by 60fps\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction memoize(fun) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fun(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!isDocumentAvailable() && document.body !== null) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n const childElement = document.createElement(\"div\");\n childElement.style.position = 'fixed';\n childElement.style.top = `${top}px`;\n childElement.textContent = 'child';\n parent.appendChild(childElement);\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * @hidden\n */\nconst zIndex = (anchor, container) => {\n if (!anchor || !isDocumentAvailable() || !isWindowAvailable()) {\n return null;\n }\n const sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n const result = [anchor].concat(parents(anchor, sibling)).reduce((index, p) => {\n const zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n const current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nconst scaleRect = (rect, scale) => {\n if (!rect || scale === 1) {\n return rect;\n }\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nconst STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n/**\n * @hidden\n */\nclass DOMService {\n addOffset(current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n }\n addScroll(rect, scroll) {\n return addScroll(rect, scroll);\n }\n align(settings) {\n return align(settings);\n }\n boundingOffset(el) {\n return boundingOffset(el);\n }\n getFontStyles(el) {\n const window = this.getWindow();\n if (!window || !el) {\n return [];\n }\n const computedStyles = window.getComputedStyle(el);\n return STYLES.map(key => ({ key: key, value: computedStyles[key] }));\n }\n getWindow() {\n return isWindowAvailable() ? window : null;\n }\n hasOffsetParent(el) {\n if (!el || !isDocumentAvailable()) {\n return false;\n }\n return !!this.nativeElement(el).offsetParent;\n }\n offset(el) {\n if (!el || !isDocumentAvailable()) {\n return null;\n }\n return offset(el);\n }\n offsetAtPoint(el, currentLocation) {\n if (!el || !isDocumentAvailable()) {\n return null;\n }\n const element = this.nativeElement(el);\n const { left, top, transition } = element.style;\n element.style.transition = 'none';\n element.style.left = `${currentLocation.left}px`;\n element.style.top = `${currentLocation.top}px`;\n const currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n // prevents elements with transition to be animated because of the change\n this._dummy = element.offsetHeight;\n element.style.transition = transition;\n return currentOffset;\n }\n nativeElement(el) {\n if (!el || !isDocumentAvailable()) {\n return null;\n }\n return el.nativeElement || el;\n }\n position(element, popup, scale = 1) {\n if (!element || !popup) {\n return null;\n }\n return positionWithScroll(element, this.nativeElement(popup), scale);\n }\n removeScroll(rect, scroll) {\n return removeScroll(rect, scroll);\n }\n restrictToView(settings) {\n return restrictToView(settings);\n }\n scrollPosition(el) {\n return scrollPosition(this.nativeElement(el));\n }\n scrollableParents(el) {\n return scrollableParents(el);\n }\n stackingElementOffset(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n }\n stackingElementScroll(el) {\n const relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n }\n getRelativeContextElement(el) {\n if (!el || !hasRelativeStackingContext()) {\n return null;\n }\n let parent = this.nativeElement(el).parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n }\n useRelativePosition(el) {\n return !!this.getRelativeContextElement(el);\n }\n windowViewPort(el) {\n return getWindowViewPort(this.nativeElement(el));\n }\n zIndex(anchor, container) {\n return zIndex(anchor, this.nativeElement(container));\n }\n zoomLevel() {\n if (!isDocumentAvailable() || !isWindowAvailable()) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n }\n isZoomed() {\n return this.zoomLevel() > 1;\n }\n}\nDOMService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DOMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDOMService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DOMService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: DOMService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Used to set the document scale when using a [scale transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale).\n *\n * The document or container scale is required to compute the popup position correctly. Detecting the scale is not reliable and must be set by providing a value for SCALE. See [Support for Document Scale]({% slug documentscale_popup %}).\n *\n * > Using this token is not necessary for user-applied browser zoom.\n *\n * {% meta height:300 %}\n * {% embed_file scale/app.component.ts preview %}\n * {% embed_file shared/app.module.ts %}\n * {% embed_file shared/main.ts %}\n * {% endmeta %}\n *\n *\n */\nconst SCALE = new InjectionToken('Popup Document Scale');\n\n/**\n * @hidden\n */\nclass AlignService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n alignElement(settings) {\n const { anchor, element, anchorAlign, elementAlign, margin, offset, positionMode } = settings;\n const scale = this.scale || 1;\n const fixedMode = positionMode === 'fixed' || !this._dom.hasOffsetParent(element);\n const anchorRect = fixedMode ? this.absoluteRect(anchor, element, offset, scale) : this.relativeRect(anchor, element, offset, scale);\n const elementRect = scaleRect(this._dom.offset(element.nativeElement), scale);\n const result = this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin\n });\n return result;\n }\n absoluteRect(anchor, element, offset, scale) {\n const scrollPos = this.elementScrollPosition(anchor, element);\n const rect = eitherRect(this._dom.offset(anchor), offset);\n const stackScale = 2 * scale;\n const stackScroll = this._dom.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n const stackOffset = this._dom.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n return this._dom.removeScroll(this._dom.addScroll(removeStackingOffset(scaleRect(rect, scale), stackOffset), stackScroll), scrollPos);\n }\n elementScrollPosition(anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n }\n relativeRect(anchor, element, offset, scale) {\n const rect = eitherRect(this._dom.position(anchor, element, scale), offset);\n return scaleRect(rect, scale);\n }\n}\nAlignService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AlignService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAlignService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AlignService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AlignService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass PositionService {\n constructor(_dom, scale = 1) {\n this._dom = _dom;\n this.scale = scale;\n }\n positionElement(settings) {\n const { anchor, currentLocation, element, anchorAlign, elementAlign, collisions, margin } = settings;\n const dom = this._dom;\n const scale = this.scale || 1;\n const elementOffset = dom.offsetAtPoint(element, currentLocation);\n const elementRect = scaleRect(elementOffset, scale);\n const anchorOffset = scaleRect(dom.offset(anchor), scale);\n const anchorRect = eitherRect(anchorOffset, currentLocation);\n const viewPort = settings.viewPort || dom.windowViewPort(element);\n viewPort.width = viewPort.width / scale;\n viewPort.height = viewPort.height / scale;\n const result = dom.restrictToView({\n anchorAlign,\n anchorRect,\n collisions,\n elementAlign,\n elementRect,\n margin,\n viewPort\n });\n const offset = dom.addOffset(currentLocation, result.offset);\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n }\n}\nPositionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PositionService, deps: [{ token: DOMService }, { token: SCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPositionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PositionService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PositionService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: undefined, decorators: [{\n type: Inject,\n args: [SCALE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @hidden\n */\nclass ResizeService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n subscribe(callback) {\n if (!isDocumentAvailable()) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n this.subscription = fromEvent(this._dom.getWindow(), \"resize\")\n .pipe(auditTime(FRAME_DURATION))\n .subscribe(() => callback());\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isUnsubscribed() {\n return this.subscription && this.subscription.closed;\n }\n}\nResizeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ResizeService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nResizeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ResizeService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\n/**\n * @hidden\n */\nconst THRESHOLD_DIFF = 1;\n/**\n * @hidden\n */\nclass ScrollableService {\n constructor(_dom, _zone) {\n this._dom = _dom;\n this._zone = _zone;\n }\n forElement(element) {\n this.unsubscribe();\n this.element = element;\n return this;\n }\n subscribe(callback) {\n if (!callback || !isDocumentAvailable() || !this.element) {\n return;\n }\n const parents = this._dom.scrollableParents(this.element);\n this._zone.runOutsideAngular(() => {\n const observables = parents.map(p => fromEvent(p, \"scroll\").pipe(auditTime(FRAME_DURATION)));\n const subscriber = (e) => {\n const target = e.target;\n const isParent = parents.filter(p => p === target).length > 0;\n const isDocument = target === document;\n const isWindow = target === window;\n if (isParent || isDocument || isWindow) {\n callback(this.isVisible(this.element, target));\n }\n };\n this.subscription = merge(...observables).subscribe(subscriber);\n });\n }\n unsubscribe() {\n if (!this.subscription) {\n return;\n }\n this.subscription.unsubscribe();\n }\n isVisible(elem, container) {\n const elemRect = this._dom.boundingOffset(elem);\n const containerRect = this._dom.boundingOffset(this._dom.nativeElement(container));\n if (THRESHOLD_DIFF < (containerRect.top - elemRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.top - containerRect.bottom)) {\n return false;\n }\n if (THRESHOLD_DIFF < (elemRect.left - containerRect.right)) {\n return false;\n }\n if (THRESHOLD_DIFF < (containerRect.left - elemRect.right)) {\n return false;\n }\n return true;\n }\n}\nScrollableService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollableService, deps: [{ token: DOMService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollableService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollableService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollableService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: DOMService }, { type: i0.NgZone }]; } });\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst DOWN = 'down';\nconst UP = 'up';\nconst DEFAULT_TYPE = 'slide';\nconst DEFAULT_DURATION = 100;\nconst animationTypes = {};\nanimationTypes.expand = (direction) => {\n const scale = direction === UP || direction === DOWN ? 'scaleY' : 'scaleX';\n const startScale = 0;\n const endScale = 1;\n let origin;\n if (direction === DOWN) {\n origin = 'top';\n }\n else if (direction === LEFT) {\n origin = RIGHT;\n }\n else if (direction === RIGHT) {\n origin = LEFT;\n }\n else {\n origin = 'bottom';\n }\n return {\n start: { transform: `${scale}(${startScale})`, transformOrigin: origin },\n end: { transform: `${scale}(${endScale})` }\n };\n};\nanimationTypes.slide = (direction) => {\n const translate = direction === LEFT || direction === RIGHT ? 'translateX' : 'translateY';\n const start = direction === RIGHT || direction === DOWN ? -100 : 100;\n const end = 0;\n return {\n start: { transform: `${translate}(${start}%)` },\n end: { transform: `${translate}(${end}%)` }\n };\n};\nanimationTypes.fade = () => {\n return {\n start: { opacity: 0 },\n end: { opacity: 1 }\n };\n};\nanimationTypes.zoom = () => {\n const start = 0;\n const end = 1;\n return {\n start: { transform: `scale(${start})` },\n end: { transform: `scale(${end})` }\n };\n};\n/**\n * @hidden\n */\nclass AnimationService {\n constructor(animationBuilder) {\n this.animationBuilder = animationBuilder;\n this.start = new EventEmitter();\n this.end = new EventEmitter();\n }\n play(element, options, flip) {\n if (!this.flip || this.flip.horizontal !== flip.horizontal ||\n this.flip.vertical !== flip.vertical) {\n this.flip = flip;\n const type = options.type || DEFAULT_TYPE;\n const statesFn = animationTypes[type];\n if (statesFn) {\n const direction = this.getDirection(flip, options);\n const states = statesFn(direction);\n this.playStates(element, states, options);\n }\n else if (isDevMode()) {\n throw new Error(`Unsupported animation type: \"${type}\". The supported types are slide, expand, fade and zoom.`);\n }\n }\n }\n ngOnDestroy() {\n this.stopPlayer();\n }\n playStates(element, states, options) {\n this.stopPlayer();\n const duration = options.duration || DEFAULT_DURATION;\n const factory = this.animationBuilder.build([\n style(states.start),\n animate(`${duration}ms ease-in`, style(states.end))\n ]);\n const player = this.player = factory.create(element);\n player.onDone(() => {\n this.end.emit();\n this.stopPlayer();\n });\n this.start.emit();\n player.play();\n }\n getDirection(flip, options) {\n let direction = options.direction || DOWN;\n if (flip.horizontal) {\n if (direction === LEFT) {\n direction = RIGHT;\n }\n else if (direction === RIGHT) {\n direction = LEFT;\n }\n }\n if (flip.vertical) {\n if (direction === DOWN) {\n direction = UP;\n }\n else if (direction === UP) {\n direction = DOWN;\n }\n }\n return direction;\n }\n stopPlayer() {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n}\nAnimationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AnimationService, deps: [{ token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AnimationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: AnimationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.AnimationBuilder }]; } });\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-popup',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142143,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\nconst DEFAULT_OFFSET = { left: -10000, top: 0 };\nconst ANIMATION_CONTAINER = 'k-animation-container';\nconst ANIMATION_CONTAINER_FIXED = 'k-animation-container-fixed';\n/**\n * Represents the [Kendo UI Popup component for Angular]({% slug overview_popup %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Popup content!\n * \n * `\n * })\n * class AppComponent {\n * public show: boolean = false;\n * }\n * ```\n */\nclass PopupComponent {\n constructor(container, _alignService, domService, _positionService, _resizeService, _scrollableService, animationService, _renderer, _zone) {\n this.container = container;\n this._alignService = _alignService;\n this.domService = domService;\n this._positionService = _positionService;\n this._resizeService = _resizeService;\n this._scrollableService = _scrollableService;\n this.animationService = animationService;\n this._renderer = _renderer;\n this._zone = _zone;\n /**\n * Controls the Popup animation. By default, the opening and closing animations\n * are enabled ([see example]({% slug animations_popup %})).\n */\n this.animate = true;\n /**\n * Specifies the anchor pivot point\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.anchorAlign = { horizontal: 'left', vertical: 'bottom' };\n /**\n * Configures the collision behavior of the Popup\n * ([see example]({% slug viewportboundarydetection_popup %})).\n */\n this.collision = { horizontal: 'fit', vertical: 'flip' };\n /**\n * Specifies the pivot point of the Popup\n * ([see example]({% slug alignmentpositioning_popup %}#toc-positioning)).\n */\n this.popupAlign = { horizontal: 'left', vertical: 'top' };\n /**\n * Controls whether the component will copy the `anchor` font styles.\n */\n this.copyAnchorStyles = false;\n /**\n * Specifies the position mode of the component. By default, the Popup uses fixed positioning.\n * To make the Popup acquire absolute positioning, set this option to `absolute`.\n *\n * > If you need to support mobile browsers with the zoom option,\n * use the `absolute` positioning of the Popup.\n *\n * @example\n * ```html\n * \n * ```\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * Position mode:\n * \n * \n *
    \n *
    \n * Append to\n * \n * \n * \n *
    \n *
    \n *
    \n *
    \n * \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n * Bottom/Right\n *
    \n * \n *
      \n *
    • Item1
    • \n *
    • Item2
    • \n *
    • Item3
    • \n *
    \n *
    \n *
    \n * `\n * })\n * class AppComponent {\n * public checked: number = 3;\n * public mode: string = 'absolute';\n * public show: boolean = true;\n * }\n * ```\n */\n this.positionMode = 'fixed';\n /**\n * Specifies the absolute position of the element\n * ([see example]({% slug alignmentpositioning_popup %}#toc-aligning-to-absolute-points)).\n * The Popup opens next to that point. The Popup pivot point is defined by the `popupAlign` configuration option.\n * The boundary detection is applied by using the window viewport.\n */\n this.offset = DEFAULT_OFFSET;\n /**\n * Fires when the anchor is scrolled outside the screen boundaries.\n * ([see example]({% slug closing_popup %}#toc-after-leaving-the-viewport)).\n */\n this.anchorViewportLeave = new EventEmitter();\n /**\n * Fires after the component is closed.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the component is opened and the opening animation ends.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the component is opened and the Popup is positioned.\n */\n this.positionChange = new EventEmitter();\n this.resolvedPromise = Promise.resolve(null);\n this.initialCheck = true;\n validatePackage(packageMetadata);\n this._renderer.addClass(container.nativeElement, ANIMATION_CONTAINER);\n this.updateFixedClass();\n }\n ngOnInit() {\n this.reposition = this.reposition.bind(this);\n this._resizeService.subscribe(this.reposition);\n this.animationSubscriptions = this.animationService.start.subscribe(this.onAnimationStart.bind(this));\n this.animationSubscriptions.add(this.animationService.end.subscribe(this.onAnimationEnd.bind(this)));\n this._scrollableService.forElement(this.domService.nativeElement(this.anchor) || this.container.nativeElement).subscribe(this.onScroll.bind(this));\n this.currentOffset = DEFAULT_OFFSET;\n this.setZIndex();\n this.copyFontStyles();\n this.updateFixedClass();\n this.reposition();\n }\n ngOnChanges(changes) {\n if (changes.copyAnchorStyles) {\n this.copyFontStyles();\n }\n if (changes.positionMode) {\n this.updateFixedClass();\n }\n }\n ngAfterViewInit() {\n if (!this.animate) {\n this.resolvedPromise.then(() => {\n this.onAnimationEnd();\n });\n }\n this.reposition();\n }\n ngAfterViewChecked() {\n if (this.initialCheck) {\n this.initialCheck = false;\n return;\n }\n this._zone.runOutsideAngular(() => {\n // workarounds https://github.com/angular/angular/issues/19094\n // uses promise because it is executed synchronously after the content is updated\n // does not use onStable in case the current zone is not the angular one.\n this.unsubscribeReposition();\n this.repositionSubscription = from(this.resolvedPromise)\n .subscribe(this.reposition);\n });\n }\n ngOnDestroy() {\n this.anchorViewportLeave.complete();\n this.positionChange.complete();\n this.close.emit();\n this.close.complete();\n this._resizeService.unsubscribe();\n this._scrollableService.unsubscribe();\n this.animationSubscriptions.unsubscribe();\n this.unsubscribeReposition();\n }\n /**\n * @hidden\n */\n onResize() {\n this.reposition();\n }\n onAnimationStart() {\n this._renderer.removeClass(this.container.nativeElement, 'k-animation-container-shown');\n }\n onAnimationEnd() {\n this._renderer.addClass(this.container.nativeElement, 'k-animation-container-shown');\n this.open.emit();\n this.open.complete();\n }\n get currentOffset() {\n return this._currentOffset;\n }\n set currentOffset(offset) {\n this.setContainerStyle('left', `${offset.left}px`);\n this.setContainerStyle('top', `${offset.top}px`);\n this._currentOffset = offset;\n }\n setZIndex() {\n if (this.anchor) {\n this.setContainerStyle('z-index', String(this.domService.zIndex(this.domService.nativeElement(this.anchor), this.container)));\n }\n }\n reposition() {\n if (!isDocumentAvailable()) {\n return;\n }\n const { flip, offset } = this.position();\n if (!this.currentOffset || isDifferentOffset(this.currentOffset, offset)) {\n this.currentOffset = offset;\n if (hasObservers(this.positionChange)) {\n this._zone.run(() => this.positionChange.emit({ offset, flip }));\n }\n }\n if (this.animate) {\n this.animationService.play(this.contentContainer.nativeElement, this.animate, flip);\n }\n this.resizeSensor.acceptSize();\n }\n position() {\n const alignedOffset = this._alignService.alignElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin,\n offset: this.offset,\n positionMode: this.positionMode\n });\n return this._positionService.positionElement({\n anchor: this.domService.nativeElement(this.anchor),\n anchorAlign: this.anchorAlign,\n collisions: this.collision,\n currentLocation: alignedOffset,\n element: this.container,\n elementAlign: this.popupAlign,\n margin: this.margin\n });\n }\n onScroll(isInViewPort) {\n const hasLeaveObservers = hasObservers(this.anchorViewportLeave);\n if (isInViewPort || !hasLeaveObservers) {\n this.reposition();\n }\n else if (hasLeaveObservers) {\n this._zone.run(() => {\n this.anchorViewportLeave.emit();\n });\n }\n }\n copyFontStyles() {\n if (!this.anchor || !this.copyAnchorStyles) {\n return;\n }\n this.domService.getFontStyles(this.domService.nativeElement(this.anchor))\n .forEach((s) => this.setContainerStyle(s.key, s.value));\n }\n updateFixedClass() {\n const action = this.positionMode === 'fixed' ? 'addClass' : 'removeClass';\n this._renderer[action](this.container.nativeElement, ANIMATION_CONTAINER_FIXED);\n }\n setContainerStyle(name, value) {\n this._renderer.setStyle(this.container.nativeElement, name, value);\n }\n unsubscribeReposition() {\n if (this.repositionSubscription) {\n this.repositionSubscription.unsubscribe();\n }\n }\n}\nPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ElementRef }, { token: AlignService }, { token: DOMService }, { token: PositionService }, { token: ResizeService }, { token: ScrollableService }, { token: AnimationService }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopupComponent, selector: \"kendo-popup\", inputs: { animate: \"animate\", anchor: \"anchor\", anchorAlign: \"anchorAlign\", collision: \"collision\", popupAlign: \"popupAlign\", copyAnchorStyles: \"copyAnchorStyles\", popupClass: \"popupClass\", positionMode: \"positionMode\", offset: \"offset\", margin: \"margin\" }, outputs: { anchorViewportLeave: \"anchorViewportLeave\", close: \"close\", open: \"open\", positionChange: \"positionChange\" }, providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService], viewQueries: [{ propertyName: \"contentContainer\", first: true, predicate: [\"container\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: [\"kendo-popup\"], usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: i7.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: i8.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i8.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i8.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendo-popup',\n providers: [AlignService, AnimationService, DOMService, PositionService, ResizeService, ScrollableService],\n selector: 'kendo-popup',\n template: `\n
    \n
    \n \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AlignService }, { type: DOMService }, { type: PositionService }, { type: ResizeService }, { type: ScrollableService }, { type: AnimationService }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { animate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], anchorAlign: [{\n type: Input\n }], collision: [{\n type: Input\n }], popupAlign: [{\n type: Input\n }], copyAnchorStyles: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], positionMode: [{\n type: Input\n }], offset: [{\n type: Input\n }], margin: [{\n type: Input\n }], anchorViewportLeave: [{\n type: Output\n }], close: [{\n type: Output\n }], open: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], contentContainer: [{\n type: ViewChild,\n args: ['container', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: [ResizeSensorComponent, { static: true }]\n }] } });\n\nconst removeElement = (element) => {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element);\n }\n};\n/**\n * Used to inject the Popup container. If not provided, the first root component of\n * the application is used.\n *\n * > The `POPUP_CONTAINER` can be used only with the [`PopupService`]({% slug service_popup %}) class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule, POPUP_CONTAINER } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { ElementRef, NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent],\n * providers: [{\n * provide: POPUP_CONTAINER,\n * useFactory: () => {\n * //return the container ElementRef, where the popup will be injected\n * return { nativeElement: document.body } as ElementRef;\n * }\n * }]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nconst POPUP_CONTAINER = new InjectionToken('Popup Container');\n/**\n * A service for opening Popup components dynamically\n * ([see example]({% slug service_popup %})).\n *\n * @export\n * @class PopupService\n */\nclass PopupService {\n constructor(applicationRef, componentFactoryResolver, injector, container) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n this.container = container;\n }\n /**\n * Gets the root view container into which the component will be injected.\n *\n * @returns {ComponentRef}\n */\n get rootViewContainer() {\n // https://github.com/angular/angular/blob/4.0.x/packages/core/src/application_ref.ts#L571\n const rootComponents = this.applicationRef.components || [];\n if (rootComponents[0]) {\n return rootComponents[0];\n }\n throw new Error(`\n View Container not found! Inject the POPUP_CONTAINER or define a specific ViewContainerRef via the appendTo option.\n See http://www.telerik.com/kendo-angular-ui/components/popup/api/POPUP_CONTAINER/ for more details.\n `);\n }\n /**\n * Sets or gets the HTML element of the root component container.\n *\n * @returns {HTMLElement}\n */\n get rootViewContainerNode() {\n return this.container ? this.container.nativeElement : this.getComponentRootNode(this.rootViewContainer);\n }\n /**\n * Opens a Popup component. Created Popups are mounted\n * in the DOM directly in the root application component.\n *\n * @param {PopupSettings} options - The options which define the Popup.\n * @returns {ComponentRef} - A reference to the Popup object.\n *\n * @example\n *\n * ```ts-no-run\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * Popup content\n * \n * \n * `\n * })\n * export class AppComponent {\n * public popupRef: PopupRef;\n *\n * constructor( private popupService: PopupService ) {}\n *\n * public open(anchor: ElementRef, template: TemplateRef): void {\n * if (this.popupRef) {\n * this.popupRef.close();\n * this.popupRef = null;\n * return;\n * }\n *\n * this.popupRef = this.popupService.open({\n * anchor: anchor,\n * content: template\n * });\n * }\n * }\n * ```\n */\n open(options = {}) {\n const { component, nodes } = this.contentFrom(options.content);\n const popupComponentRef = this.appendPopup(nodes, options.appendTo);\n const popupInstance = popupComponentRef.instance;\n this.projectComponentInputs(popupComponentRef, options);\n popupComponentRef.changeDetectorRef.detectChanges();\n if (component) {\n component.changeDetectorRef.detectChanges();\n }\n const popupElement = this.getComponentRootNode(popupComponentRef);\n return {\n close: () => {\n if (component) {\n component.destroy();\n }\n popupComponentRef.destroy();\n // Angular will not remove the element unless the change detection is triggered\n removeElement(popupElement);\n },\n content: component,\n popup: popupComponentRef,\n popupAnchorViewportLeave: popupInstance.anchorViewportLeave,\n popupClose: popupInstance.close,\n popupElement: popupElement,\n popupOpen: popupInstance.open,\n popupPositionChange: popupInstance.positionChange\n };\n }\n appendPopup(nodes, container) {\n const popupComponentRef = this.createComponent(PopupComponent, nodes, container);\n if (!container) {\n this.rootViewContainerNode.appendChild(this.getComponentRootNode(popupComponentRef));\n }\n return popupComponentRef;\n }\n /**\n * Gets the HTML element for a component reference.\n *\n * @param {ComponentRef} componentRef\n * @returns {HTMLElement}\n */\n getComponentRootNode(componentRef) {\n return componentRef.location.nativeElement;\n }\n /**\n * Gets the `ComponentFactory` instance by its type.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n getComponentFactory(componentClass) {\n return this.componentFactoryResolver.resolveComponentFactory(componentClass);\n }\n /**\n * Creates a component reference from a `Component` type class.\n *\n * @param {*} componentClass\n * @param {*} nodes\n * @returns {ComponentRef}\n */\n createComponent(componentClass, nodes, container) {\n const factory = this.getComponentFactory(componentClass);\n if (container) {\n return container.createComponent(factory, undefined, this.injector, nodes);\n }\n else {\n const component = factory.create(this.injector, nodes);\n this.applicationRef.attachView(component.hostView);\n return component;\n }\n }\n /**\n * Projects the inputs on the component.\n *\n * @param {ComponentRef} component\n * @param {*} options\n * @returns {ComponentRef}\n */\n projectComponentInputs(component, options) {\n Object.getOwnPropertyNames(options)\n .filter(prop => prop !== 'content' || options.content instanceof TemplateRef)\n .map((prop) => {\n component.instance[prop] = options[prop];\n });\n return component;\n }\n /**\n * Gets the component and the nodes to append from the `content` option.\n *\n * @param {*} content\n * @returns {any}\n */\n contentFrom(content) {\n if (!content || content instanceof TemplateRef) {\n return { component: null, nodes: [[]] };\n }\n const component = this.createComponent(content);\n const nodes = component ? [component.location.nativeElement] : [];\n return {\n component: component,\n nodes: [\n nodes // \n ]\n };\n }\n}\nPopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: POPUP_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [POPUP_CONTAINER]\n }, {\n type: Optional\n }] }]; } });\n\nconst POPUP_DIRECTIVES = [PopupComponent];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Popup component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Popup module\n * import { PopupModule } from '@progress/kendo-angular-popup';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, PopupModule], // import Popup module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopupModule {\n}\nPopupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupModule, declarations: [PopupComponent], imports: [CommonModule, ResizeSensorModule], exports: [PopupComponent] });\nPopupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupModule, providers: [PopupService], imports: [[CommonModule, ResizeSensorModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopupModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [POPUP_DIRECTIVES],\n entryComponents: [POPUP_DIRECTIVES],\n exports: [POPUP_DIRECTIVES],\n imports: [CommonModule, ResizeSensorModule],\n providers: [PopupService]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { POPUP_CONTAINER, PopupComponent, PopupModule, PopupService, SCALE };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, Directive, forwardRef, TemplateRef, ContentChild, ViewChild, HostBinding, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i5 from '@progress/kendo-angular-common';\nimport { Keys, DraggableModule } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';\nimport { Subscription } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-icons';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport * as i6 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nvar Dir;\n(function (Dir) {\n Dir[Dir[\"Next\"] = 1] = \"Next\";\n Dir[Dir[\"Prev\"] = -1] = \"Prev\";\n})(Dir || (Dir = {}));\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-scrollview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142251,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/** @hidden */\nconst iterator = getIterator();\n// TODO: Move to kendo-common\nfunction getIterator() {\n if (typeof Symbol === 'function' && Symbol.iterator) {\n return Symbol.iterator;\n }\n const keys = Object.getOwnPropertyNames(Map.prototype);\n const proto = Map.prototype;\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (key !== 'entries' && key !== 'size' && proto[key] === proto.entries) {\n return key;\n }\n }\n}\nconst EMPTY_OBJ = {};\n/**\n * @hidden\n */\nclass DataResultIterator {\n constructor(source, index, endless, pageIndex, rtl) {\n this.rtl = false;\n this.source = source ? source : [];\n this.index = index ? index : 0;\n this.endless = endless;\n this.pageIndex = pageIndex;\n this.rtl = rtl;\n }\n get data() {\n const itemCount = this.total;\n let result;\n if (this.endless) {\n result = [\n this.source[(this.index - 1 + itemCount) % itemCount],\n this.source[this.index % itemCount],\n this.source[(this.index + 1 + itemCount) % itemCount]\n ];\n }\n else {\n const data = [EMPTY_OBJ, ...this.source, EMPTY_OBJ];\n result = data.slice(this.index, this.index + 3);\n }\n if (this.pageIndex !== null) {\n const isForward = this.pageIndex > this.index;\n result[isForward ? 2 : 0] = this.source[this.pageIndex];\n }\n return this.rtl ? result.reverse() : result;\n }\n get total() {\n return this.source.length;\n }\n canMoveNext() {\n return (this.endless || (this.index < this.total - 1));\n }\n canMovePrev() {\n return (this.endless || this.index > 0);\n }\n [iterator]() {\n return this.data[iterator]();\n }\n}\n/**\n * @hidden\n */\nclass DataCollection {\n constructor(accessor) {\n this.accessor = accessor;\n }\n get length() { return this.accessor().data.length; }\n get total() { return this.accessor().total; }\n item(index) {\n return this.accessor().data[index];\n }\n canMoveNext() {\n return this.accessor().canMoveNext();\n }\n canMovePrev() {\n return this.accessor().canMovePrev();\n }\n [Symbol.iterator]() {\n return this.accessor()[Symbol.iterator]();\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nclass ScrollViewPagerComponent {\n constructor(localization) {\n this.localization = localization;\n this.pagerIndexChange = new EventEmitter();\n }\n itemClass(idx) {\n return {\n 'k-primary': idx === this.activeIndex\n };\n }\n indexChange(selectedIndex) {\n this.pagerIndexChange.emit(selectedIndex);\n }\n pagerButtonLabel(itemIndex) {\n const localizationMsg = this.localization.get('pagerButtonLabel') || '';\n return this.replaceMessagePlaceholder(localizationMsg, 'itemIndex', itemIndex.toString());\n }\n replaceMessagePlaceholder(message, name, value) {\n return message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n }\n}\nScrollViewPagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewPagerComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nScrollViewPagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ScrollViewPagerComponent, selector: \"kendo-scrollview-pager\", inputs: { activeIndex: \"activeIndex\", data: \"data\" }, outputs: { pagerIndexChange: \"pagerIndexChange\" }, ngImport: i0, template: `\n
    \n \n \n
    \n `, isInline: true, directives: [{ type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewPagerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-scrollview-pager',\n template: `\n
    \n \n \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { activeIndex: [{\n type: Input\n }], data: [{\n type: Input\n }], pagerIndexChange: [{\n type: Output\n }] } });\n\n/**\n * @hidden\n */\nclass ScrollViewMessages extends ComponentMessages {\n}\nScrollViewMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nScrollViewMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ScrollViewMessages, selector: \"kendo-scrollview-messages-base\", inputs: { pagerButtonLabel: \"pagerButtonLabel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-scrollview-messages-base'\n }]\n }], propDecorators: { pagerButtonLabel: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends ScrollViewMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedMessagesDirective, selector: \"[kendoScrollViewLocalizedMessages]\", providers: [\n {\n provide: ScrollViewMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ScrollViewMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: '[kendoScrollViewLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/* eslint-disable @typescript-eslint/no-inferrable-types */\nlet idx = 0;\n/**\n * Represents the [Kendo UI ScrollView component for Angular]({% slug overview_scrollview %}).\n *\n * @example\n * ```ts\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

    {{item.title}}

    \n * {{item.title}}\n *
    \n * \n * `,\n * styles: [`\n * .k-scrollview-wrap {\n * margin: 0 auto;\n * }\n * .demo-title {\n * position: absolute;\n * top: 0;\n * left: 0;\n * right: 0;\n * margin: 0;\n * padding: 15px;\n * color: #fff;\n * background-color: rgba(0,0,0,.4);\n * text-align: center;\n * font-size: 24px;\n * }\n * `]\n * })\n *\n * class AppComponent {\n * public width: string = \"600px\";\n * public height: string = \"400px\";\n * public endless: boolean = false;\n * public pageable: boolean = false;\n * public items: any[] = [\n * { title: 'Flower', url: 'https://bit.ly/2cJjYuB' },\n * { title: 'Mountain', url: 'https://bit.ly/2cTBNaL' },\n * { title: 'Sky', url: 'https://bit.ly/2cJl3Cx' }\n * ];\n * }\n * ```\n */\nclass ScrollViewComponent {\n constructor(element, localization, ngZone, renderer) {\n this.element = element;\n this.localization = localization;\n this.ngZone = ngZone;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.chevronLeftIcon = chevronLeftIcon;\n /**\n * @hidden\n */\n this.chevronRightIcon = chevronRightIcon;\n /**\n * Provides the data source for the ScrollView ([see example]({% slug datasources_scrollview %})).\n */\n this.data = [];\n /**\n * Enables or disables the endless scrolling mode in which the data source items are endlessly looped\n * ([see example]({% slug endlessscrolling_scrollview %})). By default, `endless` is set to `false`\n * and the endless scrolling mode is disabled.\n */\n this.endless = false;\n /**\n * Sets `pagerOverlay` to one of three possible values: `dark`, `light` or `none`.\n * By default, the pager overlay is set to `none`.\n */\n this.pagerOverlay = 'none';\n /**\n * Enables or disables the built-in animations ([see example]({% slug animations_scrollview %})).\n * By default, `animate` is set to `true` and animations are enabled.\n */\n this.animate = true;\n /**\n * Enables or disables the built-in pager ([see example]({% slug paging_scrollview %})).\n * By default, `pageable` is set to `false` and paging is disabled.\n */\n this.pageable = false;\n /**\n * Enables or disables the built-in navigation arrows ([see example]({% slug arrows_scrollview %})).\n * By default, `arrows` is set to `false` and arrows are disabled.\n */\n this.arrows = false;\n /**\n * Fires after the current item is changed.\n */\n this.itemChanged = new EventEmitter();\n /**\n * Fires after the activeIndex has changed. Allows for two-way binding of the activeIndex property.\n */\n this.activeIndexChange = new EventEmitter();\n this.scrollViewClass = true;\n this.scrollViewRole = 'application';\n this.scrollViewRoleDescription = 'carousel';\n this.tabIndex = 0;\n this.ariaLive = 'assertive';\n this.touchAction = 'pan-y pinch-zoom';\n this.animationState = null;\n this.view = new DataCollection(() => new DataResultIterator(this.data, this.activeIndex, this.endless, this.pageIndex, this.isRTL));\n this.isDataSourceEmpty = false;\n this.subs = new Subscription();\n this._activeIndex = 0;\n this.index = 0;\n this.pageIndex = null;\n this.transforms = ['translateX(-100%)', 'translateX(0%)', 'translateX(100%)'];\n validatePackage(packageMetadata);\n }\n /**\n * Represents the current item index ([see example]({% slug activeitems_scrollview %})).\n */\n set activeIndex(value) {\n this.index = this._activeIndex = value;\n }\n get activeIndex() {\n return this._activeIndex;\n }\n get scrollViewLightOverlayClass() {\n return this.pagerOverlay === 'light';\n }\n get scrollViewDarkOverlayClass() {\n return this.pagerOverlay === 'dark';\n }\n get hostWidth() { return this.width; }\n get hostHeight() { return this.height; }\n get dir() {\n return this.direction;\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n ngOnInit() {\n this.subs.add(this.renderer.listen(this.element.nativeElement, 'keydown', event => this.keyDown(event)));\n if (this.arrows) {\n this.scrollviewId = `k-scrollview-wrap-${++idx}`;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngOnChanges(_) {\n if (this.data && this.data.length === 0) {\n this.activeIndex = Math.max(Math.min(this.activeIndex, this.view.total - 1), 0);\n }\n }\n /**\n * Navigates the ScrollView to the previous item.\n */\n prev() {\n this.navigate(Dir.Prev);\n }\n /**\n * Navigates the ScrollView to the next item.\n */\n next() {\n this.navigate(Dir.Next);\n }\n /**\n * @hidden\n */\n transitionEndHandler(e) {\n this.animationState = null;\n if (e.toState === 'left' || e.toState === 'right') {\n if (this.pageIndex !== null) {\n this.activeIndex = this.pageIndex;\n this.pageIndex = null;\n }\n this.activeIndex = this.index;\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n }\n }\n /**\n * @hidden\n */\n handlePress(e) {\n this.initialTouchCoordinate = e.pageX;\n }\n /**\n * @hidden\n */\n handleDrag(e) {\n const deltaX = e.pageX - this.initialTouchCoordinate;\n if (!this.animationState && !this.isDragForbidden(deltaX) && this.draggedInsideBounds(deltaX)) {\n this.renderer.setStyle(this.itemWrapper.nativeElement, 'transform', `translateX(${deltaX}px)`);\n }\n }\n /**\n * @hidden\n */\n handleRelease(e) {\n const deltaX = e.pageX - this.initialTouchCoordinate;\n if (this.isDragForbidden(deltaX)) {\n return;\n }\n this.ngZone.run(() => {\n if (this.draggedEnoughToNavigate(deltaX)) {\n if (this.isRTL) {\n this.changeIndex(deltaX < 0 ? Dir.Prev : Dir.Next);\n }\n else {\n this.changeIndex(deltaX > 0 ? Dir.Prev : Dir.Next);\n }\n if (!this.animate) {\n this.renderer.removeStyle(this.itemWrapper.nativeElement, 'transform');\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n }\n }\n else {\n if (this.animate && deltaX) {\n this.animationState = 'center';\n }\n else {\n this.renderer.removeStyle(this.itemWrapper.nativeElement, 'transform');\n }\n }\n });\n }\n /**\n * @hidden\n */\n pageChange(idx) {\n if (!this.animationState && this.activeIndex !== idx) {\n if (this.animate) {\n this.pageIndex = idx;\n if (this.isRTL) {\n this.animationState = (this.pageIndex > this.index ? 'right' : 'left');\n }\n else {\n this.animationState = (this.pageIndex > this.index ? 'left' : 'right');\n }\n }\n else {\n this.activeIndex = idx;\n }\n }\n }\n /**\n * @hidden\n */\n inlineListItemStyles(idx) {\n return {\n 'height': this.height,\n 'transform': this.transforms[idx],\n 'width': '100%',\n 'position': 'absolute',\n 'top': '0',\n 'left': '0'\n };\n }\n /**\n * @hidden\n */\n displayLeftArrow() {\n let isNotBorderItem;\n if (this.isRTL) {\n isNotBorderItem = this.activeIndex + 1 < this.view.total;\n }\n else {\n isNotBorderItem = this.activeIndex > 0;\n }\n return (this.endless || isNotBorderItem) && this.view.total > 0;\n }\n /**\n * @hidden\n */\n leftArrowClick() {\n if (this.isRTL) {\n this.next();\n }\n else {\n this.prev();\n }\n }\n /**\n * @hidden\n */\n displayRightArrow() {\n let isNotBorderItem;\n if (this.isRTL) {\n isNotBorderItem = this.activeIndex > 0;\n }\n else {\n isNotBorderItem = this.activeIndex + 1 < this.view.total;\n }\n return (this.endless || isNotBorderItem) && this.view.total > 0;\n }\n /**\n * @hidden\n */\n rightArrowClick() {\n if (this.isRTL) {\n this.prev();\n }\n else {\n this.next();\n }\n }\n draggedInsideBounds(deltaX) {\n return Math.abs(deltaX) <= this.element.nativeElement.offsetWidth;\n }\n draggedEnoughToNavigate(deltaX) {\n return Math.abs(deltaX) > (this.element.nativeElement.offsetWidth / 2);\n }\n isDragForbidden(deltaX) {\n let pastEnd;\n if (this.isRTL) {\n pastEnd = deltaX < 0 && deltaX !== 0;\n }\n else {\n pastEnd = deltaX > 0 && deltaX !== 0;\n }\n const isEndReached = ((this.activeIndex === 0 && pastEnd) || (this.activeIndex === this.view.total - 1 && !pastEnd));\n return !this.endless && isEndReached;\n }\n keyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === Keys.ArrowLeft) {\n if (this.isRTL) {\n this.next();\n return;\n }\n this.prev();\n }\n else if (keyCode === Keys.ArrowRight) {\n if (this.isRTL) {\n this.prev();\n return;\n }\n this.next();\n }\n if (this.arrows && keyCode === Keys.Space || keyCode === Keys.Enter) {\n const prevButton = this.prevButton?.nativeElement;\n const nextButton = this.nextButton?.nativeElement;\n const activeElement = document.activeElement;\n const isPrevButtonFocused = activeElement === prevButton;\n const isNextButtonFocused = activeElement === nextButton;\n if (isPrevButtonFocused) {\n if (this.isRTL) {\n this.next();\n return;\n }\n this.prev();\n }\n else if (isNextButtonFocused) {\n if (this.isRTL) {\n this.prev();\n return;\n }\n this.next();\n }\n }\n }\n navigate(direction) {\n if (this.isDataSourceEmpty || this.animationState) {\n return;\n }\n this.changeIndex(direction);\n if (!this.animate) {\n this.activeIndexChange.emit(this.activeIndex);\n this.itemChanged.emit({ index: this.activeIndex, item: this.view.item(1) });\n }\n }\n changeIndex(direction) {\n if (direction === Dir.Next && this.view.canMoveNext()) {\n this.index = (this.index + 1) % this.view.total;\n if (this.animate) {\n this.animationState = this.isRTL ? 'right' : 'left';\n }\n else {\n this.activeIndex = this.index;\n }\n }\n else if (direction === Dir.Prev && this.view.canMovePrev()) {\n this.index = this.index === 0 ? this.view.total - 1 : this.index - 1;\n if (this.animate) {\n this.animationState = this.isRTL ? 'left' : 'right';\n }\n else {\n this.activeIndex = this.index;\n }\n }\n }\n get isRTL() {\n return this.direction === 'rtl';\n }\n get prevButtonArrowIcon() {\n return this.direction === 'ltr' ? 'chevron-left' : 'chevron-right';\n }\n get nextButtonArrowIcon() {\n return this.direction === 'ltr' ? 'chevron-right' : 'chevron-left';\n }\n get prevButtonArrowSVGIcon() {\n return this.direction === 'ltr' ? this.chevronLeftIcon : this.chevronRightIcon;\n }\n get nextButtonArrowSVGIcon() {\n return this.direction === 'ltr' ? this.chevronRightIcon : this.chevronLeftIcon;\n }\n}\nScrollViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nScrollViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ScrollViewComponent, selector: \"kendo-scrollview\", inputs: { data: \"data\", activeIndex: \"activeIndex\", width: \"width\", height: \"height\", endless: \"endless\", pagerOverlay: \"pagerOverlay\", animate: \"animate\", pageable: \"pageable\", arrows: \"arrows\" }, outputs: { itemChanged: \"itemChanged\", activeIndexChange: \"activeIndexChange\" }, host: { properties: { \"class.k-scrollview\": \"this.scrollViewClass\", \"attr.role\": \"this.scrollViewRole\", \"attr.aria-roledescription\": \"this.scrollViewRoleDescription\", \"class.k-scrollview-light\": \"this.scrollViewLightOverlayClass\", \"class.k-scrollview-dark\": \"this.scrollViewDarkOverlayClass\", \"style.width\": \"this.hostWidth\", \"style.height\": \"this.hostHeight\", \"attr.tabindex\": \"this.tabIndex\", \"attr.aria-live\": \"this.ariaLive\", \"attr.dir\": \"this.dir\", \"style.touch-action\": \"this.touchAction\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scrollview'\n }\n ], queries: [{ propertyName: \"itemTemplateRef\", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: \"itemWrapper\", first: true, predicate: [\"itemWrapper\"], descendants: true }, { propertyName: \"prevButton\", first: true, predicate: [\"prevButton\"], descendants: true }, { propertyName: \"nextButton\", first: true, predicate: [\"nextButton\"], descendants: true }], exportAs: [\"kendoScrollView\"], usesOnChanges: true, ngImport: i0, template: `\n\n \n \n\n
    \n
    \n \n \n
    \n
    \n
    \n\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }, { type: ScrollViewPagerComponent, selector: \"kendo-scrollview-pager\", inputs: [\"activeIndex\", \"data\"], outputs: [\"pagerIndexChange\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoScrollViewLocalizedMessages]\" }, { type: i5.DraggableDirective, selector: \"[kendoDraggable]\", inputs: [\"enableDrag\"], outputs: [\"kendoPress\", \"kendoDrag\", \"kendoRelease\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i6.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i6.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('animateTo', [\n state('center, left, right', style({ transform: 'translateX(0)' })),\n transition('* => right', [\n animate('300ms ease-out', style({ transform: 'translateX(100%)' }))\n ]),\n transition('* => left', [\n animate('300ms ease-out', style({ transform: 'translateX(-100%)' }))\n ]),\n transition('* => center', [\n animate('300ms ease-out')\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewComponent, decorators: [{\n type: Component,\n args: [{\n animations: [\n trigger('animateTo', [\n state('center, left, right', style({ transform: 'translateX(0)' })),\n transition('* => right', [\n animate('300ms ease-out', style({ transform: 'translateX(100%)' }))\n ]),\n transition('* => left', [\n animate('300ms ease-out', style({ transform: 'translateX(-100%)' }))\n ]),\n transition('* => center', [\n animate('300ms ease-out')\n ])\n ])\n ],\n exportAs: 'kendoScrollView',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.scrollview'\n }\n ],\n selector: 'kendo-scrollview',\n template: `\n\n \n \n\n
    \n
    \n \n \n
    \n
    \n
    \n\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { data: [{\n type: Input\n }], activeIndex: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], endless: [{\n type: Input\n }], pagerOverlay: [{\n type: Input\n }], animate: [{\n type: Input\n }], pageable: [{\n type: Input\n }], arrows: [{\n type: Input\n }], itemChanged: [{\n type: Output\n }], activeIndexChange: [{\n type: Output\n }], itemTemplateRef: [{\n type: ContentChild,\n args: [TemplateRef]\n }], itemWrapper: [{\n type: ViewChild,\n args: ['itemWrapper']\n }], prevButton: [{\n type: ViewChild,\n args: ['prevButton']\n }], nextButton: [{\n type: ViewChild,\n args: ['nextButton']\n }], scrollViewClass: [{\n type: HostBinding,\n args: ['class.k-scrollview']\n }], scrollViewRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], scrollViewRoleDescription: [{\n type: HostBinding,\n args: ['attr.aria-roledescription']\n }], scrollViewLightOverlayClass: [{\n type: HostBinding,\n args: ['class.k-scrollview-light']\n }], scrollViewDarkOverlayClass: [{\n type: HostBinding,\n args: ['class.k-scrollview-dark']\n }], hostWidth: [{\n type: HostBinding,\n args: ['style.width']\n }], hostHeight: [{\n type: HostBinding,\n args: ['style.height']\n }], tabIndex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaLive: [{\n type: HostBinding,\n args: ['attr.aria-live']\n }], dir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], touchAction: [{\n type: HostBinding,\n args: ['style.touch-action']\n }] } });\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_scrollview %}#toc-localization)).\n */\nclass CustomMessagesComponent extends ScrollViewMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: CustomMessagesComponent, selector: \"kendo-scrollview-messages\", providers: [\n {\n provide: ScrollViewMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: CustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ScrollViewMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }\n ],\n selector: 'kendo-scrollview-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst DECLARATIONS = [\n ScrollViewComponent,\n ScrollViewPagerComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective\n];\nconst EXPORTS = [\n ScrollViewComponent,\n CustomMessagesComponent\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the ScrollView component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ScrollView module\n * import { ScrollViewModule } from '@progress/kendo-angular-scrollview';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ScrollViewModule], // import ScrollView module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass ScrollViewModule {\n}\nScrollViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewModule, declarations: [ScrollViewComponent,\n ScrollViewPagerComponent,\n CustomMessagesComponent,\n LocalizedMessagesDirective], imports: [CommonModule, DraggableModule, IconsModule], exports: [ScrollViewComponent,\n CustomMessagesComponent] });\nScrollViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewModule, imports: [[CommonModule, DraggableModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ScrollViewModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [DECLARATIONS],\n exports: [EXPORTS],\n imports: [CommonModule, DraggableModule, IconsModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomMessagesComponent, ScrollViewComponent, ScrollViewModule, ScrollViewPagerComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Component, Input, Output, HostBinding, HostListener, Directive, forwardRef, ElementRef, ViewContainerRef, ContentChildren, ViewChild, ViewChildren, isDevMode, NgModule } from '@angular/core';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport * as i7 from '@progress/kendo-angular-common';\nimport { Keys, guid, isDocumentAvailable, ResizeSensorModule } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport { Subject, Subscription, merge, fromEvent } from 'rxjs';\nimport { moreVerticalIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from '@progress/kendo-angular-buttons';\nimport { DropDownButtonComponent, ButtonsModule } from '@progress/kendo-angular-buttons';\nimport * as i2$1 from '@progress/kendo-angular-icons';\nimport { IconsModule } from '@progress/kendo-angular-icons';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-toolbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142340,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * @hidden\n */\nclass RefreshService {\n constructor() {\n this.onRefresh = new EventEmitter();\n }\n refresh(tool) {\n this.onRefresh.emit(tool);\n }\n}\nRefreshService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RefreshService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRefreshService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RefreshService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RefreshService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @hidden\n */\nconst focusableRegex = /^(?:a|input|select|textarea|button|object)$/i;\n/**\n * @hidden\n */\nfunction outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseFloat(style.marginLeft) || 0 + parseFloat(style.marginRight) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction innerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width -= parseFloat(style.paddingLeft) || 0 + parseFloat(style.borderLeftWidth) || 0;\n width -= parseFloat(style.paddingRight) || 0 + parseFloat(style.borderRightWidth) || 0;\n return width;\n}\n/**\n * @hidden\n */\nfunction outerHeight(element) {\n let width = element.offsetHeight;\n const style = getComputedStyle(element);\n width += parseFloat(style.marginTop) || 0 + parseFloat(style.marginBottom) || 0;\n return width;\n}\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst isVisible = (element) => {\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they should still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = (element, checkVisibility = true) => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n let focusable = tabIndex !== null;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled;\n }\n return focusable && (!checkVisibility || isVisible(element));\n }\n return false;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusable(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findFocusableSibling = (element, checkVisibility = true, reverse) => {\n let node = reverse ? element.prevSibling : element.nextSibling;\n while (node) {\n if (node.nodeType === 1) {\n const result = findElement(node, el => isFocusable(el, checkVisibility));\n if (result) {\n return result;\n }\n }\n node = reverse ? node.prevSibling : node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst isPresent = (value) => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst makePeeker = (collection) => (index) => isPresent(collection[index]);\n/**\n * @hidden\n */\nconst getIndexOfFocused = (prevKeyCode, nextKeyCode, collection) => (ev) => {\n switch (ev.type) {\n case 'keydown':\n if (ev.keyCode === prevKeyCode) {\n return collection.length - 1;\n }\n if (ev.keyCode === nextKeyCode) {\n return 0;\n }\n break;\n case 'click':\n return collection.findIndex(be => be === ev.target || be.contains(ev.target));\n case 'focus':\n return 0;\n default:\n return 0;\n }\n};\n/**\n * @hidden\n */\nconst seekFocusedIndex = (prevKeyCode, nextKeyCode, seeker) => (startIndex, ev) => {\n switch (ev.keyCode) {\n case prevKeyCode:\n return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n case nextKeyCode:\n return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n default:\n return startIndex;\n }\n};\n/**\n * @hidden\n */\nconst areEqual = (first) => (second) => first === second;\n/**\n * @hidden\n */\nconst getNextKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowDown : rtl ? Keys.ArrowLeft : Keys.ArrowRight;\n/**\n * @hidden\n */\nconst getPrevKey = (rtl = false) => (overflows = true) => overflows ? Keys.ArrowUp : rtl ? Keys.ArrowRight : Keys.ArrowLeft;\n/**\n * @hidden\n */\nconst getValueForLocation = (property, displayMode, overflows) => {\n switch (displayMode) {\n case 'toolbar':\n return overflows ? undefined : property;\n case 'overflow':\n return overflows ? property : undefined;\n default:\n return property;\n }\n};\n/**\n * @hidden\n */\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n default:\n break;\n }\n};\n\n/**\n * @hidden\n */\nclass NavigationService {\n constructor(zone) {\n this.zone = zone;\n this.focused = { renderedTool: null, index: -1 };\n this.renderedTools = [];\n this.isPopupFocused = false;\n this.isOverflowButtonFocused = false;\n }\n setRenderedTools(rts) {\n this.renderedTools = [...rts];\n }\n click({ context, event: ev }) {\n if (this.focused.renderedTool !== context && ev) {\n this.focus(context, ev);\n }\n }\n moveFocusToToolBar() {\n this.isPopupFocused = false;\n this.focusOverflowButton();\n }\n moveFocusToPopup() {\n this.isPopupFocused = true;\n this.blurOverflowButton();\n this.focus();\n }\n focusNext(ev) {\n if (this.isOverflowButtonFocused) {\n const firstFocusableRT = this.getFocusableTools()[0];\n this.focus(firstFocusableRT, ev);\n }\n else if (!this.isOverflowButtonFocused && this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const nextRT = this.getFocusableTools().slice(this.focused.index + 1)[0];\n if (nextRT) {\n this.focus(nextRT, ev);\n }\n else {\n if (this.isOverflowButtonVisible() && !this.isPopupFocused) {\n this.focusOverflowButton();\n }\n else {\n const firstRT = this.getFocusableTools()[0];\n this.focus(firstRT, ev);\n }\n }\n }\n }\n focusPrev(ev) {\n if (this.isOverflowButtonFocused) {\n const lastFocusableRT = this.getFocusableTools().reverse()[0];\n this.focus(lastFocusableRT, ev);\n }\n else if (!this.isOverflowButtonFocused && this.focused.renderedTool && !this.focused.renderedTool.tool.handleKey(ev)) {\n const prevRT = this.getFocusableTools()\n .slice(0, this.focused.index)\n .reverse()[0];\n if (prevRT) {\n this.focus(prevRT, ev);\n }\n else {\n if (this.isOverflowButtonVisible() && !this.isPopupFocused) {\n this.focusOverflowButton();\n }\n else {\n const lastRT = this.getFocusableTools().reverse()[0];\n this.focus(lastRT, ev);\n }\n }\n }\n }\n resetNavigation() {\n this.blurOverflowButton();\n this.focused.renderedTool = null;\n this.focused.index = -1;\n }\n focusFirst(ev) {\n const firstTool = this.getFocusableTools()[0];\n const overFlowButton = this.overflowButton;\n if (firstTool) {\n this.focused.renderedTool = firstTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === firstTool);\n this.focus(firstTool, ev);\n }\n else if (overFlowButton) {\n overFlowButton.nativeElement.focus();\n }\n }\n focusLast(ev) {\n const lastTool = this.getFocusableTools().reverse()[0];\n const overFlowButton = this.overflowButton;\n if (lastTool) {\n this.focused.renderedTool = lastTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === lastTool);\n this.focus(lastTool, ev);\n }\n else if (overFlowButton) {\n overFlowButton.nativeElement.focus();\n }\n }\n getFocusableTools() {\n return this.renderedTools.filter(rt => rt.tool.overflows === this.isPopupFocused && rt.tool.canFocus());\n }\n focus(renderedTool, ev) {\n // running the code below in onStable fixes issue #2939\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (!renderedTool) {\n const focusableRTs = this.getFocusableTools();\n const lastFocusedRT = focusableRTs.find(rt => rt === this.focused.renderedTool) || focusableRTs[0];\n // guard against only disabled tools\n if (lastFocusedRT) {\n this.focused.renderedTool = lastFocusedRT;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === lastFocusedRT);\n // if event is undefined, then this means that the tool is the first one in the overflow popup\n lastFocusedRT.tool.focus(ev);\n }\n }\n else if (renderedTool.tool.canFocus && renderedTool.tool.canFocus()) {\n this.focused.renderedTool = renderedTool;\n this.focused.index = this.getFocusableTools().findIndex(rt => rt === renderedTool);\n renderedTool.tool.focus(ev);\n this.blurOverflowButton();\n }\n });\n }\n blurOverflowButton() {\n if (this.overflowButton) {\n this.isOverflowButtonFocused = false;\n this.overflowButton.nativeElement.tabIndex = -1;\n }\n }\n focusOverflowButton() {\n this.isOverflowButtonFocused = true;\n this.overflowButton.nativeElement.tabIndex = 0;\n this.overflowButton.nativeElement.focus();\n }\n isOverflowButtonVisible() {\n return (isPresent(this.overflowButton) &&\n window.getComputedStyle(this.overflowButton.nativeElement).getPropertyValue('visibility') === 'visible');\n }\n}\nNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: NavigationService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * Represents the Base ToolBar Tool component for Angular.\n * Extend this class to create custom tools.\n */\nclass ToolBarToolComponent {\n constructor() {\n this.tabIndex = -1; //Focus movement inside the toolbar is managed using roving tabindex.\n this.overflows = true;\n // this should be replaced with showTool: DisplayMode = 'both';\n /**\n * @hidden\n */\n this.responsive = true;\n }\n get toolbarDisplay() {\n return this.overflows ? 'none' : 'inline-block';\n }\n get overflowDisplay() {\n return this.overflows ? 'block' : 'none';\n }\n /**\n * Determines if the tool can be focused.\n * If the returned value is `false`, the tool will not be part of the keyboard navigation.\n * @returns `true` if the tool should take part in keyboard navigation.\n */\n canFocus() {\n return false;\n }\n /**\n * Called when the tool is focused.\n * The method accepts as argument the original browser event, which can be a `KeyboardEvent`, `MouseEvent` or `FocusEvent`.\n * @param {Event} ev - This is the event that caused the tool to be focused.\n */\n focus(ev) {\n /* noop */\n }\n /**\n * Called when the tool is focused and one of the arrow keys is pressed.\n * The returned boolean value determines whether the `ToolBarComponent` will move the focus to the next/previous `ToolBarToolComponent`\n * ([see example]({% slug customcontroltypes_toolbar %}#toc-adding-keyboard-navigation)).\n * @param {KeyboardEvent} ev - The last pressed arrow key\n * @returns a boolean value determines whether the focus will move to the next/previous component.\n */\n handleKey(ev) {\n return false;\n }\n}\nToolBarToolComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarToolComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarToolComponent, selector: \"toolbar-tool\", inputs: { responsive: \"responsive\" }, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarToolComponent, decorators: [{\n type: Component,\n args: [{\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'toolbar-tool',\n template: ``\n }]\n }], propDecorators: { responsive: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * @hidden\n */\nclass RendererService {\n getElement() {\n return this.element.nativeElement;\n }\n querySelector(selector) {\n return this.element.nativeElement.querySelector(selector);\n }\n querySelectorAll(selector) {\n return this.element.nativeElement.querySelectorAll(selector);\n }\n findFocusable() {\n return findFocusable(this.element.nativeElement, false);\n }\n findFocusableChild(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableChild(element, false);\n }\n findNextFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false);\n }\n findPrevFocusableSibling(element) {\n if (!element) {\n element = this.findFocusable();\n }\n return findFocusableSibling(element, false, true);\n }\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RendererService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: RendererService, decorators: [{\n type: Injectable\n }] });\n\nconst MIN_SPACER_WIDTH = 18;\n/**\n * @hidden\n */\nclass ToolBarRendererComponent {\n constructor(element, renderer, rendererService, refreshService) {\n this.element = element;\n this.renderer = renderer;\n this.rendererService = rendererService;\n this.refreshService = refreshService;\n this.rendererClick = new EventEmitter();\n this.hostClass = true;\n this.rendererService.element = element;\n this.rendererService.renderer = this;\n this.refreshSubscription = this.refreshService.onRefresh.subscribe((tool) => {\n if (this.tool === tool) {\n this.refresh();\n }\n });\n }\n get spacerClass() {\n return this.location === 'toolbar' && this.isSpacer;\n }\n get isSpacer() {\n return this.tool && this.tool.__isSpacer;\n }\n onClick(ev) {\n this.rendererClick.emit({ context: this, event: ev });\n }\n ngOnInit() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n else {\n this.template = this.tool.popupTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'display', 'none');\n }\n }\n else {\n this.tool.overflows = false;\n this.template = this.tool.toolbarTemplate;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\n this.renderer.setStyle(this.element.nativeElement, 'display', 'inline-block');\n }\n }\n ngOnDestroy() {\n this.refreshSubscription.unsubscribe();\n }\n ngAfterViewInit() {\n if (this.resizable) {\n this.refresh();\n }\n }\n /**\n * @hidden\n */\n get width() {\n if (this.isSpacer) {\n return MIN_SPACER_WIDTH;\n }\n return this.tool.overflows ? 0 : outerWidth(this.element.nativeElement);\n }\n /**\n * @hidden\n */\n isDisplayed() {\n return this.element.nativeElement.style.display !== 'none';\n }\n /**\n * @hidden\n */\n refresh() {\n if (this.resizable) {\n if (this.location === 'toolbar') {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', this.tool.visibility);\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.toolbarDisplay);\n }\n else {\n this.renderer.setStyle(this.element.nativeElement, 'display', this.tool.overflowDisplay);\n }\n }\n }\n /**\n * @hidden\n */\n setAttribute(element, attr, value) {\n this.renderer.setAttribute(element, attr, value);\n }\n}\nToolBarRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarRendererComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: RendererService }, { token: RefreshService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: { tool: \"tool\", location: \"location\", resizable: \"resizable\" }, outputs: { rendererClick: \"rendererClick\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.k-spacer\": \"this.spacerClass\", \"class.k-toolbar-renderer\": \"this.hostClass\" } }, providers: [RendererService], exportAs: [\"kendoToolBarRenderer\"], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarRendererComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarRenderer',\n providers: [RendererService],\n selector: 'kendo-toolbar-renderer',\n template: `\n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: RendererService }, { type: RefreshService }]; }, propDecorators: { tool: [{\n type: Input\n }], location: [{\n type: Input\n }], resizable: [{\n type: Input\n }], rendererClick: [{\n type: Output\n }], spacerClass: [{\n type: HostBinding,\n args: ['class.k-spacer']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-toolbar-renderer']\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolbarMessages extends ComponentMessages {\n}\nToolbarMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolbarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nToolbarMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolbarMessages, selector: \"kendo-toolbar-messages-base\", inputs: { moreToolsTitle: \"moreToolsTitle\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolbarMessages, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'kendo-toolbar-messages-base'\n }]\n }], propDecorators: { moreToolsTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass LocalizedToolbarMessagesDirective extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedToolbarMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedToolbarMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedToolbarMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedToolbarMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => LocalizedToolbarMessagesDirective)\n }\n ],\n selector: '[kendoToolbarLocalizedMessages]'\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\n/* eslint-disable no-case-declarations */\nconst DEFAULT_SIZE = 'medium';\nconst immediateResizeThreshold = 300;\nconst getInitialPopupSettings = (isRtl) => ({\n animate: true,\n anchorAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'bottom' },\n popupAlign: { horizontal: isRtl ? 'left' : 'right', vertical: 'top' }\n});\n/**\n * Represents the [Kendo UI ToolBar component for Angular]({% slug overview_toolbar %}).\n */\nclass ToolBarComponent {\n constructor(localization, popupService, refreshService, navigationService, \n // Needs to be public as it is being accessed in the Editor component\n element, zone, renderer, _cdr) {\n this.localization = localization;\n this.popupService = popupService;\n this.refreshService = refreshService;\n this.navigationService = navigationService;\n this.element = element;\n this.zone = zone;\n this.renderer = renderer;\n this._cdr = _cdr;\n /**\n * Hides the overflowing tools in a popup.\n */\n this.overflow = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the ToolBar.\n */\n this.tabindex = 0;\n /**\n * Fires when the overflow popup of the ToolBar is opened.\n */\n this.open = new EventEmitter();\n /**\n * Fires when the overflow popup of the ToolBar is closed.\n */\n this.close = new EventEmitter();\n this.hostClass = true;\n this.cancelRenderedToolsSubscription$ = new Subject();\n this._size = DEFAULT_SIZE;\n this.overflowButtonClickedTime = null;\n this.subscriptions = new Subscription();\n this.popupSubs = new Subscription();\n this.role = 'toolbar';\n this.moreVerticalIcon = moreVerticalIcon;\n /**\n * @hidden\n */\n this.overflowBtnId = guid();\n /**\n * @hidden\n */\n this.popupId = guid();\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n }\n get overflowClass() {\n return `k-button-${SIZES[this.size]}`;\n }\n /**\n * @hidden\n */\n set resizable(value) {\n this.overflow = value;\n }\n get resizable() {\n return this.overflow;\n }\n /**\n * Configures the popup of the ToolBar drop-down list.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, getInitialPopupSettings(this.localization.rtl), settings);\n }\n get popupSettings() {\n return this._popupSettings || getInitialPopupSettings(this.localization.rtl);\n }\n /**\n * Specifies the padding of all Toolbar elements.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses(newSize, 'size');\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n get appendTo() {\n const { appendTo } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n set popupOpen(open) {\n if (this.popupOpen === open) {\n return;\n }\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n }\n else {\n this.close.emit(eventArgs);\n }\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n this.toggle(open);\n }\n get popupOpen() {\n return this._open;\n }\n /**\n * @hidden\n */\n onFocus(ev) {\n this.navigationService.resetNavigation();\n this.navigationService.focusFirst(ev);\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n onFocusOut(event) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n if (closest(event.relatedTarget, (el) => el === this.element.nativeElement)) {\n this.element.nativeElement.setAttribute('tabindex', '-1');\n return;\n }\n this.element.nativeElement.setAttribute('tabindex', this.tabindex.toString());\n }\n get getDir() {\n return this.direction;\n }\n get resizableClass() {\n return this.overflow;\n }\n ngAfterViewInit() {\n const element = this.element.nativeElement;\n if (!element.getAttribute('tabindex')) {\n this.element.nativeElement.setAttribute('tabindex', '0');\n }\n this.zone.runOutsideAngular(() => {\n this.toolbarKeydownListener = this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => {\n switch (ev.keyCode) {\n case Keys.ArrowLeft:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusPrev(ev);\n }\n else {\n this.navigationService.focusNext(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.ArrowRight:\n this.zone.run(() => {\n ev.preventDefault();\n if (this.direction === 'ltr') {\n this.navigationService.focusNext(ev);\n }\n else {\n this.navigationService.focusPrev(ev);\n }\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', '-1');\n });\n break;\n case Keys.Tab:\n this.zone.run(() => this.navigationService.resetNavigation());\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n break;\n case Keys.Home:\n this.zone.run(() => this.navigationService.focusFirst(ev));\n break;\n case Keys.End:\n this.zone.run(() => this.navigationService.focusLast(ev));\n break;\n default:\n break;\n }\n });\n });\n if (this.overflow) {\n this.subscriptions.add(merge(this.resizeSensor.resize, this.renderedTools.changes).subscribe(() => this.onResize()));\n this.navigationService.overflowButton = this.overflowButton;\n // because of https://github.com/telerik/kendo-angular-buttons/pull/276\n // button icons are not rendered until onResize() is called\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.zone.run(() => {\n this.onResize();\n });\n });\n });\n }\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.subscriptions.add(this.renderedTools.changes.subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray())));\n this.handleClasses(this.size, 'size');\n }\n ngOnInit() {\n this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => (this.direction = rtl ? 'rtl' : 'ltr')));\n this.zone.onStable.pipe(take(1)).subscribe(() => this.onResize());\n if (isDocumentAvailable()) {\n this.zone.runOutsideAngular(() => this.subscriptions.add(fromEvent(document, 'click')\n .pipe(filter(() => !!this.popupRef), filter((ev) => !this.popupRef.popup.instance.container.nativeElement.contains(ev.target)), filter((ev) => !this.overflowButton.nativeElement.contains(ev.target)))\n .subscribe(() => {\n this.zone.run(() => {\n this.popupOpen = false;\n });\n })));\n }\n }\n ngOnChanges(changes) {\n if (changes['tabindex']) {\n // prevents ExpressionChangedAfterItHasBeenCheckedError when tools with popup are opened/closed asynchronously\n this.element.nativeElement.setAttribute('tabindex', changes['tabindex'].currentValue.toString());\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n if (this.toolbarKeydownListener) {\n this.toolbarKeydownListener();\n }\n this.cancelRenderedToolsSubscription$.next();\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n get moreToolsTitle() {\n return this.localization.get('moreToolsTitle');\n }\n /**\n * @hidden\n */\n get cdr() {\n return this._cdr;\n }\n /**\n * @hidden\n */\n onRendererClick(data) {\n this.navigationService.click(data);\n this.element.nativeElement.setAttribute('tabindex', '-1');\n }\n /**\n * @hidden\n */\n showPopup() {\n this.popupOpen = !this.popupOpen;\n this.navigationService.click({ context: undefined, event: undefined });\n this.overflowButtonClickedTime = Date.now();\n }\n /**\n * Toggles the visibility of the overflow popup.\n */\n toggle(popupOpen) {\n this._open = popupOpen !== undefined ? popupOpen : !this.popupOpen;\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupOpen) {\n this.popupRef = this.popupService.open({\n anchor: this.overflowButton,\n anchorAlign: this.popupSettings.anchorAlign,\n popupAlign: this.popupSettings.popupAlign,\n content: this.popupTemplate,\n appendTo: this.appendTo,\n animate: this.popupSettings.animate,\n popupClass: this.normalizePopupClasses(this.popupSettings.popupClass),\n positionMode: 'absolute'\n });\n this.setPopupContentDimensions();\n this.popupSubs.add(this.popupRef.popupOpen.subscribe(this.onPopupOpen.bind(this)));\n this.popupSubs.add(this.popupRef.popupClose.subscribe(this.onPopupClose.bind(this)));\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (isDocumentAvailable()) {\n const containerWidth = innerWidth(this.element.nativeElement) - this.overflowAnchorWidth;\n this.shrink(containerWidth, this.childrenWidth);\n this.stretch(containerWidth, this.childrenWidth);\n this.displayAnchor();\n this.resizeSensor?.acceptSize();\n const isImmediateResize = (Date.now() - this.overflowButtonClickedTime) < immediateResizeThreshold;\n if (this.popupOpen && !isImmediateResize) {\n this.toggle();\n }\n }\n }\n /**\n * @hidden\n */\n onPopupOpen() {\n this.zone.runOutsideAngular(() => {\n this.overflowKeydownListener = this.renderer.listen(this.popupRef.popupElement, 'keydown', (ev) => {\n const currentTool = this.overflowRenderedTools.toArray().find(tool => closest(ev.target, (el) => el === tool.element.nativeElement));\n switch (ev.keyCode) {\n case Keys.ArrowUp:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusPrev(ev);\n });\n break;\n case Keys.ArrowDown:\n this.zone.run(() => {\n ev.preventDefault();\n this.navigationService.focusNext(ev);\n });\n break;\n case Keys.Escape:\n this.zone.run(() => this.toggle(false));\n const eventArgs = new PreventableEvent();\n this.close.emit(eventArgs);\n break;\n case Keys.Tab:\n this.zone.run(() => {\n this.toggle(false);\n this.navigationService.resetNavigation();\n });\n break;\n case Keys.Enter:\n case Keys.Space:\n this.zone.run(() => {\n if (currentTool) {\n ev.preventDefault();\n ev.target.click();\n ev.target.focus();\n }\n });\n break;\n default:\n break;\n }\n });\n });\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.moveFocusToPopup();\n this.navigationService.setRenderedTools(this.overflowRenderedTools.toArray());\n this.overflowRenderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n this.renderer.setAttribute(this.overflowButton.nativeElement, 'aria-controls', this.popupId);\n }\n /**\n * @hidden\n */\n onPopupClose() {\n this.cancelRenderedToolsSubscription$.next();\n this.navigationService.setRenderedTools(this.renderedTools.toArray());\n this.renderedTools.changes\n .pipe(takeUntil(this.cancelRenderedToolsSubscription$))\n .subscribe((rts) => this.navigationService.setRenderedTools(rts.toArray()));\n this.navigationService.moveFocusToToolBar();\n if (this.overflowKeydownListener) {\n this.overflowKeydownListener();\n }\n this.renderer.removeAttribute(this.overflowButton.nativeElement, 'aria-controls');\n }\n displayAnchor() {\n const visibility = this.allTools.filter(t => t.overflows && t.responsive).length > 0 ? 'visible' : 'hidden';\n this.overflowButton && this.renderer.setStyle(this.overflowButton.nativeElement, 'visibility', visibility);\n }\n get popupWidth() {\n if (!this.popupSettings || !this.popupSettings.width) {\n return 'auto';\n }\n return isNaN(this.popupSettings.width) ? this.popupSettings.width : `${this.popupSettings.width}px`;\n }\n get popupHeight() {\n if (!this.popupSettings || !this.popupSettings.height) {\n return;\n }\n return isNaN(this.popupSettings.height) ? this.popupSettings.height : `${this.popupSettings.height}px`;\n }\n get overflowAnchorWidth() {\n if (!this.overflow) {\n return 0;\n }\n if (!this.cachedOverflowAnchorWidth) {\n this.cachedOverflowAnchorWidth = this.overflowButton.nativeElement.offsetWidth;\n }\n return this.cachedOverflowAnchorWidth;\n }\n get gap() {\n if (isPresent(this.cachedGap)) {\n return this.cachedGap;\n }\n const computedGap = getComputedStyle(this.element.nativeElement).gap;\n this.cachedGap = isPresent(computedGap) ? parseInt(computedGap, 10) : 0;\n return this.cachedGap;\n }\n get childrenWidth() {\n const width = this.renderedTools.reduce((totalWidth, tool) => tool.width + totalWidth + (tool.isDisplayed() ? this.gap : 0), 0);\n return Math.ceil(width);\n }\n get visibleTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === false;\n });\n }\n get overflowTools() {\n return this.allTools.filter((tool) => {\n return tool.overflows === true;\n });\n }\n shrink(containerWidth, childrenWidth) {\n let width;\n if (containerWidth < childrenWidth) {\n for (let i = this.visibleTools.length - 1; i >= 0; i--) {\n if (containerWidth > childrenWidth) {\n break;\n }\n else {\n width = this.hideLastVisibleTool();\n childrenWidth -= width;\n }\n }\n }\n }\n stretch(containerWidth, childrenWidth) {\n let width;\n if (containerWidth > childrenWidth) {\n for (let i = this.overflowTools.length - 1; i >= 0; i--) {\n width = this.showFirstHiddenTool(containerWidth, childrenWidth);\n if (width) {\n childrenWidth += width + this.gap;\n }\n else {\n break;\n }\n }\n }\n }\n hideLastVisibleTool() {\n const tool = this.visibleTools[this.visibleTools.length - 1];\n const renderedElement = this.renderedTools.find((r) => {\n return r.tool === tool;\n });\n const width = renderedElement.width;\n tool.overflows = true;\n this.refreshService.refresh(tool);\n return width;\n }\n showFirstHiddenTool(containerWidth, childrenWidth) {\n const tool = this.overflowTools[0];\n const renderedElement = this.renderedTools.find(r => r.tool === tool);\n tool.overflows = false;\n tool.visibility = 'hidden';\n this.refreshService.refresh(tool);\n if (containerWidth > childrenWidth + renderedElement.width) {\n tool.visibility = 'visible';\n this.refreshService.refresh(tool);\n }\n else {\n tool.overflows = true;\n this.refreshService.refresh(tool);\n }\n return renderedElement.width; // returns 0 if `overflows` is true\n }\n setPopupContentDimensions() {\n const popupContentContainer = this.popupRef.popup.instance.contentContainer.nativeElement;\n popupContentContainer.style.width = this.popupWidth;\n popupContentContainer.style.height = this.popupHeight;\n popupContentContainer.style.overflow = 'auto';\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupSubs.unsubscribe();\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n handleClasses(value, input) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('toolbar', input, this[input], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n normalizePopupClasses(classList) {\n let classes = ['k-menu-popup', 'k-toolbar-popup'];\n if (!classList) {\n return classes;\n }\n if (typeof classList === 'string') {\n classes.push(...classList.split(' '));\n }\n else if (Array.isArray(classList)) {\n classes = [...classes, ...classList];\n }\n else {\n for (const cl in classList) {\n classes.push(classList[cl]);\n }\n }\n return classes;\n }\n}\nToolBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PopupService }, { token: RefreshService }, { token: NavigationService }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nToolBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarComponent, selector: \"kendo-toolbar\", inputs: { overflow: \"overflow\", resizable: \"resizable\", popupSettings: \"popupSettings\", tabindex: \"tabindex\", size: \"size\", tabIndex: \"tabIndex\" }, outputs: { open: \"open\", close: \"close\" }, host: { listeners: { \"focus\": \"onFocus($event)\", \"focusout\": \"onFocusOut($event)\" }, properties: { \"class.k-toolbar\": \"this.hostClass\", \"attr.role\": \"this.role\", \"attr.dir\": \"this.getDir\", \"class.k-toolbar-resizable\": \"this.resizableClass\" } }, providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ], queries: [{ propertyName: \"allTools\", predicate: ToolBarToolComponent }], viewQueries: [{ propertyName: \"overflowButton\", first: true, predicate: [\"overflowButton\"], descendants: true, read: ElementRef }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"resizeSensor\", first: true, predicate: [\"resizeSensor\"], descendants: true }, { propertyName: \"container\", first: true, predicate: [\"container\"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: \"renderedTools\", predicate: [\"toolbarRenderer\"], descendants: true }, { propertyName: \"overflowRenderedTools\", predicate: [\"overflowRenderer\"], descendants: true }], exportAs: [\"kendoToolBar\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `, isInline: true, components: [{ type: ToolBarRendererComponent, selector: \"kendo-toolbar-renderer\", inputs: [\"tool\", \"location\", \"resizable\"], outputs: [\"rendererClick\"], exportAs: [\"kendoToolBarRenderer\"] }, { type: i1$1.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i7.ResizeSensorComponent, selector: \"kendo-resize-sensor\", inputs: [\"rateLimit\"], outputs: [\"resize\"] }], directives: [{ type: LocalizedToolbarMessagesDirective, selector: \"[kendoToolbarLocalizedMessages]\" }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBar',\n providers: [\n RefreshService,\n NavigationService,\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.toolbar'\n }\n ],\n selector: 'kendo-toolbar',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.PopupService }, { type: RefreshService }, { type: NavigationService }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { overflow: [{\n type: Input\n }], resizable: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], size: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: ['tabIndex']\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], allTools: [{\n type: ContentChildren,\n args: [ToolBarToolComponent]\n }], overflowButton: [{\n type: ViewChild,\n args: ['overflowButton', { static: false, read: ElementRef }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], resizeSensor: [{\n type: ViewChild,\n args: ['resizeSensor', { static: false }]\n }], container: [{\n type: ViewChild,\n args: ['container', { read: ViewContainerRef, static: true }]\n }], renderedTools: [{\n type: ViewChildren,\n args: ['toolbarRenderer']\n }], overflowRenderedTools: [{\n type: ViewChildren,\n args: ['overflowRenderer']\n }], hostClass: [{\n type: HostBinding,\n args: ['class.k-toolbar']\n }], onFocus: [{\n type: HostListener,\n args: ['focus', ['$event']]\n }], onFocusOut: [{\n type: HostListener,\n args: ['focusout', ['$event']]\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], getDir: [{\n type: HostBinding,\n args: ['attr.dir']\n }], resizableClass: [{\n type: HostBinding,\n args: ['class.k-toolbar-resizable']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Button tool for Angular]({% slug controltypes_toolbar %}#toc-buttons).\n */\nclass ToolBarButtonComponent extends ToolBarToolComponent {\n constructor(element, zone) {\n super();\n this.element = element;\n this.zone = zone;\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * Provides visual styling that indicates if the Button is active\n * ([see example]({% slug controltypes_toolbar %}#toc-toggle-buttons)).\n * By default, `toggleable` is set to `false`.\n */\n this.toggleable = false;\n /**\n * Sets the selected state of the Button.\n */\n this.selected = false;\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the Button is clicked.\n */\n this.click = new EventEmitter();\n /**\n * Fires when the Button [pointerdown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/pointerdown_event) event is triggered.\n */\n this.pointerdown = new EventEmitter();\n /**\n * Fires each time the selected state of a Toggle Button is changed.\n * The event argument is the new selected state (Boolean).\n */\n this.selectedChange = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this._showText = 'both';\n }\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n set showText(value) {\n this._showText = value;\n this.setTextDisplayMode();\n }\n ;\n get showText() {\n return this._showText;\n }\n /**\n * Specifies the text of the Button ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n */\n set text(text) {\n this._text = text;\n this.setTextDisplayMode();\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n get togglable() {\n return this.toggleable;\n }\n set togglable(value) {\n this.toggleable = value;\n }\n /**\n * Defines the name for an existing icon in a Kendo UI theme\n * ([see example]({% slug controltypes_toolbar %}#toc-buttons)).\n * The icon is rendered inside the Button by a `span.k-icon` element.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines a CSS class—or multiple classes separated by spaces—\n * which are applied to a `span` element inside the Button. Allows the usage of custom icons.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines an SVGIcon to be rendered within the button.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n const isIconSet = this.toolbarOptions.icon || this.overflowOptions.icon;\n const isIconClassSet = this.toolbarOptions.iconClass || this.overflowOptions.iconClass;\n if (isDevMode() &&\n icon &&\n isIconSet &&\n isIconClassSet) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this.toolbarOptions.svgIcon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.svgIcon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines a URL which is used for an `img` element inside the Button.\n * The URL can be relative or absolute. If relative, it is evaluated with relation to the web page URL.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n ngOnInit() {\n this.setTextDisplayMode();\n }\n /**\n * @hidden\n */\n onBlur() {\n this.getButton().tabIndex = -1;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev) {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n this.getButton().focus();\n }\n this.getButton().tabIndex = 0;\n }\n /**\n * @hidden\n */\n handleKey() {\n this.getButton().tabIndex = -1;\n return false;\n }\n /**\n * @hidden\n */\n get toolbarButtonClass() {\n return this.toggleable ? 'k-toolbar-toggle-button' : 'k-toolbar-button';\n }\n /**\n * @hidden\n */\n handleClick(ev) {\n this.click.emit(ev);\n if (this.toggleable) {\n this.selected = !this.selected;\n this.selectedChange.emit(this.selected);\n }\n }\n /**\n * @hidden\n */\n selectedChangeHandler(state) {\n this.selected = state;\n this.selectedChange.emit(state);\n }\n getButton() {\n return (this.overflowButtonElement || this.toolbarButtonElement).nativeElement;\n }\n setTextDisplayMode() {\n this.toolbarOptions.text = this.showText === 'overflow' ? undefined : this.text;\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n this.overflowOptions.text = this.showText === 'toolbar' ? undefined : this.text;\n });\n }\n}\nToolBarButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarButtonComponent, selector: \"kendo-toolbar-button\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", style: \"style\", className: \"className\", title: \"title\", disabled: \"disabled\", toggleable: \"toggleable\", look: \"look\", togglable: \"togglable\", selected: \"selected\", fillMode: \"fillMode\", themeColor: \"themeColor\", icon: \"icon\", iconClass: \"iconClass\", svgIcon: \"svgIcon\", imageUrl: \"imageUrl\" }, outputs: { click: \"click\", pointerdown: \"pointerdown\", selectedChange: \"selectedChange\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonElement\", first: true, predicate: [\"toolbarButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowButtonElement\", first: true, predicate: [\"overflowButton\"], descendants: true, read: ElementRef }], exportAs: [\"kendoToolBarButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n \n \n {{overflowOptions.text}}\n \n \n \n `, isInline: true, components: [{ type: i1$1.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonComponent) }],\n selector: 'kendo-toolbar-button',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n \n \n {{overflowOptions.text}}\n \n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], style: [{\n type: Input\n }], className: [{\n type: Input\n }], title: [{\n type: Input\n }], disabled: [{\n type: Input\n }], toggleable: [{\n type: Input\n }], look: [{\n type: Input\n }], togglable: [{\n type: Input\n }], selected: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], icon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], click: [{\n type: Output\n }], pointerdown: [{\n type: Output\n }], selectedChange: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarButtonElement: [{\n type: ViewChild,\n args: ['toolbarButton', { read: ElementRef }]\n }], overflowButtonElement: [{\n type: ViewChild,\n args: ['overflowButton', { read: ElementRef }]\n }] } });\n\n/**\n * Represents the Kendo UI Toolbar ButtonGroup for Angular.\n */\nclass ToolBarButtonGroupComponent extends ToolBarToolComponent {\n constructor(localization) {\n super();\n this.localization = localization;\n /**\n * By default, the selection mode of the ButtonGroup is set to `multiple`.\n */\n this.selection = 'multiple';\n this.focusedIndex = -1;\n this.getNextKey = getNextKey(this.localization.rtl);\n this.getPrevKey = getPrevKey(this.localization.rtl);\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.buttonComponents.forEach(b => b.fillMode = look === 'default' ? 'solid' : look);\n }\n }\n get buttonElements() {\n if (this.overflows) {\n return [...this.overflowListItems.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))].map(el => el.nativeElement);\n }\n else {\n return this.toolbarButtonGroup\n .buttons.filter(b => !b.isDisabled)\n .map(b => b.element);\n }\n }\n /**\n * @hidden\n */\n onFocus() {\n // triggered on tabin\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n onNavigate(ev) {\n ev.preventDefault();\n }\n /**\n * @hidden\n */\n selectedChangeHandler(state, button) {\n button.selected = state;\n button.selectedChange.emit(state);\n }\n /**\n * @hidden\n */\n overflowSelectedChangeHandler(button) {\n if (this.selection === 'multiple') {\n button.selected = !button.selected;\n }\n else {\n const filteredButtons = this.buttonComponents.filter(b => b !== button);\n filteredButtons.forEach(b => b.selected = false);\n button.selected = !button.selected;\n }\n button.selectedChange.emit(button.selected);\n }\n /**\n * @hidden\n */\n onButtonClick(ev) {\n this.focusedIndex = this.buttonElements.findIndex(be => be === ev.target || be.contains(ev.target));\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n canFocus() {\n return !(this.disabled || this.buttonElements.length === 0);\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n this.focusedIndex = getIndexOfFocused(prevKey, nextKey, this.buttonElements)(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n const nextKey = this.getNextKey(this.overflows);\n const prevKey = this.getPrevKey(this.overflows);\n const peekAtIndex = makePeeker(this.buttonElements);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(prevKey, nextKey, peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n /**\n * @hidden\n */\n handleClick(ev, button) {\n button.click.emit(ev);\n this.onButtonClick(ev);\n this.overflowSelectedChangeHandler(button);\n }\n /**\n * @hidden\n */\n getIconClasses(button) {\n if (button.overflowOptions.icon) {\n return `${button.overflowOptions.icon}`;\n }\n if (button.overflowOptions.iconClass) {\n return button.overflowOptions.iconClass;\n }\n if (button.overflowOptions.svgIcon) {\n return button.overflowOptions.svgIcon;\n }\n }\n focusButton(index, ev) {\n // Guard against focusing twice on mousedown.\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.buttonElements[index]?.focus();\n }\n }\n}\nToolBarButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonGroupComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarButtonGroupComponent, selector: \"kendo-toolbar-buttongroup\", inputs: { disabled: \"disabled\", selection: \"selection\", width: \"width\", look: \"look\" }, providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }], queries: [{ propertyName: \"buttonComponents\", predicate: i0.forwardRef(function () { return ToolBarButtonComponent; }) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarButtonGroup\", first: true, predicate: [\"toolbarButtonGroup\"], descendants: true }, { propertyName: \"overflowListItems\", predicate: [\"listItem\"], descendants: true }], exportAs: [\"kendoToolBarButtonGroup\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n
    \n \n \n {{button.overflowOptions.text}}\n \n
    \n
    \n
    \n `, isInline: true, components: [{ type: i1$1.ButtonGroupComponent, selector: \"kendo-buttongroup\", inputs: [\"disabled\", \"selection\", \"width\", \"tabIndex\", \"navigable\"], outputs: [\"navigate\"], exportAs: [\"kendoButtonGroup\"] }, { type: i1$1.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }, { type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonGroupComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarButtonGroup',\n providers: [LocalizationService, { provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarButtonGroupComponent) }],\n selector: 'kendo-toolbar-buttongroup',\n template: `\n \n \n \n {{ button.toolbarOptions.text }}\n \n \n \n \n \n
    \n \n \n {{button.overflowOptions.text}}\n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { disabled: [{\n type: Input\n }], selection: [{\n type: Input\n }], width: [{\n type: Input\n }], look: [{\n type: Input\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarButtonGroup: [{\n type: ViewChild,\n args: ['toolbarButtonGroup', { static: false }]\n }], overflowListItems: [{\n type: ViewChildren,\n args: ['listItem']\n }], buttonComponents: [{\n type: ContentChildren,\n args: [forwardRef(() => ToolBarButtonComponent)]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar DropDownButton for Angular]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\nclass ToolBarDropDownButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n /**\n * Allows showing the default arrow icon or providing alternative one instead.\n * @default false\n */\n this.arrowIcon = false;\n /**\n * Sets the `title` attribute of the underlying button element.\n * @default ''\n */\n this.title = '';\n /**\n * Defines the location of the button icon that will be displayed.\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly\n * ([see example]({% slug api_buttons_dropdownbuttoncomponent %}#toc-themeColor)).\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Fires each time the user clicks a DropDownButton item.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this._showText = 'both';\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n // showText and showIcon showIcon should be declared first\n /**\n * Defines the location of the button text that will be displayed.\n */\n set showText(value) {\n this._showText = value;\n this.setTextDisplayMode();\n }\n ;\n get showText() {\n return this._showText;\n }\n /**\n * Sets the text of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons).\n */\n set text(text) {\n this._text = text;\n this.setTextDisplayMode();\n }\n get text() {\n return this._text;\n }\n /**\n * Defines an icon that will be rendered next to the button text.\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an SVGIcon to be rendered within the button.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n const isIconSet = this.toolbarOptions.icon || this.overflowOptions.icon;\n const isIconClassSet = this.toolbarOptions.iconClass || this.overflowOptions.iconClass;\n if (isDevMode() &&\n icon &&\n isIconSet &&\n isIconClassSet) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this.toolbarOptions.svgIcon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.svgIcon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the DropDownButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({ animate: true, popupClass: '' }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * @hidden\n */\n set primary(primary) {\n this.themeColor = primary ? 'primary' : 'base';\n }\n /**\n * Sets the data of the DropDownButton\n * ([see example]({% slug controltypes_toolbar %}#toc-dropdownbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n ngOnInit() {\n this.setTextDisplayMode();\n }\n get overflowButtons() {\n return [...this.overflowListItems.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowListItems\n .toArray()\n .findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarDropDownButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n /**\n * @hidden\n */\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n /**\n * @hidden\n */\n handleClick(ev, item, index) {\n this.onButtonListClick(ev);\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n setTextDisplayMode() {\n this.toolbarOptions.text = this.showText === 'overflow' ? undefined : this.text;\n this.overflowOptions.text = this.showText === 'toolbar' ? undefined : this.text;\n }\n}\nToolBarDropDownButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarDropDownButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarDropDownButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarDropDownButtonComponent, selector: \"kendo-toolbar-dropdownbutton\", inputs: { arrowIcon: \"arrowIcon\", title: \"title\", showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", svgIcon: \"svgIcon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", popupSettings: \"popupSettings\", look: \"look\", primary: \"primary\", fillMode: \"fillMode\", themeColor: \"themeColor\", buttonClass: \"buttonClass\", textField: \"textField\", disabled: \"disabled\", data: \"data\" }, outputs: { itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"dropdownButton\", first: true, predicate: [\"dropdownButton\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"dropDownButtonComponent\", first: true, predicate: DropDownButtonComponent, descendants: true }, { propertyName: \"toolbarDropDownButton\", first: true, predicate: [\"toolbarDropDownButton\"], descendants: true }, { propertyName: \"overflowListItems\", predicate: [\"listItem\"], descendants: true }], exportAs: [\"kendoToolBarDropDownButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n \n \n {{overflowOptions.text}}\n \n \n \n
    \n \n \n {{ getText(item) }}\n \n
    \n
    \n
    \n `, isInline: true, components: [{ type: i1$1.DropDownButtonComponent, selector: \"kendo-dropdownbutton\", inputs: [\"arrowIcon\", \"icon\", \"svgIcon\", \"iconClass\", \"imageUrl\", \"textField\", \"data\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"buttonAttributes\"], outputs: [\"itemClick\", \"focus\", \"blur\"], exportAs: [\"kendoDropDownButton\"] }, { type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarDropDownButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarDropDownButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarDropDownButtonComponent) }],\n selector: 'kendo-toolbar-dropdownbutton',\n template: `\n \n \n {{ toolbarOptions.text }}\n \n \n \n \n \n \n {{overflowOptions.text}}\n \n \n \n
    \n \n \n {{ getText(item) }}\n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { arrowIcon: [{\n type: Input\n }], title: [{\n type: Input\n }], showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], look: [{\n type: Input\n }], primary: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], data: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], dropdownButton: [{\n type: ViewChild,\n args: ['dropdownButton', { read: ElementRef, static: true }]\n }], dropDownButtonComponent: [{\n type: ViewChild,\n args: [DropDownButtonComponent, { static: false }]\n }], overflowListItems: [{\n type: ViewChildren,\n args: ['listItem']\n }], toolbarDropDownButton: [{\n type: ViewChild,\n args: ['toolbarDropDownButton', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar SplitButton for Angular]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\nclass ToolBarSplitButtonComponent extends ToolBarToolComponent {\n constructor() {\n super();\n /**\n * Specifies where button icon should be displayed\n */\n this.showIcon = 'both';\n /**\n * The fillMode property specifies the background and border styles of the Button.\n *\n * The available values are:\n * * `solid` (default)\n * * `flat`\n * * `outline`\n * * `link`\n * * `null`\n */\n this.fillMode = 'solid';\n /**\n * The Button allows you to specify predefined theme colors.\n * The theme color will be applied as a background and border color while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base` —Applies coloring based on the `base` theme color. (default)\n * * `primary` —Applies coloring based on the `primary` theme color.\n * * `secondary`—Applies coloring based on the `secondary` theme color.\n * * `tertiary`— Applies coloring based on the `tertiary` theme color.\n * * `info`—Applies coloring based on the `info` theme color.\n * * `success`— Applies coloring based on the `success` theme color.\n * * `warning`— Applies coloring based on the `warning` theme color.\n * * `error`— Applies coloring based on the `error` theme color.\n * * `dark`— Applies coloring based on the `dark` theme color.\n * * `light`— Applies coloring based on the `light` theme color.\n * * `inverse`— Applies coloring based on the `inverse` theme color.\n * * `null` —Removes the default CSS class (no class would be rendered).\n */\n this.themeColor = 'base';\n /**\n * Specifies the name of the [font icon]({% slug icons %}#toc-list-of-font-icons) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonIcon = 'caret-alt-down';\n /**\n * Specifies the [`SVGIcon`](slug:api_icons_svgicon) that will\n * be rendered for the button which opens the popup.\n */\n this.arrowButtonSvgIcon = caretAltDownIcon;\n /**\n * Configures the text field of the button-list popup.\n */\n this.textField = 'text';\n /**\n * Fires each time the user clicks the main button.\n */\n this.buttonClick = new EventEmitter();\n /**\n * Fires each time the user clicks the drop-down list.\n * The event data contains the data item that is bound to the clicked list item.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel the event, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel the event, the popup will remain open.\n */\n this.close = new EventEmitter();\n this.toolbarOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this.overflowOptions = {\n text: '',\n icon: '',\n iconClass: '',\n svgIcon: null,\n imageUrl: ''\n };\n this._popupSettings = { animate: true, popupClass: '' };\n this.focusedIndex = -1;\n this._showText = 'both';\n this.getNextKey = getNextKey();\n this.getPrevKey = getPrevKey();\n }\n // showText and showIcon showIcon should be declared first\n /**\n * Specifies where button text should be displayed\n */\n set showText(value) {\n this._showText = value;\n this.setTextDisplayMode();\n }\n ;\n get showText() {\n return this._showText;\n }\n /**\n * Sets the text of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons).\n */\n set text(text) {\n this._text = text;\n this.setTextDisplayMode();\n }\n get text() {\n return this._text;\n }\n /**\n * Defines the icon that will be rendered next to the button text\n * ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n */\n set icon(icon) {\n this.toolbarOptions.icon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.icon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an SVGIcon to be rendered within the main button.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n const isIconSet = this.toolbarOptions.icon || this.overflowOptions.icon;\n const isIconClassSet = this.toolbarOptions.iconClass || this.overflowOptions.iconClass;\n if (isDevMode() &&\n icon &&\n isIconSet &&\n isIconClassSet) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this.toolbarOptions.svgIcon = getValueForLocation(icon, this.showIcon, false);\n this.overflowOptions.svgIcon = getValueForLocation(icon, this.showIcon, true);\n }\n /**\n * Defines an icon with a custom CSS class that will be rendered next to the button text.\n */\n set iconClass(iconClass) {\n this.toolbarOptions.iconClass = getValueForLocation(iconClass, this.showIcon, false);\n this.overflowOptions.iconClass = getValueForLocation(iconClass, this.showIcon, true);\n }\n /**\n * Defines the location of an image that will be displayed next to the button text.\n */\n set imageUrl(imageUrl) {\n this.toolbarOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, false);\n this.overflowOptions.imageUrl = getValueForLocation(imageUrl, this.showIcon, true);\n }\n /**\n * Configures the popup of the SplitButton.\n *\n * The available options are:\n * - `animate:Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `popupClass:String`—Specifies a list of CSS classes that are used to style the popup.\n */\n set popupSettings(value) {\n this._popupSettings = value;\n }\n get popupSettings() {\n if (!this._popupSettings) {\n this._popupSettings = { animate: true, popupClass: '' };\n }\n return this._popupSettings;\n }\n /**\n * @hidden\n */\n set look(look) {\n if (look) {\n this.fillMode = look === 'default' ? 'solid' : look;\n }\n }\n /**\n * Sets the data of the SplitButton ([see example]({% slug controltypes_toolbar %}#toc-splitbuttons)).\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n if (!this._data) {\n this.data = [];\n }\n return this._data;\n }\n ngOnInit() {\n this.setTextDisplayMode();\n }\n get overflowButtons() {\n return [this.overflowMainButton, ...this.overflowListItems.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))];\n }\n /**\n * @hidden\n */\n onButtonListClick(ev) {\n this.focusedIndex = this.overflowButtons.findIndex(b => b.nativeElement.contains(ev.target));\n }\n /**\n * @hidden\n */\n onMainButtonClick(ev) {\n this.buttonClick.emit(ev);\n this.focusedIndex = 0;\n }\n /**\n * @hidden\n */\n canFocus() {\n return !this.disabled;\n }\n /**\n * @hidden\n */\n focus(ev = {}) {\n if (!this.overflows) {\n if (ev.type === 'focus' || ev.type === 'keydown') {\n this.toolbarSplitButton.focus();\n }\n }\n else if (this.overflowButtons.length > 0) {\n this.focusedIndex = getIndexOfFocused(this.getPrevKey(), this.getNextKey(), this.overflowButtons.map(ob => ob.nativeElement))(ev);\n this.focusButton(this.focusedIndex, ev);\n }\n }\n /**\n * @hidden\n */\n handleKey(ev) {\n if (!this.overflows && (ev.keyCode === this.getPrevKey(this.overflows) || ev.keyCode === this.getNextKey(this.overflows))) {\n return false;\n }\n if (this.overflows) {\n const peekAtIndex = makePeeker(this.overflowButtons);\n const isUnmodified = areEqual(this.focusedIndex);\n this.focusedIndex = seekFocusedIndex(this.getPrevKey(), this.getNextKey(), peekAtIndex)(this.focusedIndex, ev);\n this.focusButton(this.focusedIndex, ev);\n return !isUnmodified(this.focusedIndex);\n }\n }\n /**\n * @hidden\n */\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n /**\n * @hidden\n */\n handleClick(ev, item, index) {\n this.onButtonListClick(ev);\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n focusButton(index, ev) {\n if (!ev.type || ev.type === 'focus' || ev.type === 'keydown' || ev.type === 'click') {\n this.overflowButtons[index].nativeElement.focus();\n }\n }\n setTextDisplayMode() {\n this.toolbarOptions.text = this.showText === 'overflow' ? undefined : this.text;\n this.overflowOptions.text = this.showText === 'toolbar' ? undefined : this.text;\n }\n}\nToolBarSplitButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSplitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSplitButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarSplitButtonComponent, selector: \"kendo-toolbar-splitbutton\", inputs: { showText: \"showText\", showIcon: \"showIcon\", text: \"text\", icon: \"icon\", svgIcon: \"svgIcon\", iconClass: \"iconClass\", imageUrl: \"imageUrl\", disabled: \"disabled\", popupSettings: \"popupSettings\", fillMode: \"fillMode\", themeColor: \"themeColor\", look: \"look\", buttonClass: \"buttonClass\", arrowButtonClass: \"arrowButtonClass\", arrowButtonIcon: \"arrowButtonIcon\", arrowButtonSvgIcon: \"arrowButtonSvgIcon\", textField: \"textField\", data: \"data\" }, outputs: { buttonClick: \"buttonClick\", itemClick: \"itemClick\", open: \"open\", close: \"close\" }, providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"toolbarSplitButton\", first: true, predicate: [\"toolbarSplitButton\"], descendants: true }, { propertyName: \"overflowMainButton\", first: true, predicate: [\"overflowMainButton\"], descendants: true, read: ElementRef }, { propertyName: \"overflowListItems\", predicate: [\"listItem\"], descendants: true }], exportAs: [\"kendoToolBarSplitButton\"], usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n
    \n \n \n \n {{overflowOptions.text}}\n \n
    \n \n
    \n \n \n \n {{ getText(item) }}\n \n
    \n
    \n
    \n `, isInline: true, components: [{ type: i1$1.SplitButtonComponent, selector: \"kendo-splitbutton\", inputs: [\"text\", \"icon\", \"svgIcon\", \"iconClass\", \"type\", \"imageUrl\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"disabled\", \"popupSettings\", \"tabIndex\", \"textField\", \"data\", \"buttonClass\", \"arrowButtonClass\", \"arrowButtonIcon\", \"arrowButtonSvgIcon\", \"buttonAttributes\"], outputs: [\"buttonClick\", \"itemClick\", \"focus\", \"blur\", \"open\", \"close\"], exportAs: [\"kendoSplitButton\"] }, { type: i2$1.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSplitButtonComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSplitButton',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSplitButtonComponent) }],\n selector: 'kendo-toolbar-splitbutton',\n template: `\n \n \n \n \n
    \n \n \n \n {{overflowOptions.text}}\n \n
    \n \n
    \n \n \n \n {{ getText(item) }}\n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { showText: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], iconClass: [{\n type: Input\n }], imageUrl: [{\n type: Input\n }], disabled: [{\n type: Input\n }], popupSettings: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], look: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], arrowButtonClass: [{\n type: Input\n }], arrowButtonIcon: [{\n type: Input\n }], arrowButtonSvgIcon: [{\n type: Input\n }], textField: [{\n type: Input\n }], data: [{\n type: Input\n }], buttonClick: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], open: [{\n type: Output\n }], close: [{\n type: Output\n }], toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], toolbarSplitButton: [{\n type: ViewChild,\n args: ['toolbarSplitButton', { static: false }]\n }], overflowMainButton: [{\n type: ViewChild,\n args: ['overflowMainButton', { read: ElementRef }]\n }], overflowListItems: [{\n type: ViewChildren,\n args: ['listItem']\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Separator for Angular]({% slug controltypes_toolbar %}#toc-separators).\n */\nclass ToolBarSeparatorComponent extends ToolBarToolComponent {\n constructor() {\n super();\n }\n /**\n * @hidden\n */\n canFocus() {\n return false;\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n focus() {\n /* noop */\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n handleKey() {\n return false;\n }\n ngAfterViewInit() {\n if (!this.popupTemplate) {\n this.popupTemplate = this.toolbarTemplate;\n }\n }\n}\nToolBarSeparatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSeparatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSeparatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarSeparatorComponent, selector: \"kendo-toolbar-separator\", providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }, { propertyName: \"separator\", first: true, predicate: [\"separator\"], descendants: true }], exportAs: [\"kendoToolBarSeparator\"], usesInheritance: true, ngImport: i0, template: `\n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSeparatorComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSeparator',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSeparatorComponent) }],\n selector: 'kendo-toolbar-separator',\n template: `\n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }], separator: [{\n type: ViewChild,\n args: ['separator', { static: false }]\n }] } });\n\n/**\n * Represents the [Kendo UI ToolBar Spacer for Angular]({% slug controltypes_toolbar %}#toc-separators).\n */\nclass ToolBarSpacerComponent extends ToolBarToolComponent {\n constructor() {\n super();\n /**\n * @hidden\n */\n this.__isSpacer = true;\n }\n /**\n * @hidden\n */\n canFocus() {\n return false;\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n focus() {\n /* noop */\n }\n // If this is not here, the docs display info from its parent(ToolBarToolComponent).\n /**\n * @hidden\n */\n handleKey() {\n return false;\n }\n ngAfterViewInit() {\n if (!this.popupTemplate) {\n this.popupTemplate = this.toolbarTemplate;\n }\n }\n}\nToolBarSpacerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarSpacerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarSpacerComponent, selector: \"kendo-toolbar-spacer\", providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSpacerComponent) }], viewQueries: [{ propertyName: \"toolbarTemplate\", first: true, predicate: [\"toolbarTemplate\"], descendants: true, static: true }, { propertyName: \"popupTemplate\", first: true, predicate: [\"popupTemplate\"], descendants: true, static: true }], exportAs: [\"kendoToolBarSpacer\"], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarSpacerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'kendoToolBarSpacer',\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolBarSpacerComponent) }],\n selector: 'kendo-toolbar-spacer',\n template: ``\n }]\n }], ctorParameters: function () { return []; }, propDecorators: { toolbarTemplate: [{\n type: ViewChild,\n args: ['toolbarTemplate', { static: true }]\n }], popupTemplate: [{\n type: ViewChild,\n args: ['popupTemplate', { static: true }]\n }] } });\n\n/**\n * @hidden\n */\nclass ToolBarButtonListComponent {\n constructor() {\n this.disabled = false;\n this.fillMode = 'solid';\n this.themeColor = 'base';\n this.itemClick = new EventEmitter();\n }\n getText(dataItem) {\n if (dataItem) {\n return this.textField ? dataItem[this.textField] : dataItem.text || dataItem;\n }\n return undefined;\n }\n onClick(item, index) {\n const dataItem = this.data[index];\n if (item.click) {\n item.click(dataItem);\n }\n this.itemClick.emit(dataItem);\n }\n}\nToolBarButtonListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nToolBarButtonListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolBarButtonListComponent, selector: \"kendo-toolbar-buttonlist\", inputs: { data: \"data\", textField: \"textField\", disabled: \"disabled\", fillMode: \"fillMode\", themeColor: \"themeColor\" }, outputs: { itemClick: \"itemClick\" }, viewQueries: [{ propertyName: \"buttons\", predicate: [\"button\"], descendants: true, read: ElementRef }], ngImport: i0, template: `\n \n {{ getText(item) }}\n \n `, isInline: true, components: [{ type: i1$1.ButtonComponent, selector: \"button[kendoButton], span[kendoButton], kendo-button\", inputs: [\"arrowIcon\", \"toggleable\", \"togglable\", \"selected\", \"tabIndex\", \"imageUrl\", \"iconClass\", \"icon\", \"disabled\", \"size\", \"rounded\", \"fillMode\", \"themeColor\", \"svgIcon\", \"role\", \"primary\", \"look\"], outputs: [\"selectedChange\", \"click\"], exportAs: [\"kendoButton\"] }], directives: [{ type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarButtonListComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-toolbar-buttonlist',\n template: `\n \n {{ getText(item) }}\n \n `\n }]\n }], propDecorators: { data: [{\n type: Input\n }], textField: [{\n type: Input\n }], disabled: [{\n type: Input\n }], fillMode: [{\n type: Input\n }], themeColor: [{\n type: Input\n }], itemClick: [{\n type: Output\n }], buttons: [{\n type: ViewChildren,\n args: ['button', { read: ElementRef }]\n }] } });\n\n/**\n * Custom component messages override default component messages.\n */\nclass ToolbarCustomMessagesComponent extends ToolbarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n}\nToolbarCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolbarCustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nToolbarCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: ToolbarCustomMessagesComponent, selector: \"kendo-toolbar-messages\", providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolbarCustomMessagesComponent, decorators: [{\n type: Component,\n args: [{\n providers: [\n {\n provide: ToolbarMessages,\n useExisting: forwardRef(() => ToolbarCustomMessagesComponent)\n }\n ],\n selector: 'kendo-toolbar-messages',\n template: ``\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });\n\nconst TOOLBAR_TOOLS = [\n ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent,\n ToolBarSpacerComponent\n];\nconst TOOLBAR_COMMON = [\n ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi']) definition for the ToolBar component.\n *\n * The package exports:\n * - `ToolBarComponent`—The ToolBarComponent class.\n * - `ToolBarToolComponent`—The base Tool component class.\n * - `ToolBarButtonComponent`—The Button Tool component class.\n * - `ToolBarButtonGroupComponent`—The ButtonGroup Tool component class.\n * - `ToolBarDropDownButtonComponent`—The DropDownButton Tool component class.\n * - `ToolBarSplitButtonComponent`—The SplitButton Tool component class.\n * - `ToolBarSeparatorComponent`—The Separator Tool component class.\n */\nclass ToolBarModule {\n}\nToolBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToolBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarModule, declarations: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent,\n ToolBarSpacerComponent, ToolBarRendererComponent,\n ToolBarButtonListComponent,\n ToolbarCustomMessagesComponent,\n LocalizedToolbarMessagesDirective], imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule, IconsModule], exports: [ToolBarComponent, ToolBarToolComponent,\n ToolBarButtonComponent,\n ToolBarButtonGroupComponent,\n ToolBarDropDownButtonComponent,\n ToolBarSplitButtonComponent,\n ToolBarSeparatorComponent,\n ToolBarSpacerComponent, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective] });\nToolBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarModule, imports: [[CommonModule, ButtonsModule, PopupModule, ResizeSensorModule, IconsModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: ToolBarModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [ToolBarComponent, TOOLBAR_TOOLS, TOOLBAR_COMMON],\n exports: [ToolBarComponent, TOOLBAR_TOOLS, ToolbarCustomMessagesComponent, LocalizedToolbarMessagesDirective],\n imports: [CommonModule, ButtonsModule, PopupModule, ResizeSensorModule, IconsModule]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedToolbarMessagesDirective, RefreshService, ToolBarButtonComponent, ToolBarButtonGroupComponent, ToolBarComponent, ToolBarDropDownButtonComponent, ToolBarModule, ToolBarSeparatorComponent, ToolBarSpacerComponent, ToolBarSplitButtonComponent, ToolBarToolComponent, ToolbarCustomMessagesComponent };\n\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, forwardRef, Directive, Input, EventEmitter, Component, HostBinding, Output, isDevMode, Optional, Inject, ViewChild, ContentChild, ElementRef, NgModule } from '@angular/core';\nimport { filter, take, auditTime } from 'rxjs/operators';\nimport { Subscription, fromEvent, BehaviorSubject, Subject, combineLatest } from 'rxjs';\nimport * as i1$1 from '@progress/kendo-angular-popup';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { focusableSelector, isDocumentAvailable, Keys, PreventableEvent, closest, hasObservers } from '@progress/kendo-angular-common';\nimport { xIcon } from '@progress/kendo-svg-icons';\nimport * as i2 from '@progress/kendo-angular-icons';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport * as i2$1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-tooltip',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1712142267,\n version: '15.4.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * Obsolete. Provide the TooltipSettings class instead.\n *\n * @hidden\n */\nconst TOOLTIP_SETTINGS = new InjectionToken('kendo-ui-tooltip-settings');\n/**\n * Provides a global configuration for the Kendo UI Tooltip. Once injected through\n * the `AppComponent` constructor, the configuration properties can be overridden.\n *\n * @example\n * ```ts-no-run\n * import { TooltipSettings } from '@progress/kendo-angular-tooltip';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
    \n * \n *
    `,\n * providers: [{\n * provide: TooltipSettings,\n * useFactory: (): TooltipSettings => ({\n * // Override default values of tooltips if wanted\n * position: 'right'\n * })\n * }]\n * })\n * export class AppComponent { }\n * ```\n */\nclass TooltipSettings {\n /**\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor() { }\n}\nTooltipSettings.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipSettings, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTooltipSettings.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipSettings });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipSettings, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return []; } });\n\n/**\n * @hidden\n */\nlet idx = 0;\n/**\n * @hidden\n */\nlet popoverTitleIdx = 0;\n/**\n * @hidden\n */\nlet popoverBodyIdx = 0;\n/**\n * @hidden\n */\nconst getId = (prefix, idSource) => {\n switch (idSource) {\n case 'popoverTitle':\n return `${prefix}-${++popoverTitleIdx}`;\n case 'popoverBody':\n return `${prefix}-${++popoverBodyIdx}`;\n default:\n return `${prefix}-${++idx}`;\n }\n};\n/**\n * @hidden\n */\nfunction align(position, offset) {\n let anchorAlign = {};\n let popupAlign = {};\n let popupMargin = {};\n switch (position) {\n case 'top':\n anchorAlign = { horizontal: 'center', vertical: 'top' };\n popupAlign = { horizontal: 'center', vertical: 'bottom' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'bottom':\n anchorAlign = { horizontal: 'center', vertical: 'bottom' };\n popupAlign = { horizontal: 'center', vertical: 'top' };\n popupMargin = { horizontal: 0, vertical: offset };\n break;\n case 'right':\n anchorAlign = { horizontal: 'right', vertical: 'center' };\n popupAlign = { horizontal: 'left', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n case 'left':\n anchorAlign = { horizontal: 'left', vertical: 'center' };\n popupAlign = { horizontal: 'right', vertical: 'center' };\n popupMargin = { horizontal: offset, vertical: 0 };\n break;\n default: break;\n }\n return {\n anchorAlign,\n popupAlign,\n popupMargin\n };\n}\n/**\n * @hidden\n */\nfunction collision(inputcollision, position) {\n if (inputcollision) {\n return inputcollision;\n }\n if (position === 'top' || position === 'bottom') {\n return { horizontal: 'fit', vertical: 'flip' };\n }\n return { horizontal: 'flip', vertical: 'fit' };\n}\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nfunction closestBySelector(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ?\n (el, sel) => el.matches(sel)\n : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nfunction contains(container, child) {\n if (!container) {\n return false;\n }\n if (isDocumentNode(container)) {\n return false;\n }\n if (container.contains) {\n return container.contains(child);\n }\n if (container.compareDocumentPosition) {\n return !!(container.compareDocumentPosition(child) & Node.DOCUMENT_POSITION_CONTAINED_BY);\n }\n}\n/**\n * @hidden\n */\nconst hasParent = (node, parent) => {\n while (node && node !== parent) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nfunction getCenterOffset(item, dir, size) {\n const rect = item.getBoundingClientRect();\n return rect[dir] + (rect[size] / 2);\n}\n/**\n * @hidden\n */\nfunction containsItem(collection, item) {\n return collection.indexOf(item) !== -1;\n}\n/**\n * @hidden\n */\nfunction getAllFocusableChildren(parent) {\n return parent.querySelectorAll(focusableSelector);\n}\n/**\n * @hidden\n */\nfunction getFirstAndLastFocusable(parent) {\n const all = getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n}\n\n/**\n * @hidden\n */\nclass LocalizedMessagesDirective extends ComponentMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n}\nLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });\nLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: LocalizedMessagesDirective, selector: \"[kendoTooltipLocalizedMessages]\", inputs: { closeTitle: \"closeTitle\" }, providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{\n type: Directive,\n args: [{\n providers: [\n {\n provide: ComponentMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }\n ],\n selector: `[kendoTooltipLocalizedMessages]`\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { closeTitle: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass TooltipContentComponent {\n constructor(content, localizationService) {\n this.content = content;\n this.localizationService = localizationService;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n this.close = new EventEmitter();\n this.hostRole = 'tooltip';\n this.tooltipWidth = null;\n this.tooltipHeight = null;\n this.callout = true;\n this.calloutStyles = (position, calloutSize, isFlip) => {\n const styles = {};\n const isVertical = position === 'top' || position === 'bottom';\n const flipDeg = '180deg';\n const zeroDeg = '0deg';\n if (!isFlip) {\n styles.transform = isVertical ? `rotateX(${zeroDeg})` : `rotateY(${zeroDeg})`;\n return styles;\n }\n if (position === 'top') {\n styles.bottom = 'unset';\n }\n else if (position === 'bottom') {\n styles.top = 'unset';\n }\n else if (position === 'left') {\n styles.right = 'unset';\n }\n else if (position === 'right') {\n styles.left = 'unset';\n }\n styles[position] = `${-calloutSize}px`;\n styles.transform = isVertical ? `rotateX(${flipDeg})` : `rotateY(${flipDeg})`;\n return styles;\n };\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n get cssClasses() {\n return 'k-tooltip';\n }\n get hostId() {\n return this.tooltipId;\n }\n get className() {\n return this.closable;\n }\n get cssPosition() {\n return 'relative';\n }\n ngOnInit() {\n this.tooltipId = getId('tooltip');\n this.dynamicRTLSubscription = this.localizationService.changes\n .subscribe(({ rtl }) => this.direction = rtl ? 'rtl' : 'ltr');\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n get closeButtonTitle() {\n return this.closeTitle || this.localizationService.get('closeTitle');\n }\n calloutPositionClass() {\n return {\n 'top': 'k-callout-s',\n 'left': 'k-callout-e',\n 'bottom': 'k-callout-n',\n 'right': 'k-callout-w'\n }[this.position];\n }\n onCloseClick(event) {\n event.preventDefault();\n this.close.emit();\n }\n updateCalloutPosition(position, isFlip) {\n if (!this.callout) {\n return;\n }\n const callout = this.content.nativeElement.querySelector('.k-callout');\n const isVertical = position === 'top' || position === 'bottom';\n const size = isVertical ? 'width' : 'height';\n const dir = isVertical ? 'left' : 'top';\n const offsetProperty = isVertical ? 'marginLeft' : 'marginTop';\n const calloutSize = callout.getBoundingClientRect()[size];\n const anchorCenter = getCenterOffset(this.anchor.nativeElement, dir, size);\n const contentCenter = getCenterOffset(this.content.nativeElement, dir, size);\n const diff = Math.abs(contentCenter - anchorCenter);\n if (diff > 1 || diff === 0 || Math.round(diff) === 0) {\n const newMargin = contentCenter - anchorCenter + (calloutSize / 2);\n callout.style[offsetProperty] = `${-newMargin}px`;\n }\n const calloutStyles = this.calloutStyles(position, calloutSize, isFlip);\n Object.keys(calloutStyles).forEach((style) => {\n callout.style[style] = calloutStyles[style];\n });\n }\n}\nTooltipContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipContentComponent, deps: [{ token: i0.ElementRef }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });\nTooltipContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TooltipContentComponent, selector: \"kendo-tooltip\", inputs: { tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", titleTemplate: \"titleTemplate\", anchor: \"anchor\", closable: \"closable\", templateRef: \"templateRef\", templateString: \"templateString\" }, outputs: { close: \"close\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class\": \"this.cssClasses\", \"attr.role\": \"this.hostRole\", \"attr.id\": \"this.hostId\", \"class.k-tooltip-closable\": \"this.className\", \"style.position\": \"this.cssPosition\", \"style.width.px\": \"this.tooltipWidth\", \"style.height.px\": \"this.tooltipHeight\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ], ngImport: i0, template: `\n \n \n\n
    \n
    \n \n \n
    \n\n \n \n \n {{ templateString }}\n \n
    \n\n
    \n \n \n \n \n
    \n\n
    \n `, isInline: true, components: [{ type: i2.IconWrapperComponent, selector: \"kendo-icon-wrapper\", inputs: [\"name\", \"svgIcon\", \"innerCssClass\", \"customFontClass\", \"size\"], exportAs: [\"kendoIconWrapper\"] }], directives: [{ type: LocalizedMessagesDirective, selector: \"[kendoTooltipLocalizedMessages]\", inputs: [\"closeTitle\"] }, { type: i2$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-tooltip',\n template: `\n \n \n\n
    \n
    \n \n \n
    \n\n \n \n \n {{ templateString }}\n \n
    \n\n
    \n \n \n \n \n
    \n\n
    \n `,\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.tooltip'\n }\n ]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LocalizationService }]; }, propDecorators: { direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], close: [{\n type: Output\n }], cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], hostRole: [{\n type: HostBinding,\n args: ['attr.role']\n }], hostId: [{\n type: HostBinding,\n args: ['attr.id']\n }], className: [{\n type: HostBinding,\n args: ['class.k-tooltip-closable']\n }], cssPosition: [{\n type: HostBinding,\n args: ['style.position']\n }], tooltipWidth: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: Input\n }], tooltipHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }], titleTemplate: [{\n type: Input\n }], anchor: [{\n type: Input\n }], closable: [{\n type: Input\n }], templateRef: [{\n type: Input\n }], templateString: [{\n type: Input\n }] } });\n\n/**\n * Represents the [Kendo UI Tooltip directive for Angular]({% slug overview_tooltip %}).\n * Used to display additional information that is related to an element.\n *\n * @example\n * ```ts-no-run\n *
    \n * foo\n *
    \n * ```\n */\nclass TooltipDirective {\n constructor(tooltipWrapper, ngZone, renderer, popupService, settings, legacySettings) {\n this.tooltipWrapper = tooltipWrapper;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.popupService = popupService;\n /**\n * Specifies a selector for elements within a container which will display a tooltip\n * ([see example]({% slug anchorelements_tooltip %})). The possible values include any\n * DOM `selector`. The default value is `[title]`.\n */\n this.filter = '[title]';\n /**\n * Specifies the position of the Tooltip that is relative to the\n * anchor element ([see example]({% slug positioning_tooltip %})).\n *\n * The possible values are:\n * * `top` (default)\n * * `bottom`\n * * `left`\n * * `right`\n */\n this.position = 'top';\n /**\n * Specifies the delay in milliseconds before the Tooltip is shown.\n * * `100` (default) milliseconds.\n */\n this.showAfter = 100;\n /**\n * Specifies if the Тooltip will display a callout arrow.\n *\n * The possible values are:\n * * `true` (default)\n * * `false`\n */\n this.callout = true;\n /**\n * Specifies if the Тooltip will display a **Close** button\n * ([see example]({% slug closable_tooltip %})).\n *\n * The possible values are:\n * * `true`\n * * `false`\n */\n this.closable = false;\n /**\n * Specifies the offset in pixels between the Tooltip and the anchor. Defaults to `6` pixels.\n * If the `callout` property is set to `true`, the offset is rendered from the callout arrow.\n * If the `callout` property is set to `false`, the offset is rendered from the content of the Tooltip.\n */\n this.offset = 6;\n this.anchor = null;\n this.keyboardNavigationSubscription = new Subscription();\n this.validPositions = ['top', 'bottom', 'right', 'left'];\n this.validShowOptions = ['hover', 'click', 'none'];\n validatePackage(packageMetadata);\n Object.assign(this, settings, legacySettings);\n this.ngZone.runOutsideAngular(() => {\n const wrapper = this.tooltipWrapper.nativeElement;\n this.anchorTitleSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(filter(() => this.filter !== ''))\n .subscribe((e) => {\n const filterElement = closestBySelector(e.target, this.filter);\n if (filterElement) {\n this.hideElementTitle({ nativeElement: filterElement });\n }\n });\n this.mouseOverSubscription = fromEvent(wrapper, 'mouseover')\n .pipe(filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseOver(e));\n this.mouseOutSubscription = fromEvent(wrapper, 'mouseout')\n .subscribe(e => this.onMouseOut(e));\n });\n }\n /**\n * Sets the content of the Tooltip as a template reference\n * ([see example]({% slug templates_tooltip %})).\n */\n set tooltipTemplate(value) {\n this.template = value;\n }\n get tooltipTemplate() {\n return this.template;\n }\n /**\n * Shows the Tooltip.\n * @param anchor— ElementRef|Element.\n * Specifies the element that will be used as an anchor. The Tooltip opens relative to that element.\n */\n show(anchor) {\n if (this.popupRef) {\n return;\n }\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n this.anchor = anchor;\n if (this.showOn === 'hover') {\n if (this.popupRef) {\n return;\n }\n clearTimeout(this.showTimeout);\n this.showTimeout = setTimeout(() => this.showContent(this.anchor), this.showAfter);\n }\n else {\n this.hideElementTitle(this.anchor);\n this.showContent(this.anchor);\n }\n }\n /**\n * Hides the Tooltip.\n */\n hide() {\n clearTimeout(this.showTimeout);\n const anchor = this.anchor && this.anchor.nativeElement;\n if (anchor && anchor.getAttribute('data-title')) {\n if (!anchor.getAttribute('title') && anchor.hasAttribute('title')) {\n anchor.setAttribute('title', anchor.getAttribute('data-title'));\n }\n anchor.setAttribute('data-title', '');\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n if (this.closeClickSubscription) {\n this.closeClickSubscription.unsubscribe();\n }\n this.closePopup();\n }\n /**\n * Toggle visibility of the Tooltip.\n *\n * @param anchor— ElementRef|Element. Specifies the element that will be used as an anchor.\n * @param show— Optional. Boolean. Specifies if the Tooltip will be rendered.\n */\n toggle(anchor, show) {\n const previousAnchor = this.anchor && this.anchor.nativeElement;\n if (anchor instanceof Element) {\n anchor = { nativeElement: anchor };\n }\n if (previousAnchor !== anchor.nativeElement) {\n this.hide();\n }\n if (previousAnchor === anchor.nativeElement && this.showOn === 'click') {\n this.hide();\n }\n if (typeof show === 'undefined') {\n show = !this.popupRef;\n }\n if (show) {\n this.show(anchor);\n }\n else {\n this.hide();\n }\n }\n ngOnInit() {\n if (this.showOn === undefined) {\n this.showOn = 'hover';\n }\n this.keyboardNavigationSubscription.add(this.renderer.listen(this.tooltipWrapper.nativeElement, 'keydown', event => this.onKeyDown(event)));\n this.verifyProperties();\n }\n ngOnChanges(changes) {\n if (changes.showOn && isDocumentAvailable()) {\n this.subscribeClick();\n }\n }\n ngAfterViewChecked() {\n if (!this.popupRef) {\n return;\n }\n if (this.anchor &&\n !hasParent(this.anchor.nativeElement || this.anchor, this.tooltipWrapper.nativeElement)) {\n this.anchor = null;\n this.hide();\n }\n }\n ngOnDestroy() {\n this.hide();\n this.template = null;\n this.anchorTitleSubscription.unsubscribe();\n this.mouseOverSubscription.unsubscribe();\n this.mouseOutSubscription.unsubscribe();\n this.keyboardNavigationSubscription.unsubscribe();\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n if (this.popupMouseOutSubscription) {\n this.popupMouseOutSubscription.unsubscribe();\n }\n }\n showContent(anchorRef) {\n if (!anchorRef.nativeElement.getAttribute('data-title') && !this.template) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(anchorRef);\n this.bindContent(this.popupRef.content, anchorRef);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n bindContent(contentComponent, anchorRef) {\n const content = contentComponent.instance;\n this.closeClickSubscription = content.close\n .subscribe(() => {\n this.hide();\n });\n if (!this.template) {\n content.templateString = this.anchor.nativeElement.getAttribute('data-title');\n }\n else {\n content.templateRef = this.template;\n }\n if (this.titleTemplate) {\n content.titleTemplate = this.titleTemplate;\n }\n content.closeTitle = this.closeTitle;\n content.anchor = anchorRef;\n content.callout = this.callout;\n content.closable = this.closable;\n content.position = this.position;\n content.tooltipWidth = this.tooltipWidth;\n content.tooltipHeight = this.tooltipHeight;\n this.popupRef.content.changeDetectorRef.detectChanges();\n }\n hideElementTitle(elementRef) {\n const element = elementRef.nativeElement;\n if (element.getAttribute('title')) {\n element.setAttribute('data-title', element.getAttribute('title'));\n element.setAttribute('title', '');\n }\n }\n openPopup(anchorRef) {\n const alignSettings = align(this.position, this.offset);\n const anchorAlign = alignSettings.anchorAlign;\n const popupAlign = alignSettings.popupAlign;\n const popupMargin = alignSettings.popupMargin;\n this.popupRef = this.popupService.open({\n anchor: anchorRef,\n anchorAlign,\n animate: false,\n content: TooltipContentComponent,\n collision: collision(this.collision, this.position),\n margin: popupMargin,\n popupAlign,\n popupClass: 'k-popup-transparent'\n });\n if (this.tooltipClass) {\n this.renderer.addClass(this.popupRef.popupElement, this.tooltipClass);\n }\n if (this.tooltipContentClass) {\n this.renderer.addClass(this.popupRef.content.instance['content'].nativeElement, this.tooltipContentClass);\n }\n const popupInstance = this.popupRef.content.instance;\n if (anchorRef) {\n this.renderer.setAttribute(anchorRef.nativeElement, 'aria-labelledby', popupInstance.tooltipId);\n }\n if (popupInstance.callout) {\n this.popupPositionChangeSubscription = this.popupRef.popupPositionChange\n .subscribe(({ flip }) => {\n const isFlip = flip.horizontal === true || flip.vertical === true;\n popupInstance.updateCalloutPosition(this.position, isFlip);\n });\n }\n if (this.showOn === 'hover') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.popupMouseOutSubscription = fromEvent(popup, 'mouseout')\n .subscribe((e) => this.onMouseOut(e));\n });\n }\n }\n closePopup() {\n if (this.popupRef) {\n if (this.anchor) {\n this.renderer.removeAttribute(this.anchor.nativeElement, 'aria-labelledby');\n }\n this.popupRef.close();\n this.popupRef = null;\n }\n if (this.popupPositionChangeSubscription) {\n this.popupPositionChangeSubscription.unsubscribe();\n }\n }\n subscribeClick() {\n if (this.mouseClickSubscription) {\n this.mouseClickSubscription.unsubscribe();\n }\n if (this.showOn === 'click') {\n this.mouseClickSubscription = fromEvent(document, 'click')\n .pipe(filter(() => this.filter !== ''))\n .subscribe(e => this.onMouseClick(e, this.tooltipWrapper.nativeElement));\n }\n }\n onMouseClick(e, wrapper) {\n const target = e.target;\n const filterElement = closestBySelector(target, this.filter);\n const popup = this.popupRef && this.popupRef.popupElement;\n if (popup) {\n if (popup.contains(target)) {\n return;\n }\n if (this.closable) {\n return;\n }\n }\n if (wrapper.contains(target) && filterElement) {\n this.toggle(filterElement, true);\n }\n else if (popup) {\n this.hide();\n }\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const target = event.target;\n if (this.popupRef) {\n const tooltipId = this.popupRef.content.location.nativeElement.getAttribute('id');\n const anchorLabelledBy = target.getAttribute('aria-labelledby');\n if (keyCode === Keys.Escape && this.canCloseTooltip(target, tooltipId, anchorLabelledBy)) {\n this.closePopup();\n }\n }\n }\n canCloseTooltip(target, tooltipId, anchorLabelledBy) {\n const isIdEqualsLabel = tooltipId === anchorLabelledBy;\n const filterElement = closestBySelector(target, this.filter);\n const isTargetFocused = target === document.activeElement;\n const isTargetInsideWrapper = this.tooltipWrapper.nativeElement.contains(target);\n return isTargetInsideWrapper && filterElement && isTargetFocused && isIdEqualsLabel;\n }\n onMouseOver(e) {\n const filterElement = closestBySelector(e.target, this.filter);\n if (this.showOn !== 'hover') {\n return;\n }\n if (filterElement) {\n this.toggle(filterElement, true);\n }\n }\n onMouseOut(e) {\n if (this.showOn !== 'hover') {\n return;\n }\n if (this.closable) {\n return;\n }\n const popup = this.popupRef && this.popupRef.popupElement;\n const relatedTarget = e.relatedTarget;\n if (relatedTarget && this.anchor && contains(this.anchor.nativeElement, relatedTarget)) {\n return;\n }\n if (relatedTarget && contains(popup, relatedTarget)) {\n return;\n }\n this.hide();\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n if (!containsItem(this.validPositions, this.position)) {\n throw new Error(`Invalid value provided for position property.The available options are 'top', 'bottom', 'left', or 'right'.`);\n }\n if (!containsItem(this.validShowOptions, this.showOn)) {\n throw new Error(`Invalid value provided for showOn property.The available options are 'hover' or 'none'.`);\n }\n }\n}\nTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1$1.PopupService }, { token: TooltipSettings, optional: true }, { token: TOOLTIP_SETTINGS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: TooltipDirective, selector: \"[kendoTooltip]\", inputs: { filter: \"filter\", position: \"position\", titleTemplate: \"titleTemplate\", showOn: \"showOn\", showAfter: \"showAfter\", callout: \"callout\", closable: \"closable\", offset: \"offset\", tooltipWidth: \"tooltipWidth\", tooltipHeight: \"tooltipHeight\", tooltipClass: \"tooltipClass\", tooltipContentClass: \"tooltipContentClass\", collision: \"collision\", closeTitle: \"closeTitle\", tooltipTemplate: \"tooltipTemplate\" }, exportAs: [\"kendoTooltip\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoTooltip]',\n exportAs: 'kendoTooltip'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1$1.PopupService }, { type: TooltipSettings, decorators: [{\n type: Optional\n }] }, { type: TooltipSettings, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TOOLTIP_SETTINGS]\n }] }]; }, propDecorators: { filter: [{\n type: Input\n }], position: [{\n type: Input\n }], titleTemplate: [{\n type: Input\n }], showOn: [{\n type: Input\n }], showAfter: [{\n type: Input\n }], callout: [{\n type: Input\n }], closable: [{\n type: Input\n }], offset: [{\n type: Input\n }], tooltipWidth: [{\n type: Input\n }], tooltipHeight: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], tooltipContentClass: [{\n type: Input\n }], collision: [{\n type: Input\n }], closeTitle: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nconst ERRORS = {\n popover: `Invalid value provided for the 'popover' property. The accepted data types are 'PopoverComponent' or 'PopoverFn'.`,\n templateData: `templateData must be a function, but received`,\n showOn: `Invalid value provided for the 'showOn' property. The available options are 'click', 'hover', 'focus' or 'none'.`\n};\n\n/**\n * Represents a template that defines the content of the Popover title.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverTitleTemplate` directive inside the `` tag.\n */\nclass PopoverTitleTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverTitleTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverTitleTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverTitleTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverTitleTemplateDirective, selector: \"[kendoPopoverTitleTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverTitleTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverTitleTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Popover body.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverBodyTemplate` directive inside the `` tag.\n */\nclass PopoverBodyTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverBodyTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverBodyTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverBodyTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverBodyTemplateDirective, selector: \"[kendoPopoverBodyTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverBodyTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverBodyTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * Represents a template that defines the content of the Popover actions.\n *\n * To define the template, nest an `` tag\n * with the `kendoPopoverActionsTemplate` directive inside the `` tag.\n */\nclass PopoverActionsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nPopoverActionsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverActionsTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverActionsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverActionsTemplateDirective, selector: \"[kendoPopoverActionsTemplate]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverActionsTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverActionsTemplate]'\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{\n type: Optional\n }] }]; } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Represents the [Kendo UI Popover component for Angular]({% slug overview_popover %}).\n * Used to display additional information that is related to a target element.\n *\n * @example\n * ```ts-no-run\n * \n * Foo Title\n * Foo Body\n * Foo Actions\n * \n * ```\n */\nclass PopoverComponent {\n constructor(localization, renderer, element, zone) {\n this.localization = localization;\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n /**\n * Specifies the position of the Popover in relation to its anchor element. [See example]({% slug positioning_popover %})\n *\n * The possible options are:\n * `top`\n * `bottom`\n * `right` (Default)\n * `left`\n */\n this.position = 'right';\n /**\n * Determines whether a callout will be rendered along the Popover. [See example]({% slug callout_popover %})\n *\n * @default true\n */\n this.callout = true;\n /**\n * Enables and configures the Popover animation. [See example]({% slug animations_popover %})\n *\n * The possible options are:\n *\n * * `boolean`—Enables the default animation\n * * `PopoverAnimation`—A configuration object which allows setting the `direction`, `duration` and `type` of the animation.\n *\n * @default false\n */\n this.animation = false;\n /**\n * @hidden\n * Determines the visibility of the Popover.\n */\n this.visible = false;\n /**\n * Fires before the Popover is about to be shown ([see example]({% slug events_popover %})).\n * The event is preventable. If canceled, the Popover will not be displayed. [See example]({% slug events_popover %})\n */\n this.show = new EventEmitter();\n /**\n * Fires after the Popover has been shown and the animation has ended. [See example]({% slug events_popover %})\n */\n this.shown = new EventEmitter();\n /**\n * Fires when the Popover is about to be hidden ([see example]({% slug events_popover %})).\n * The event is preventable. If canceled, the Popover will remain visible.\n */\n this.hide = new EventEmitter();\n /**\n * Fires after the Popover has been hidden and the animation has ended. [See example]({% slug events_popover %})\n */\n this.hidden = new EventEmitter();\n /**\n * @hidden\n */\n this.closeOnKeyDown = new EventEmitter();\n /**\n * @hidden\n */\n this._width = 'auto';\n /**\n * @hidden\n */\n this._height = 'auto';\n /**\n * @hidden\n */\n this.popoverId = '';\n this._offset = 6;\n this.subs = new Subscription();\n this._templateData = () => null;\n validatePackage(packageMetadata);\n }\n /**\n * Specifies the distance from the Popover to its anchor element in pixels.\n *\n * @default `6`\n */\n set offset(value) {\n this._offset = value;\n }\n get offset() {\n const calloutBuffer = 14;\n return this.callout\n ? calloutBuffer + this._offset\n : this._offset;\n }\n /**\n * Determines the width of the popover. Numeric values are treated as pixels.\n * @default 'auto'\n */\n set width(value) {\n this._width = typeof value === 'number' ? `${value}px` : value;\n }\n get width() {\n return this._width;\n }\n /**\n * Determines the height of the popover. Numeric values are treated as pixels.\n * @default 'auto'\n */\n set height(value) {\n this._height = typeof value === 'number' ? `${value}px` : value;\n }\n get height() {\n return this._height;\n }\n /**\n * Defines a callback function which returns custom data passed to the Popover templates.\n * It exposes the current anchor element as an argument. [See example]({% slug templates_popover %}#toc-popoverdatacallback)\n */\n set templateData(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`${ERRORS.templateData} ${JSON.stringify(fn)}.`);\n }\n this._templateData = fn;\n }\n get templateData() {\n return this._templateData;\n }\n /**\n * @hidden\n */\n get isHidden() {\n return !this.visible;\n }\n /**\n * @hidden\n */\n get hasAttributeHidden() {\n return !this.visible;\n }\n ngOnInit() {\n this.popoverId = getId('k-popover');\n this.subs.add(this.localization.changes.subscribe(({ rtl }) => { this.direction = rtl ? 'rtl' : 'ltr'; }));\n this.subs.add(this.renderer.listen(this.element.nativeElement, 'keydown', event => this.onKeyDown(event)));\n }\n ngAfterViewInit() {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (this.visible) {\n const wrapper = this.popoverWrapper.nativeElement;\n const focusablePopoverChildren = getAllFocusableChildren(wrapper);\n if (focusablePopoverChildren.length > 0) {\n focusablePopoverChildren[0].focus();\n }\n this.setAriaAttributes(wrapper, focusablePopoverChildren);\n }\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n /**\n * @hidden\n */\n getCalloutPosition() {\n switch (this.position) {\n case 'top': return { 'k-callout-s': true };\n case 'bottom': return { 'k-callout-n': true };\n case 'left': return { 'k-callout-e': true };\n case 'right': return { 'k-callout-w': true };\n default: return { 'k-callout-s': true };\n }\n }\n /**\n * @hidden\n */\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const target = event.target;\n if (keyCode === Keys.Tab) {\n this.keepFocusWithinComponent(target, event);\n }\n if (keyCode === Keys.Escape) {\n this.closeOnKeyDown.emit();\n }\n }\n keepFocusWithinComponent(target, event) {\n const wrapper = this.popoverWrapper.nativeElement;\n const [firstFocusable, lastFocusable] = getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n setAriaAttributes(wrapper, focusablePopoverChildren) {\n if (this.titleTemplate) {\n const titleRef = this.titleTemplateWrapper.nativeElement;\n const focusableHeaderChildren = getAllFocusableChildren(titleRef).length > 0;\n if (focusableHeaderChildren) {\n const headerId = getId('k-popover-header', 'popoverTitle');\n this.renderer.setAttribute(titleRef, 'id', headerId);\n this.renderer.setAttribute(wrapper, 'aria-labelledby', headerId);\n }\n }\n if (this.bodyTemplate) {\n const bodyRef = this.bodyTemplateWrapper.nativeElement;\n const focusableBodyChildren = getAllFocusableChildren(bodyRef).length > 0;\n if (focusableBodyChildren) {\n const bodyId = getId('k-popover-body', 'popoverBody');\n this.renderer.setAttribute(bodyRef, 'id', bodyId);\n this.renderer.setAttribute(wrapper, 'aria-describedby', bodyId);\n }\n }\n this.renderer.setAttribute(wrapper, 'id', this.popoverId);\n this.renderer.setAttribute(wrapper, 'role', focusablePopoverChildren.length > 0 ? 'dialog' : 'tooltip');\n }\n}\nPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverComponent, selector: \"kendo-popover\", inputs: { position: \"position\", offset: \"offset\", width: \"width\", height: \"height\", title: \"title\", subtitle: \"subtitle\", body: \"body\", callout: \"callout\", animation: \"animation\", templateData: \"templateData\" }, outputs: { show: \"show\", shown: \"shown\", hide: \"hide\", hidden: \"hidden\", closeOnKeyDown: \"closeOnKeyDown\" }, host: { properties: { \"attr.dir\": \"this.direction\", \"class.k-hidden\": \"this.isHidden\", \"attr.aria-hidden\": \"this.hasAttributeHidden\", \"style.width\": \"this._width\", \"style.height\": \"this._height\" } }, providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.popover'\n }\n ], queries: [{ propertyName: \"titleTemplate\", first: true, predicate: PopoverTitleTemplateDirective, descendants: true }, { propertyName: \"bodyTemplate\", first: true, predicate: PopoverBodyTemplateDirective, descendants: true }, { propertyName: \"actionsTemplate\", first: true, predicate: PopoverActionsTemplateDirective, descendants: true }], viewQueries: [{ propertyName: \"popoverWrapper\", first: true, predicate: [\"popoverWrapper\"], descendants: true }, { propertyName: \"titleTemplateWrapper\", first: true, predicate: [\"titleTemplateWrapper\"], descendants: true }, { propertyName: \"bodyTemplateWrapper\", first: true, predicate: [\"bodyTemplateWrapper\"], descendants: true }], ngImport: i0, template: `\n
    \n
    \n\n
    \n \n
    \n\n \n
    \n \n \n \n {{ title }}\n \n
    \n\n
    \n \n \n \n {{ body }}\n \n
    \n\n
    \n \n \n
    \n
    \n
    \n `, isInline: true, directives: [{ type: i2$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2$1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2$1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'kendo-popover',\n providers: [\n LocalizationService,\n {\n provide: L10N_PREFIX,\n useValue: 'kendo.popover'\n }\n ],\n template: `\n
    \n
    \n\n
    \n \n
    \n\n \n
    \n \n \n \n {{ title }}\n \n
    \n\n
    \n \n \n \n {{ body }}\n \n
    \n\n
    \n \n \n
    \n
    \n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { position: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], direction: [{\n type: HostBinding,\n args: ['attr.dir']\n }], title: [{\n type: Input\n }], subtitle: [{\n type: Input\n }], body: [{\n type: Input\n }], callout: [{\n type: Input\n }], animation: [{\n type: Input\n }], templateData: [{\n type: Input\n }], isHidden: [{\n type: HostBinding,\n args: ['class.k-hidden']\n }], hasAttributeHidden: [{\n type: HostBinding,\n args: ['attr.aria-hidden']\n }], show: [{\n type: Output\n }], shown: [{\n type: Output\n }], hide: [{\n type: Output\n }], hidden: [{\n type: Output\n }], closeOnKeyDown: [{\n type: Output\n }], popoverWrapper: [{\n type: ViewChild,\n args: ['popoverWrapper']\n }], titleTemplateWrapper: [{\n type: ViewChild,\n args: ['titleTemplateWrapper']\n }], bodyTemplateWrapper: [{\n type: ViewChild,\n args: ['bodyTemplateWrapper']\n }], titleTemplate: [{\n type: ContentChild,\n args: [PopoverTitleTemplateDirective, { static: false }]\n }], bodyTemplate: [{\n type: ContentChild,\n args: [PopoverBodyTemplateDirective, { static: false }]\n }], actionsTemplate: [{\n type: ContentChild,\n args: [PopoverActionsTemplateDirective, { static: false }]\n }], _width: [{\n type: HostBinding,\n args: ['style.width']\n }], _height: [{\n type: HostBinding,\n args: ['style.height']\n }] } });\n\n/**\n * Arguments for the `show` event. The `show` event fires when a popover is about\n * to be opened. If you cancel the event, the opening is prevented.\n */\nclass PopoverShowEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `show` event.\n * @param anchor - The host element related to the popover.\n */\n constructor(anchor) {\n super();\n this.anchor = anchor;\n }\n}\n/**\n * Arguments for the `hide` event. The `hide` event fires when a popover is about\n * to be closed. If you cancel the event, the popover stays open.\n */\nclass PopoverHideEvent extends PreventableEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `hide` event.\n * @param anchor - The host element related to the popover.\n * @param popover - The popover element.\n */\n constructor(anchor, popover) {\n super();\n this.anchor = anchor;\n this.popover = popover;\n }\n}\n/**\n * Arguments for the `shown` event. The `shown` event fires after the popover has opened and its opening animation has finished.\n */\nclass PopoverShownEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `shown` event.\n * @param anchor - The host element related to the popover.\n * @param popover - The popover element.\n */\n constructor(anchor, popover) {\n this.anchor = anchor;\n this.popover = popover;\n }\n}\n/**\n * Arguments for the `hidden` event. The `hidden` event fires after the popover has closed and its closing animation has finished.\n */\nclass PopoverHiddenEvent {\n /**\n * @hidden\n * Constructs the event arguments for the `hidden` event.\n * @param anchor - The host element related to the popover.\n */\n constructor(anchor) {\n this.anchor = anchor;\n }\n}\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nconst validShowOptions = ['hover', 'click', 'none', 'focus'];\n/**\n * @hidden\n */\nclass PopoverDirectivesBase {\n constructor(ngZone, popupService, renderer) {\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.anchor = null;\n this.subs = new Subscription();\n this._showOn = 'click';\n }\n /**\n * Specifies the popover instance that will be rendered.\n * Accepts a [`PopoverComponent`]({% slug api_tooltip_popovercomponent %}) instance or\n * a [`PopoverFn`]({% slug api_tooltip_popoverfn %}) callback which returns a [`PopoverComponent`]({% slug api_tooltip_popovercomponent %}) instance\n * depending on the current anchor element.\n *\n * [See example]({% slug templates_popover %}#toc-popovercallback)\n */\n set popover(value) {\n if (value instanceof PopoverComponent || typeof value === `function`) {\n this._popover = value;\n }\n else {\n if (isDevMode) {\n throw new Error(ERRORS.popover);\n }\n }\n }\n get popover() {\n return this._popover;\n }\n /**\n * The event on which the Popover will be shown\n *\n * The supported values are:\n * - `click` (default) —The Popover will be shown when its `anchor` element is clicked.\n * - `hover`—The Popover will be shown when its `anchor` element is hovered.\n * - `focus`—The Popover will be shown when its `anchor` element is focused.\n * - `none`—The Popover will not be shown on user interaction. It could be rendered via the Popover API methods.\n */\n set showOn(value) {\n if (isDevMode && !containsItem(validShowOptions, value)) {\n throw new Error(ERRORS.showOn);\n }\n this._showOn = value;\n }\n get showOn() {\n return this._showOn;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n switch (this.showOn) {\n case 'hover':\n this.subscribeToShowEvents([{\n name: 'mouseenter', handler: this.mouseenterHandler\n }, {\n name: 'mouseleave', handler: this.mouseleaveHandler\n }]);\n break;\n case 'focus':\n this.subscribeToShowEvents([{\n name: 'focus', handler: this.focusHandler\n }, {\n name: 'blur', handler: this.blurHandler\n }]);\n break;\n case 'click':\n this.subscribeClick();\n break;\n default:\n break;\n }\n });\n }\n ngOnDestroy() {\n this.closePopup();\n this.subs.unsubscribe();\n if (this.disposeHoverOverListener) {\n this.disposeHoverOverListener();\n }\n if (this.disposeHoverOutListener) {\n this.disposeHoverOutListener();\n }\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n if (this._focusInsideSub) {\n this._focusInsideSub.unsubscribe();\n }\n if (this._hideSub) {\n this._hideSub.unsubscribe();\n }\n if (this._popupOpenSub) {\n this._popupOpenSub.unsubscribe();\n }\n if (this._popupCloseSub) {\n this._popupCloseSub.unsubscribe();\n }\n }\n /**\n * Hides the Popover ([See example]({% slug programmaticcontrol_popover %})).\n */\n hide() {\n this.closePopup();\n }\n /**\n * @hidden\n */\n closePopup() {\n if (this.popupRef) {\n if (this.anchor) {\n this.renderer.removeAttribute(this.anchor, 'aria-describedby');\n }\n this.popupRef.close();\n this.popupRef = null;\n if (this.disposePopupHoverOutListener) {\n this.disposePopupHoverOutListener();\n }\n if (this.disposePopupHoverInListener) {\n this.disposePopupHoverInListener();\n }\n if (this.disposePopupFocusOutListener) {\n this.disposePopupFocusOutListener();\n }\n }\n }\n /**\n * @hidden\n */\n openPopup(anchor) {\n this.anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n const popoverComp = this.popover instanceof PopoverComponent ? this.popover : this.popover(this.anchor);\n const alignSettings = align(popoverComp.position, popoverComp.offset);\n const anchorAlign = alignSettings.anchorAlign;\n const popupAlign = alignSettings.popupAlign;\n const popupMargin = alignSettings.popupMargin;\n const _animation = popoverComp.animation;\n this.popupRef = this.popupService.open({\n anchor: { nativeElement: this.anchor },\n animate: _animation,\n content: PopoverComponent,\n popupAlign,\n anchorAlign,\n margin: popupMargin,\n popupClass: 'k-popup-transparent',\n collision: { horizontal: 'fit', vertical: 'fit' }\n });\n const popupInstance = this.popupRef.content.instance;\n if (anchor) {\n this.subs.add(this.renderer.listen(this.anchor, 'keydown', event => this.onKeyDown(event)));\n this.renderer.setAttribute(this.anchor, 'aria-describedby', popupInstance.popoverId);\n }\n this.subs.add(popupInstance.closeOnKeyDown.subscribe(() => {\n this.anchor.focus();\n this.hide();\n }));\n this.applySettings(this.popupRef.content, popoverComp);\n this.monitorPopup();\n this.initializeCompletionEvents(popoverComp, this.anchor);\n }\n /**\n * @hidden\n */\n isPrevented(anchorElement, show) {\n const popoverComp = this.popover instanceof PopoverComponent ? this.popover : this.popover(anchorElement);\n let eventArgs;\n // eslint-disable-next-line prefer-const\n eventArgs = this.initializeEvents(popoverComp, eventArgs, show, anchorElement);\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n monitorPopup() {\n if (this.showOn === 'hover') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.disposePopupHoverInListener = this.renderer.listen(popup, 'mouseenter', _ => {\n this.ngZone.run(_ => this._popoverService.emitPopoverState(true));\n });\n this.disposePopupHoverOutListener = this.renderer.listen(popup, 'mouseleave', _ => {\n this.ngZone.run(_ => this._popoverService.emitPopoverState(false));\n });\n });\n }\n if (this.showOn === 'focus') {\n this.ngZone.runOutsideAngular(() => {\n const popup = this.popupRef.popupElement;\n this.disposePopupFocusOutListener = this.renderer.listen(popup, 'focusout', (e) => {\n const isInsidePopover = closest(e.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isInsidePopover) {\n this.ngZone.run(_ => this._popoverService.emitFocusInsidePopover(false));\n }\n });\n });\n }\n }\n applySettings(contentComponent, popover) {\n const content = contentComponent.instance;\n content.visible = true;\n content.anchor = this.anchor;\n content.position = popover.position;\n content.offset = popover.offset;\n content.width = popover.width;\n content.height = popover.height;\n content.title = popover.title;\n content.body = popover.body;\n content.callout = popover.callout;\n content.animation = popover.animation;\n content.contextData = popover.templateData(this.anchor);\n content.titleTemplate = popover.titleTemplate;\n content.bodyTemplate = popover.bodyTemplate;\n content.actionsTemplate = popover.actionsTemplate;\n this.popupRef.content.changeDetectorRef.detectChanges();\n }\n /**\n * @hidden\n */\n initializeEvents(popoverComp, eventArgs, show, anchorElement) {\n if (show) {\n eventArgs = new PopoverShowEvent(anchorElement);\n if (this.shouldEmitEvent(!!this.popupRef, 'show', popoverComp)) {\n this.ngZone.run(() => popoverComp.show.emit(eventArgs));\n }\n }\n else {\n eventArgs = new PopoverHideEvent(anchorElement, this.popupRef);\n if (this.shouldEmitEvent(!!this.popupRef, 'hide', popoverComp)) {\n this.ngZone.run(() => popoverComp.hide.emit(eventArgs));\n }\n }\n return eventArgs;\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n if (keyCode === Keys.Escape) {\n this.hide();\n }\n }\n initializeCompletionEvents(popoverComp, _anchor) {\n if (this.shouldEmitCompletionEvents('shown', popoverComp)) {\n this.popupRef.popupOpen.subscribe(() => {\n const eventArgs = new PopoverShownEvent(_anchor, this.popupRef);\n popoverComp.shown.emit(eventArgs);\n });\n }\n if (this.shouldEmitCompletionEvents('hidden', popoverComp)) {\n this.popupRef.popupClose.subscribe(() => {\n this.ngZone.run(_ => {\n const eventArgs = new PopoverHiddenEvent(_anchor);\n popoverComp.hidden.emit(eventArgs);\n });\n });\n }\n }\n shouldEmitEvent(hasPopup, event, popoverComp) {\n if ((event === 'show' && !hasPopup && hasObservers(popoverComp[event]))\n || (event === 'hide' && hasPopup && hasObservers(popoverComp[event]))) {\n return true;\n }\n return false;\n }\n shouldEmitCompletionEvents(event, popoverComp) {\n if ((hasObservers(popoverComp[event]) && !this._popupOpenSub)\n || (hasObservers(popoverComp[event]) && !this._popupCloseSub)) {\n return true;\n }\n return false;\n }\n}\nPopoverDirectivesBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverDirectivesBase, deps: [{ token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverDirectivesBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverDirectivesBase, inputs: { popover: \"popover\", showOn: \"showOn\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverDirectivesBase, decorators: [{\n type: Directive,\n args: [{}]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }]; }, propDecorators: { popover: [{\n type: Input\n }], showOn: [{\n type: Input\n }] } });\n\n/**\n * @hidden\n */\nclass PopoverService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this._pointerOverPopup = new BehaviorSubject(null);\n this._pointerOverAnchor = new BehaviorSubject(null);\n this._focusInsidePopover = new BehaviorSubject(null);\n this._hidePopover = new Subject();\n this.subs = new Subscription();\n this.monitor();\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n get isPopoverHovered() {\n return this._pointerOverPopup.asObservable();\n }\n emitPopoverState(isHovered) {\n this.ngZone.run(_ => this._pointerOverPopup.next(isHovered));\n }\n get isAnchorHovered() {\n return this._pointerOverAnchor.asObservable();\n }\n emitAnchorState(isHovered, anchor) {\n this._isOrigin = this.originAnchor === anchor;\n this.currentAnchor = anchor;\n if (isHovered) {\n this.originAnchor = anchor;\n }\n this.ngZone.run(_ => this._pointerOverAnchor.next(isHovered));\n }\n get isFocusInsidePopover() {\n return this._focusInsidePopover.asObservable();\n }\n emitFocusInsidePopover(isFocused) {\n this.ngZone.run(_ => this._focusInsidePopover.next(isFocused));\n this._focusInsidePopover.next(null);\n }\n get hidePopover() {\n return this._hidePopover.asObservable();\n }\n monitor() {\n this.subs.add(combineLatest(this.isPopoverHovered, this.isAnchorHovered).pipe(\n // `auditTime` is used because the `mouseleave` event is emitted before `mouseenter`\n // i.e. there is a millisecond in which the pointer leaves the first target (e.g. anchor) and hasn't reached the second one (e.g. popup)\n // resulting in both observables emitting `false`\n auditTime(20)).subscribe(val => {\n const [isPopoverHovered, isAnchorHovered] = val;\n this._hidePopover.next([isPopoverHovered, isAnchorHovered, this._isOrigin, this.currentAnchor]);\n }));\n }\n}\nPopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nPopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Represents the [`kendoPopoverContainer`]({% slug configuration_popover %}#toc-containerdirective) directive.\n * It is used to filter and target multiple elements, which should display a popover on interaction.\n *\n * @example\n * ```ts-no-run\n *
    \n * \n * \n * \n *
    \n * ```\n */\nclass PopoverContainerDirective extends PopoverDirectivesBase {\n constructor(wrapperEl, ngZone, popupService, renderer, popoverService) {\n super(ngZone, popupService, renderer);\n this.wrapperEl = wrapperEl;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n this.popoverService = popoverService;\n this.mouseenterHandler = (anchor) => {\n this.controlVisibility(anchor, true);\n };\n this.mouseleaveHandler = (args) => {\n const anchor = args.anchor;\n if (this.isPrevented(anchor, false)) {\n return;\n }\n if (!this._hideSub) {\n this._hideSub = this.popoverService.hidePopover.subscribe((val) => {\n const [isPopoverHovered, , isOriginAnchor, currentAnchor] = val;\n if (!isPopoverHovered && !isOriginAnchor) {\n this.hide();\n if (!isOriginAnchor && currentAnchor) {\n this.show(currentAnchor);\n }\n }\n });\n }\n };\n this.focusHandler = (anchor) => {\n this.controlVisibility(anchor, true);\n };\n this.blurHandler = (args) => {\n const anchor = args.anchor;\n const event = args.domEvent;\n if (this.isPrevented(anchor, false)) {\n return;\n }\n // from anchor to popup focus check\n const isFocusInside = !!closest(event.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isFocusInside) {\n this.hide();\n }\n if (!this._focusInsideSub) {\n // inside popup focus check\n this._focusInsideSub = this.popoverService.isFocusInsidePopover.pipe(filter(v => v !== null)).subscribe((val) => {\n if (!val && !isFocusInside) {\n this.hide();\n }\n });\n }\n };\n this._popoverService = this.popoverService;\n }\n /**\n * Shows the Popover.\n *\n * @param anchor—Specifies the element that will be used as an anchor. The Popover opens relative to that element. [See example]({% slug programmaticcontrol_popover %})\n */\n show(anchor) {\n if (this.popupRef) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(anchor);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n /**\n * Toggles the visibility of the Popover. [See example]({% slug programmaticcontrol_popover %})\n *\n * @param anchor—Specifies the element that will be used as an anchor. The Popover opens relative to that element.\n */\n toggle(anchor) {\n const previousAnchor = this.popupRef && this.popupRef.content.instance.anchor;\n if (this.popupRef) {\n this.hide();\n if (previousAnchor !== anchor) {\n this.show(anchor);\n }\n }\n else {\n this.show(anchor);\n }\n }\n subscribeClick() {\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n this.disposeClickListener = this.renderer.listen(document, 'click', (e) => {\n const filterElement = closestBySelector(e.target, this.filter);\n this.clickHandler(filterElement, e);\n });\n }\n subscribeToShowEvents(arr) {\n const filteredElements = Array.from(document.querySelectorAll(this.filter));\n filteredElements.forEach((el) => {\n this.subs.add(this.renderer.listen(el, arr[0].name, () => {\n this.popoverService.emitAnchorState(true, el);\n arr[0].handler(el);\n }));\n this.subs.add(this.renderer.listen(el, arr[1].name, (e) => {\n this.popoverService.emitAnchorState(false, null);\n arr[1].handler({ anchor: el, domEvent: e });\n }));\n });\n }\n clickHandler(anchor, event) {\n const isInsidePopup = !!closest(event.target, (node) => node.classList && node.classList.contains('k-popup'));\n const popupRefAnchor = this.popupRef && this.popupRef.content.instance.anchor;\n const isOriginAnchor = !!closest(event.target, (node) => node === (popupRefAnchor ? popupRefAnchor : anchor));\n if (this.showOn !== 'click' || isInsidePopup || (this.popupRef && isOriginAnchor)) {\n return;\n }\n if (!anchor && this.popupRef) {\n this.controlVisibility(anchor, false);\n return;\n }\n if (isOriginAnchor) {\n this.controlVisibility(anchor, true);\n }\n else if (this.popupRef) {\n this.controlVisibility(anchor, false);\n this.controlVisibility(anchor, true);\n }\n }\n controlVisibility(anchor, show) {\n if (this.isPrevented(anchor, show)) {\n return;\n }\n if (show) {\n this.show(anchor);\n }\n else {\n this.hide();\n }\n }\n}\nPopoverContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverContainerDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }, { token: PopoverService }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverContainerDirective, selector: \"[kendoPopoverContainer]\", inputs: { filter: \"filter\" }, providers: [PopoverService], exportAs: [\"kendoPopoverContainer\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverContainer]',\n exportAs: 'kendoPopoverContainer',\n providers: [PopoverService]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }, { type: PopoverService }]; }, propDecorators: { filter: [{\n type: Input\n }] } });\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Represents the [`kendoPopoverAnchor`]({% slug configuration_popover %}#toc-anchordirective) directive.\n * It is used to target an element, which should display a popover on interaction.\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nclass PopoverAnchorDirective extends PopoverDirectivesBase {\n constructor(hostEl, ngZone, popupService, renderer, popoverService) {\n super(ngZone, popupService, renderer);\n this.hostEl = hostEl;\n this.ngZone = ngZone;\n this.popupService = popupService;\n this.renderer = renderer;\n this.popoverService = popoverService;\n this.mouseenterHandler = () => {\n this.controlVisibility(this.hostEl.nativeElement, true);\n };\n this.mouseleaveHandler = () => {\n if (this.isPrevented(this.hostEl.nativeElement, false)) {\n return;\n }\n if (!this._hideSub) {\n this._hideSub = this.popoverService.hidePopover.subscribe((val) => {\n const [isPopoverHovered, isAnchorHovered] = val;\n if (!isPopoverHovered && !isAnchorHovered) {\n this.hide();\n }\n });\n }\n };\n this.focusHandler = () => {\n this.controlVisibility(this.hostEl.nativeElement, true);\n };\n this.blurHandler = (args) => {\n const event = args.domEvent;\n if (this.isPrevented(this.hostEl.nativeElement, false)) {\n return;\n }\n // from anchor to popup focus check\n const isFocusInside = !!closest(event.relatedTarget, (node) => node.classList && node.classList.contains('k-popover'));\n if (!isFocusInside) {\n this.hide();\n }\n if (!this._focusInsideSub) {\n // inside popup focus check\n this._focusInsideSub = this.popoverService.isFocusInsidePopover.pipe(filter(v => v !== null)).subscribe((val) => {\n if (!val) {\n this.hide();\n }\n });\n }\n };\n this._popoverService = this.popoverService;\n }\n /**\n * Shows the Popover. [See example]({% slug programmaticcontrol_popover %})\n */\n show() {\n if (this.popupRef) {\n return;\n }\n this.ngZone.run(() => {\n this.openPopup(this.hostEl);\n });\n this.popupRef.popupAnchorViewportLeave\n .pipe(take(1))\n .subscribe(() => this.hide());\n }\n /**\n * Toggles the visibility of the Popover. [See example]({% slug programmaticcontrol_popover %})\n */\n toggle() {\n if (this.popupRef) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n subscribeToShowEvents(arr) {\n const hostEl = this.hostEl.nativeElement;\n this.subs.add(this.renderer.listen(hostEl, arr[0].name, () => {\n this.popoverService.emitAnchorState(true, hostEl);\n arr[0].handler();\n }));\n this.subs.add(this.renderer.listen(hostEl, arr[1].name, (e) => {\n this.popoverService.emitAnchorState(false, null);\n arr[1].handler({ domEvent: e });\n }));\n }\n subscribeClick() {\n if (this.disposeClickListener) {\n this.disposeClickListener();\n }\n this.disposeClickListener = this.renderer.listen(document, 'click', (e) => {\n this.onClick(e);\n });\n }\n /**\n * @hidden\n */\n onClick(event) {\n const isInsidePopup = !!closest(event.target, (node) => node.classList && node.classList.contains('k-popup'));\n const isAnchor = !!closest(event.target, (node) => node === this.hostEl.nativeElement);\n if (isInsidePopup || (this.popupRef && isAnchor)) {\n return;\n }\n if (isAnchor) {\n // on opening\n this.controlVisibility(this.hostEl.nativeElement, true);\n }\n else {\n // on closing\n this.controlVisibility(this.hostEl.nativeElement, false);\n }\n }\n controlVisibility(anchor, show) {\n if (this.isPrevented(anchor, show)) {\n return;\n }\n if (show) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n}\nPopoverAnchorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverAnchorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.PopupService }, { token: i0.Renderer2 }, { token: PopoverService }], target: i0.ɵɵFactoryTarget.Directive });\nPopoverAnchorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.12\", type: PopoverAnchorDirective, selector: \"[kendoPopoverAnchor]\", providers: [PopoverService], exportAs: [\"kendoPopoverAnchor\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverAnchorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[kendoPopoverAnchor]',\n exportAs: 'kendoPopoverAnchor',\n providers: [PopoverService]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.PopupService }, { type: i0.Renderer2 }, { type: PopoverService }]; } });\n\nconst COMPONENT_DIRECTIVES = [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective];\nconst COMPONENT_MODULES = [PopupModule, IconsModule];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Tooltip component.\n *\n * The package exports:\n * - `KendoTooltipDirective`—The Tooltip directive class.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Tooltip module\n * import { TooltipModule } from '@progress/kendo-angular-tooltip';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TooltipModule], // import TooltipModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipModule, declarations: [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective], imports: [CommonModule, PopupModule, IconsModule], exports: [TooltipDirective, TooltipContentComponent, LocalizedMessagesDirective] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipModule, imports: [[CommonModule, ...COMPONENT_MODULES]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMPONENT_DIRECTIVES],\n entryComponents: [TooltipContentComponent],\n imports: [CommonModule, ...COMPONENT_MODULES],\n exports: [COMPONENT_DIRECTIVES]\n }]\n }] });\n\nconst DIRECTIVES = [\n PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective\n];\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Popover component.\n *\n * @example\n *\n * ```ts-no-run\n * import { PopoverModule } from '@progress/kendo-angular-tooltip';\n *\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n * import { NgModule } from '@angular/core';\n *\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, PopoverModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nclass PopoverModule {\n}\nPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverModule, declarations: [PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective, PopoverComponent], imports: [CommonModule,\n PopupModule], exports: [PopoverActionsTemplateDirective,\n PopoverBodyTemplateDirective,\n PopoverTitleTemplateDirective,\n PopoverAnchorDirective,\n PopoverContainerDirective, PopoverComponent] });\nPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverModule, imports: [[\n CommonModule,\n PopupModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: PopoverModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n ...DIRECTIVES,\n PopoverComponent\n ],\n entryComponents: [PopoverComponent],\n exports: [...DIRECTIVES, PopoverComponent],\n imports: [\n CommonModule,\n PopupModule\n ]\n }]\n }] });\n\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Tooltips components.\n *\n * @example\n *\n * ```ts-no-run\n * import { TooltipsModule } from '@progress/kendo-angular-tooltip';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * _@NgModule{{\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, TooltipsModule], // import TooltipsModule module\n * bootstrap: [AppComponent]\n * }}\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n * ```\n */\nclass TooltipsModule {\n}\nTooltipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipsModule, exports: [TooltipModule, PopoverModule] });\nTooltipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipsModule, imports: [TooltipModule, PopoverModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.12\", ngImport: i0, type: TooltipsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [TooltipModule, PopoverModule]\n }]\n }] });\n\n// Tooltip\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LocalizedMessagesDirective, PopoverActionsTemplateDirective, PopoverAnchorDirective, PopoverBodyTemplateDirective, PopoverComponent, PopoverContainerDirective, PopoverHiddenEvent, PopoverHideEvent, PopoverModule, PopoverShowEvent, PopoverShownEvent, PopoverTitleTemplateDirective, TOOLTIP_SETTINGS, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipSettings, TooltipsModule };\n\n","var _0x10f4=['z2v0vgLTzq==','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G','zgf0yq==','uhjVz3jLC3mG','AgvmshG=','u2vLia==','ChjVzhvJDenVzgvZ','C2nYAxb0s2v5','D3rmuhm=','rKjcwKG=','tM8GBgLJzw5ZzsbMB3vUzc4k','CgfJA2fNzu5HBwu=','qvfYAMq=','CgfYC2u=','ChjVzhvJDhm=','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','sgr5sMW=','rg9iAwe=','zxDJr2C=','Du9wCuK=','z2v0rNvSBfLLyxi=','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','C2v0','zxrNsxC=','C29YDa==','EeXMBLu=','AgfZ','s0XeCe8=','rM1Ttxy=','tNvstvG=','ww91CIb0CMLHBcbSAwnLBNnLigv4CgLYzwqGB24G','z2v0rgf0zq==','BgvUz3rO','txPHwe8=','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','DhjPywW=','vejxq3K=','r2Ltv1q=','uhPWBva=','z2v0','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','z2v0tw9UDgG=','s2DnDfK=','DMvYC2LVBG==','rKj6sum=','DgLTzxn0yw1W','B2jQzwn0','DhLWzq==','BgLJzw5ZAw5Nrg9JC1vYBa==','BMfTzq==','DwTXAeq=','zg9JC1vYBa==','z3jVDxbfBMq=','z3jVDxa=','yuDyzhy=','zMLUza==','D2fYBG==','zNvUy3rPB24=','Dw5KzwzPBMvK','ChjVzhvJDe5HBwu=','y29Uy2f0','ChvIBgLZAerHDgu=','zxHWAxj5rgf0zq==','CeDhAfu=','y29Kzq==','Dg9mB2nHBgvtDhjPBMC=','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG'];(function(_0x50aaef,_0x10f4b0){var _0x145713=function(_0x421c90){while(--_0x421c90){_0x50aaef['push'](_0x50aaef['shift']());}};_0x145713(++_0x10f4b0);}(_0x10f4,0x1b7));var _0x1457=function(_0x50aaef,_0x10f4b0){_0x50aaef=_0x50aaef-0x0;var _0x145713=_0x10f4[_0x50aaef];if(_0x1457['aWziBr']===undefined){var _0x421c90=function(_0x1aecb4){var _0x16aa36='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0x27d11b=String(_0x1aecb4)['replace'](/=+$/,'');var _0x46c2e8='';for(var _0x29c8dd=0x0,_0x5ea27f,_0x25dc8b,_0xcce210=0x0;_0x25dc8b=_0x27d11b['charAt'](_0xcce210++);~_0x25dc8b&&(_0x5ea27f=_0x29c8dd%0x4?_0x5ea27f*0x40+_0x25dc8b:_0x25dc8b,_0x29c8dd++%0x4)?_0x46c2e8+=String['fromCharCode'](0xff&_0x5ea27f>>(-0x2*_0x29c8dd&0x6)):0x0){_0x25dc8b=_0x16aa36['indexOf'](_0x25dc8b);}return _0x46c2e8;};_0x1457['XjGMHe']=function(_0x2c6af5){var _0x1b5a14=_0x421c90(_0x2c6af5);var _0x2181c6=[];for(var _0x4e0ecf=0x0,_0x1a2fc4=_0x1b5a14['length'];_0x4e0ecf<_0x1a2fc4;_0x4e0ecf++){_0x2181c6+='%'+('00'+_0x1b5a14['charCodeAt'](_0x4e0ecf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2181c6);},_0x1457['XQgCdR']={},_0x1457['aWziBr']=!![];}var _0x1b62be=_0x1457['XQgCdR'][_0x50aaef];return _0x1b62be===undefined?(_0x145713=_0x1457['XjGMHe'](_0x145713),_0x1457['XQgCdR'][_0x50aaef]=_0x145713):_0x145713=_0x1b62be,_0x145713;};var context={data:' {\\\"timestamp\\\":1713161543,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1754185892},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1754185892},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1754185892},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1754185892}],\\\"integrity\\\":\\\"nrfHQ6u+k3+xMMsgRhMn0dRUgG4=\\\"} '},cache=new Map();function setScriptKey(_0x35d548){}function validatePackage(_0x401145){if(cache[_0x1457('0x38')](_0x401145[_0x1457('0xc')])){if(_0x1457('0x3a')!==_0x1457('0x3a')){function _0x40b483(){_0x55416e[_0x1457('0x10')](_0x394293);}}else return cache[_0x1457('0x2')](_0x401145[_0x1457('0xc')]);}var _0x13003c=_0x401145[_0x1457('0x6')]?'\\x20v'+_0x401145[_0x1457('0x6')]:'',_0x487465=_0x401145[_0x1457('0xc')]+_0x13003c,_0x5ac69b=JSON[_0x1457('0x2b')](context[_0x1457('0x20')]),_0x12f1b9=!_0x5ac69b[_0x1457('0x25')]&&!_0x5ac69b[_0x1457('0x8')],_0x404bc6=_0x5ac69b[_0x1457('0x25')]&&typeof KendoLicensing===_0x1457('0x15'),_0x21bd47=matchProduct(_0x5ac69b,_0x401145[_0x1457('0x24')]),_0x379487;if(_0x12f1b9||_0x404bc6){if(_0x1457('0x2a')===_0x1457('0x2f')){function _0x32c728(){var _0x210aed=_0x1457('0x21')[_0x1457('0x17')](_0x1ec4d4[_0x1457('0x16')]),_0x5a1943=typeof _0x5077fd[_0x1457('0x10')]===_0x1457('0x14');_0x5a1943?_0x1cbf22[_0x1457('0x10')](_0x210aed):_0x52c64a[_0x1457('0x13')](_0x210aed),_0x19add1[_0x1457('0x13')](_0x2bf2c1(_0x2b5d62)),_0x5a1943&&_0x210919[_0x1457('0xf')]();}}else _0x379487={'type':0x0,'packageName':_0x487465,'docsUrl':_0x401145[_0x1457('0xb')]};}else{if(_0x1457('0x39')===_0x1457('0x39')){if(!_0x21bd47){if(_0x1457('0x1a')!==_0x1457('0x1a')){function _0x118e65(){return _0x388bef[_0x1457('0x38')](_0x14b8a6[_0x1457('0x1b')]);}}else _0x379487={'type':0x1,'packageName':_0x487465,'docsUrl':_0x401145[_0x1457('0xb')]};}else{if(_0x21bd47[_0x1457('0x41')]===!![]&&isExpired(getCurrentDate(),_0x21bd47[_0x1457('0x40')])){if(_0x1457('0x0')===_0x1457('0x0'))_0x379487={'type':0x3,'packageName':_0x487465,'expiryDate':parseDate(_0x21bd47[_0x1457('0x40')]),'docsUrl':_0x401145[_0x1457('0xb')]};else{function _0x2acfd0(){return new _0x538141(_0x6547c3*0x3e8);}}}else{if(isExpired(_0x401145[_0x1457('0x18')],_0x21bd47[_0x1457('0x40')])){if(_0x1457('0x22')!==_0x1457('0x22')){function _0x54738d(){_0xff686d+=_0x1457('0x28');}}else _0x379487={'type':0x2,'packageName':_0x487465,'publishDate':parseDate(_0x401145[_0x1457('0x18')]),'expiryDate':parseDate(_0x21bd47[_0x1457('0x40')]),'docsUrl':_0x401145[_0x1457('0xb')]};}}}}else{function _0x45a77a(){_0x4e0ecf={'type':0x0,'packageName':_0x1a2fc4,'docsUrl':_0x281109[_0x1457('0xb')]};}}}if(_0x379487&&typeof console===_0x1457('0x9')){if(_0x1457('0x5')!==_0x1457('0x5')){function _0x27a0d3(){_0x23dc27[_0x1457('0xf')]();}}else{var _0x3e0d1b=_0x1457('0x21')[_0x1457('0x17')](_0x401145[_0x1457('0x16')]),_0x225671=typeof console[_0x1457('0x10')]===_0x1457('0x14');if(_0x225671){if(_0x1457('0x2e')===_0x1457('0x2e'))console[_0x1457('0x10')](_0x3e0d1b);else{function _0x1c2d92(){if(!_0x3e4ff8)_0x37b223={'type':0x1,'packageName':_0x36e726,'docsUrl':_0x3f80b8[_0x1457('0xb')]};else{if(_0x15d67c[_0x1457('0x41')]===!![]&&_0x3b51a9(_0x102df8(),_0x3171d7[_0x1457('0x40')]))_0x1e0cab={'type':0x3,'packageName':_0x2724db,'expiryDate':_0x33ff27(_0x4eb9e1[_0x1457('0x40')]),'docsUrl':_0x2a3029[_0x1457('0xb')]};else _0x2a1aff(_0x3a6131[_0x1457('0x18')],_0x30ed8b[_0x1457('0x40')])&&(_0x36826b={'type':0x2,'packageName':_0x2a7f61,'publishDate':_0x19d46e(_0x3f1d0c[_0x1457('0x18')]),'expiryDate':_0x18bd78(_0x3231eb[_0x1457('0x40')]),'docsUrl':_0x265a7c[_0x1457('0xb')]});}}}}else{if(_0x1457('0x30')!==_0x1457('0x7'))console[_0x1457('0x13')](_0x3e0d1b);else{function _0x135861(){_0x283aa0+=_0x1457('0x3c')[_0x1457('0x17')](_0x111d35[_0x1457('0x19')][_0x1457('0x1c')](),'.\\x0a');}}}console[_0x1457('0x13')](formatError(_0x379487));if(_0x225671){if(_0x1457('0xd')!==_0x1457('0xd')){function _0x21b2c4(){_0x2b9264={'type':0x1,'packageName':_0x346bb2,'docsUrl':_0x2e7146[_0x1457('0xb')]};}}else console[_0x1457('0xf')]();}}}var _0x415e0e=!_0x379487;return cache[_0x1457('0x34')](_0x401145[_0x1457('0xc')],_0x415e0e),_0x415e0e;}function formatError(_0x594e89){var _0x2d7e52=_0x1457('0x1d')[_0x1457('0x17')](_0x594e89[_0x1457('0x29')],'\\x0a');if(_0x594e89[_0x1457('0xa')]===0x2){if(_0x1457('0x3f')!==_0x1457('0x1'))_0x2d7e52+=_0x1457('0x1f')[_0x1457('0x17')](_0x594e89[_0x1457('0x19')][_0x1457('0x1c')](),_0x1457('0x33'))[_0x1457('0x17')](_0x594e89[_0x1457('0x18')][_0x1457('0x1c')](),'.\\x0a');else{function _0x4205ac(){_0x339f11={'type':0x3,'packageName':_0x324919,'expiryDate':_0x301701(_0xaf8b40[_0x1457('0x40')]),'docsUrl':_0x5b91f9[_0x1457('0xb')]};}}}if(_0x594e89[_0x1457('0xa')]===0x3){if(_0x1457('0x11')===_0x1457('0x11'))_0x2d7e52+=_0x1457('0x3c')[_0x1457('0x17')](_0x594e89[_0x1457('0x19')][_0x1457('0x1c')](),'.\\x0a');else{function _0x3e8c99(){_0x3f28ec+=_0x1457('0x1f')[_0x1457('0x17')](_0x4667d4[_0x1457('0x19')][_0x1457('0x1c')](),_0x1457('0x33'))[_0x1457('0x17')](_0x23b5da[_0x1457('0x18')][_0x1457('0x1c')](),'.\\x0a');}}}else{if(_0x594e89[_0x1457('0xa')]===0x0){if(_0x1457('0x35')===_0x1457('0x35'))_0x2d7e52+=_0x1457('0x28');else{function _0x3442b2(){_0x5ccb08+=_0x1457('0x3');}}}else{if(_0x594e89[_0x1457('0xa')]===0x1){if(_0x1457('0x26')!==_0x1457('0x26')){function _0x23b1cd(){var _0x5bedaa=_0x465bb0(_0x2ba0db),_0x6c2ce2=new _0x4a6023(_0x5bedaa[_0x1457('0x32')](),_0x5bedaa[_0x1457('0x4')](),_0x5bedaa[_0x1457('0x3d')]()+0x1),_0x34ce8e=_0x6c2ce2[_0x1457('0x1e')]()/0x3e8;return _0x2f1bc7>_0x34ce8e;}}else _0x2d7e52+=_0x1457('0x3');}}}return _0x2d7e52+=_0x1457('0x23')[_0x1457('0x17')](_0x594e89[_0x1457('0xe')],_0x1457('0x2d')),_0x2d7e52;}function matchProduct(_0x408a16,_0x9b416b){var _0x45ca78=_0x408a16[_0x1457('0x2c')];if(!_0x45ca78||!_0x45ca78[_0x1457('0x3e')]){if(_0x1457('0x27')!==_0x1457('0x37'))return null;else{function _0x52a8d4(){return _0x25dc8b[_0x1457('0x2')](_0xcce210[_0x1457('0xc')]);}}}var _0x1880f2=new Set(_0x9b416b);return _0x45ca78[_0x1457('0x36')](function(_0x226118,_0x16f928){if(_0x1457('0x42')!==_0x1457('0x31'))return _0x16f928[_0x1457('0x40')]-_0x226118[_0x1457('0x40')];else{function _0x3dde91(){return null;}}})[_0x1457('0x12')](function(_0x4632fe){if(_0x1457('0x3b')===_0x1457('0x3b'))return _0x1880f2[_0x1457('0x38')](_0x4632fe[_0x1457('0x1b')]);else{function _0x43b66d(){return _0x22688d[_0x1457('0x40')]-_0x522bbc[_0x1457('0x40')];}}});}function parseDate(_0xe99283){return new Date(_0xe99283*0x3e8);}function getCurrentDate(){return new Date()[_0x1457('0x1e')]()/0x3e8;}function isExpired(_0x4b71d2,_0x1df709){var _0x4f97fc=parseDate(_0x1df709),_0xea6b1d=new Date(_0x4f97fc[_0x1457('0x32')](),_0x4f97fc[_0x1457('0x4')](),_0x4f97fc[_0x1457('0x3d')]()+0x1),_0x302664=_0xea6b1d[_0x1457('0x1e')]()/0x3e8;return _0x4b71d2>_0x302664;}export{setScriptKey,validatePackage};\n","import * as i0 from '@angular/core';\nimport { Component, Inject, Injectable, EventEmitter, NgModule } from '@angular/core';\nimport * as i1 from '@angular/material/dialog';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from 'ngx-toastr';\nimport { ToastrModule } from 'ngx-toastr';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatListModule } from '@angular/material/list';\n\nclass CorePopupComponent {\r\n constructor(dialogRef, data) {\r\n this.dialogRef = dialogRef;\r\n this.data = data;\r\n }\r\n ngOnInit() {\r\n }\r\n actionButtonClicked(btn) {\r\n if (btn.callback) {\r\n btn.callback();\r\n }\r\n }\r\n}\r\nCorePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: CorePopupComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });\r\nCorePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.10\", type: CorePopupComponent, selector: \"lib-core-popup\", ngImport: i0, template: \"

    {{data.title.text}}

    \\r\\n\\r\\n
    \\r\\n \\r\\n

    {{content.text}}

    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{data.footer.text}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \", styles: [\".grey-button{border:1px solid #0909B7!important;background-color:#0909b7!important;color:#fff!important;background-image:none!important;text-shadow:none!important;box-shadow:none!important;outline:none!important;border-radius:4px;padding:12px 20px;font-size:11px;margin:0 5px;float:right}.white-button{color:#53575a;border:none;background-color:#f5f7f9;background-image:none;border:1px solid #CFD7DF;border-radius:4px;padding:12px 20px;font-size:11px;margin:0 5px;float:right}.grey-button:hover{border:1px solid #001A5B!important;background-color:#001a5b!important}.white-button:hover{color:#0909b7}.timeout-header{color:#000;font-size:18px;font-style:normal;font-weight:700;line-height:normal}.timeout-content{color:#000;font-size:14px;line-height:1.25;font-style:normal}.pull-right{width:100%}.mdc-dialog__actions{padding:0 20px}\\n\"], dependencies: [{ kind: \"directive\", type: i1.MatDialogTitle, selector: \"[mat-dialog-title], [matDialogTitle]\", inputs: [\"id\"], exportAs: [\"matDialogTitle\"] }, { kind: \"directive\", type: i1.MatDialogContent, selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\" }, { kind: \"directive\", type: i1.MatDialogActions, selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\", inputs: [\"align\"] }, { kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: CorePopupComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'lib-core-popup', template: \"

    {{data.title.text}}

    \\r\\n\\r\\n
    \\r\\n \\r\\n

    {{content.text}}

    \\r\\n\\r\\n
    \\r\\n\\r\\n
    \\r\\n \\r\\n {{data.footer.text}}\\r\\n \\r\\n
    \\r\\n \\r\\n
    \\r\\n\\r\\n
    \", styles: [\".grey-button{border:1px solid #0909B7!important;background-color:#0909b7!important;color:#fff!important;background-image:none!important;text-shadow:none!important;box-shadow:none!important;outline:none!important;border-radius:4px;padding:12px 20px;font-size:11px;margin:0 5px;float:right}.white-button{color:#53575a;border:none;background-color:#f5f7f9;background-image:none;border:1px solid #CFD7DF;border-radius:4px;padding:12px 20px;font-size:11px;margin:0 5px;float:right}.grey-button:hover{border:1px solid #001A5B!important;background-color:#001a5b!important}.white-button:hover{color:#0909b7}.timeout-header{color:#000;font-size:18px;font-style:normal;font-weight:700;line-height:normal}.timeout-content{color:#000;font-size:14px;line-height:1.25;font-style:normal}.pull-right{width:100%}.mdc-dialog__actions{padding:0 20px}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: PopupDataModel, decorators: [{\r\n type: Inject,\r\n args: [MAT_DIALOG_DATA]\r\n }] }]; } });\r\nclass PopupDataModel {\r\n constructor() {\r\n this.body = [];\r\n }\r\n}\n\nclass DialogService {\r\n constructor(matDialog) {\r\n this.matDialog = matDialog;\r\n }\r\n // tslint:disable-next-line:max-line-length\r\n openDialogInstance(dataModel, width, height, shouldCloseOnInterrupt) {\r\n if (!shouldCloseOnInterrupt) {\r\n shouldCloseOnInterrupt = false;\r\n }\r\n const dialogInstance = this.matDialog.open(CorePopupComponent, {\r\n width: width,\r\n height: height,\r\n data: dataModel,\r\n disableClose: !shouldCloseOnInterrupt\r\n });\r\n return {\r\n dialogInstance: dialogInstance,\r\n dataModel: dataModel\r\n };\r\n }\r\n}\r\nDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });\r\nDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: DialogService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: DialogService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });\n\nvar EnvironmentEnum;\r\n(function (EnvironmentEnum) {\r\n EnvironmentEnum[\"environment\"] = \"https://osc-test.vistra.com/\";\r\n //environment = 'https://osc-dev.vistra.com/env01/',\r\n //environment = 'https://osc-test.vistra.com/',\r\n})(EnvironmentEnum || (EnvironmentEnum = {}));\r\nvar LocalhostEnum;\r\n(function (LocalhostEnum) {\r\n LocalhostEnum[\"localhost\"] = \"http://localhost:4200/#/\";\r\n})(LocalhostEnum || (LocalhostEnum = {}));\r\nvar EnvironmentWebEnum;\r\n(function (EnvironmentWebEnum) {\r\n EnvironmentWebEnum[\"environment\"] = \"https://osc-test.vistra.com/web/\";\r\n //environment = 'https://osc-dev.vistra.com/env01/web/',\r\n //environment = 'https://osc-test.vistra.com/web/',\r\n})(EnvironmentWebEnum || (EnvironmentWebEnum = {}));\r\nvar TokenEnum;\r\n(function (TokenEnum) {\r\n TokenEnum[\"token\"] = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImY0T2tyWXdYeWhSRUhfWG5yc3FWbko1VUhMdyIsImtpZCI6ImY0T2tyWXdYeWhSRUhfWG5yc3FWbko1VUhMdyJ9.eyJpc3MiOiJodHRwczovL29zYy10ZXN0LnZpc3RyYS5jb20vc3RzL2lkZW50aXR5IiwiYXVkIjoiaHR0cHM6Ly9vc2MtdGVzdC52aXN0cmEuY29tL3N0cy9pZGVudGl0eS9yZXNvdXJjZXMiLCJleHAiOjE3NzI3MDg5MzgsIm5iZiI6MTc0MTE3MjkzOCwiY2xpZW50X2lkIjoiT3NjIiwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsInJhZGl1c3NlcnZpY2VzIl0sInN1YiI6IjQ5NjQ0IiwiYXV0aF90aW1lIjoxNzQxMTcyOTM3LCJpZHAiOiJpZHNydiIsIm5hbWUiOiJzaWRkaGVzaC5sYWRAdmlzdHJhLmNvbSIsImdpdmVuX25hbWUiOiJTaWRkaGVzaCIsImZhbWlseV9uYW1lIjoiTGFkIiwiaHR0cDovL3d3dy5oc3AuY29tL2NsYWltcy9QZXJzb25JZCI6IjU3OTYyIiwiaHR0cDovL3d3dy5oc3AuY29tL2NsYWltcy9Db21wYW55VHlwZSI6IjEiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL0NvbXBhbnlOYW1lIjoiSGlnaCBTdHJlZXQgUGFydG5lcnMsIEluYy4iLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL0VtcGxveWVyQ29tcGFueSI6IjU5NSIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvQ3VsdHVyZSI6IjEwMzMiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9lbWFpbGFkZHJlc3MiOiJzaWRkaGVzaC5sYWRAdmlzdHJhLmNvbSIsImFtciI6WyJwYXNzd29yZCJdfQ.JkNRswkjTotKp2VgB3T9AformXCDW-nQ32X32uiV2cZyuXfVO8on8w7WT-zwXsq4wMEKiui5JFwvCUUacB5uOsBylkp8H6fx0QwmwsPDO-GE8ai65OYgE2xK8CMDEKxZ0oPQk0l-8vnE1EZhNNXpAwET5xbVD2HPfesS5WhLZDhECdnOACjLJvTwHB8h2SscQUB389neIOTs_zHcUcdNEXLpDP02w9aBsZJttNHw3f0F10K34nc4H8eZzntnqvtW-zP3uwmcwKeIddigOr-CDUvoOZC5tiQ-znbhjeTDre6l6_aMNu911C87s-i60o0LSjUWRXEEqcqkUbHgVWqOJw\";\r\n // token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkNiWUhQWDB3cE5BR1lIM29ZSnpLM0tqTXU3SSIsImtpZCI6IkNiWUhQWDB3cE5BR1lIM29ZSnpLM0tqTXU3SSJ9.eyJpc3MiOiJodHRwczovL29zYy1zdGcudmlzdHJhLmNvbS9zdHMvaWRlbnRpdHkiLCJhdWQiOiJodHRwczovL29zYy1zdGcudmlzdHJhLmNvbS9zdHMvaWRlbnRpdHkvcmVzb3VyY2VzIiwiZXhwIjoxNzcyNjE4Nzg2LCJuYmYiOjE3NDEwODI3ODYsImNsaWVudF9pZCI6IlJlcG9ydHMiLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwicmFkaXVzc2VydmljZXMiXSwic3ViIjoiNDk2NDQiLCJhdXRoX3RpbWUiOjE3NDEwODI3NTYsImlkcCI6Imlkc3J2IiwibmFtZSI6InNpZGRoZXNoLmxhZEB2aXN0cmEuY29tIiwiZ2l2ZW5fbmFtZSI6IlNpZGRoZXNoIiwiZmFtaWx5X25hbWUiOiJMYWQiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL1BlcnNvbklkIjoiNTc5NjIiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL0NvbXBhbnlUeXBlIjoiMSIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvQ29tcGFueU5hbWUiOiJIaWdoIFN0cmVldCBQYXJ0bmVycywgSW5jLiIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvRW1wbG95ZXJDb21wYW55IjoiNTk1IiwiaHR0cDovL3d3dy5oc3AuY29tL2NsYWltcy9DdWx0dXJlIjoiMTAzMyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6InNpZGRoZXNoLmxhZEB2aXN0cmEuY29tIiwiYW1yIjpbInBhc3N3b3JkIl19.apGFLini2XsWGS4CflIHmLNDkTxUtgSjSwtwJZC5nnGUejmbpLFhE3yTNebl4uTRO7ekkNgLIXss4pJrqJUZAX5W0rwYE112Dc6MB-2WYX4qLyqOV0NjGf3EVL1nbzzl1aNJCsGUtmgMgJ2dlT5XMXPvU4XJwXQMdH5I3l11sY9-edWdqe0gN84tIoyt-WdMRgwmUoG5u8VaNhTUtCOocD6rPjeM5G9NUrKqtEZ9DApSZMOFISlaYLHDGfoV5kA6_TOLUjg5-HuIHMbGaPJP6QOltNtSMPjvX5KDZ5E-IzdNl57wpEqkBh6BNtNNf2P2xpgEROb_IKGfWgkbNrl0Sw'\r\n})(TokenEnum || (TokenEnum = {}));\n\nclass SessionLifetimeService {\r\n constructor(dialogService) {\r\n this.dialogService = dialogService;\r\n this.warningTimer = null;\r\n this.countdownInterval = null;\r\n this.model = {\r\n isInit: false,\r\n showWarning: false,\r\n loggingOut: false,\r\n timeRemainingUntilTimeout: null,\r\n formattedTimeRemainingUntilTimeout: null\r\n };\r\n this.url = window.location.href.indexOf('localhost') > -1 ? EnvironmentWebEnum.environment : window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1));\r\n }\r\n deferTimeout(_secureHttpService) {\r\n if (!this.model.isInit) {\r\n this.model.timeRemainingUntilTimeout = null;\r\n this.model.formattedTimeRemainingUntilTimeout = null;\r\n this.model.showWarning = false;\r\n this.closeTimeoutWarningPopup();\r\n this.model.isInit = true;\r\n }\r\n _secureHttpService.get(this.url + '/api/Security/KeepAlive', true, null, null, null).then((response) => {\r\n if (response.sessionIsInvalid) {\r\n _secureHttpService.logout();\r\n return;\r\n }\r\n this.timeOfTimeout = new Date();\r\n this.timeOfTimeout.setTime(this.timeOfTimeout.getTime() + response.expireMilliseconds);\r\n this.model.showWarning = false;\r\n this.closeTimeoutWarningPopup();\r\n if (this.warningTimer) {\r\n clearTimeout(this.warningTimer);\r\n this.warningTimer = null;\r\n }\r\n this.warningTimer = setTimeout(() => {\r\n this.showTimeoutWarning(_secureHttpService);\r\n }, response.warningMilliseconds);\r\n }, (error) => {\r\n console.log('sessionLifetimeService.deferTimeout: Error calling api/Security/KeepAlive');\r\n console.log(error);\r\n });\r\n }\r\n executeTimeout(_secureHttpService) {\r\n if (this.countdownInterval) {\r\n clearInterval(this.countdownInterval);\r\n this.countdownInterval = null;\r\n }\r\n this.model.showWarning = false;\r\n this.closeTimeoutWarningPopup();\r\n if (this.model.loggingOut) {\r\n return;\r\n }\r\n _secureHttpService.logout();\r\n this.model.loggingOut = true;\r\n }\r\n setRemainingTimeUntilTimeout(_secureHttpService) {\r\n const now = new Date();\r\n this.model.timeRemainingUntilTimeout = this.timeOfTimeout.getTime() - now.getTime();\r\n if (this.model.timeRemainingUntilTimeout < 0) {\r\n this.model.timeRemainingUntilTimeout = 0;\r\n }\r\n this.model.formattedTimeRemainingUntilTimeout = this.formatTimeSpan(this.model.timeRemainingUntilTimeout);\r\n if (this.timeoutPopup) {\r\n this.timeoutPopup.dataModel.body[0].text = `Your session will time out in ${this.model.formattedTimeRemainingUntilTimeout}.`;\r\n }\r\n if (this.model.timeRemainingUntilTimeout === 0) {\r\n this.executeTimeout(_secureHttpService);\r\n }\r\n }\r\n showTimeoutWarning(_secureHttpService) {\r\n this.setRemainingTimeUntilTimeout(_secureHttpService);\r\n this.countdownInterval = setInterval(() => {\r\n this.setRemainingTimeUntilTimeout(_secureHttpService);\r\n }, 500);\r\n this.model.showWarning = true;\r\n this.openTimeoutWarningPopup(_secureHttpService);\r\n }\r\n openTimeoutWarningPopup(_secureHttpService) {\r\n if (this.timeoutPopup) {\r\n return;\r\n }\r\n const dataModel = {\r\n title: {\r\n text: 'Your session is about to expire',\r\n cssClass: 'timeout-header'\r\n },\r\n body: [\r\n {\r\n text: `Your session will time out in ${this.model.formattedTimeRemainingUntilTimeout}.`,\r\n cssClass: 'timeout-content'\r\n }\r\n ],\r\n actionButtons: [\r\n {\r\n name: 'Log Out',\r\n callback: () => {\r\n this.closeTimeoutWarningPopup();\r\n _secureHttpService.logout();\r\n },\r\n cssClass: 'white-button'\r\n },\r\n {\r\n name: 'Stay Connected',\r\n callback: () => {\r\n this.deferTimeout(_secureHttpService);\r\n },\r\n cssClass: 'grey-button'\r\n }\r\n ],\r\n info: this.model\r\n };\r\n this.timeoutPopup = this.dialogService.openDialogInstance(dataModel, '500px');\r\n }\r\n closeTimeoutWarningPopup() {\r\n if (this.timeoutPopup) {\r\n this.timeoutPopup.dialogInstance.close();\r\n }\r\n this.timeoutPopup = null;\r\n }\r\n formatTimeSpan(totalMilliseconds) {\r\n let difference = totalMilliseconds;\r\n difference = Math.floor(difference / 1000);\r\n const seconds = difference % 60;\r\n difference = Math.floor(difference / 60);\r\n const minutes = difference % 60;\r\n difference = Math.floor(difference / 60);\r\n const hours = difference % 24;\r\n difference = Math.floor(difference / 24);\r\n const days = difference;\r\n let displayValue = seconds + 's';\r\n if (minutes > 0) {\r\n displayValue = minutes + 'm ' + (seconds < 10 ? '0' : '') + displayValue;\r\n }\r\n if (hours > 0) {\r\n displayValue = hours + 'h ' + (minutes < 10 ? '0' : '') + displayValue;\r\n }\r\n if (hours > 0) {\r\n displayValue = days + 'd ' + (hours < 10 ? '0' : '') + displayValue;\r\n }\r\n return displayValue;\r\n }\r\n}\r\nSessionLifetimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SessionLifetimeService, deps: [{ token: DialogService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nSessionLifetimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SessionLifetimeService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SessionLifetimeService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: DialogService }]; } });\n\nvar NotifierMessageTypeEnum;\r\n(function (NotifierMessageTypeEnum) {\r\n NotifierMessageTypeEnum[NotifierMessageTypeEnum[\"all\"] = 1] = \"all\";\r\n NotifierMessageTypeEnum[NotifierMessageTypeEnum[\"error\"] = 2] = \"error\";\r\n NotifierMessageTypeEnum[NotifierMessageTypeEnum[\"success\"] = 3] = \"success\";\r\n NotifierMessageTypeEnum[NotifierMessageTypeEnum[\"warning\"] = 4] = \"warning\";\r\n})(NotifierMessageTypeEnum || (NotifierMessageTypeEnum = {}));\n\nclass NotifierService {\r\n constructor(toastr) {\r\n this.toastr = toastr;\r\n this.notificationMessages = [];\r\n this.onGoingRequestList = [];\r\n this.requestLoadingText = null;\r\n this.unnamedCpiTriggerText = 'Internal Operation Data from Server';\r\n }\r\n showSuccessNotifier(message, title, action, duration) {\r\n this.toastr.success(message, title, { 'closeButton': action,\r\n 'timeOut': duration,\r\n 'positionClass': 'toast-bottom-left'\r\n });\r\n this.notificationMessages.push({\r\n message: message,\r\n title: title,\r\n date: new Date(),\r\n type: NotifierMessageTypeEnum.success\r\n });\r\n }\r\n showErrorNotifier(message, title, action, duration) {\r\n this.toastr.error(message, title, { 'closeButton': action,\r\n 'timeOut': duration,\r\n 'positionClass': 'toast-bottom-left'\r\n });\r\n this.notificationMessages.push({\r\n message: message,\r\n title: title,\r\n date: new Date(),\r\n type: NotifierMessageTypeEnum.error\r\n });\r\n }\r\n showWarningNotifier(message, title, action, duration) {\r\n this.toastr.warning(message, title, { 'closeButton': action,\r\n 'timeOut': duration,\r\n 'positionClass': 'toast-bottom-left'\r\n });\r\n this.notificationMessages.push({\r\n message: message,\r\n title: title,\r\n date: new Date(),\r\n type: NotifierMessageTypeEnum.warning\r\n });\r\n }\r\n showValidationMessages(config, validationResultList) {\r\n validationResultList.forEach((validationResult, index) => {\r\n if (!validationResult.validationMessage || validationResult.isValid) {\r\n return true;\r\n }\r\n setTimeout(() => {\r\n let title = '';\r\n if (config.cpiTrigger) {\r\n title = 'Failed making call - ' + config.cpiTrigger;\r\n }\r\n else {\r\n title = 'Failed making call - ' + config.url;\r\n }\r\n this.showErrorNotifier('', validationResult.validationMessage, false, 3000);\r\n }, index * 500);\r\n });\r\n }\r\n addRequestInfo(cpiTrigger) {\r\n if (!cpiTrigger) {\r\n cpiTrigger = this.unnamedCpiTriggerText;\r\n }\r\n this.onGoingRequestList.push(cpiTrigger);\r\n this.updateRequestLoadingText();\r\n }\r\n removeRequestInfo(cpiTrigger) {\r\n if (!cpiTrigger) {\r\n cpiTrigger = this.unnamedCpiTriggerText;\r\n }\r\n this.onGoingRequestList.splice(this.onGoingRequestList.indexOf(cpiTrigger), 1);\r\n this.updateRequestLoadingText();\r\n }\r\n updateRequestLoadingText() {\r\n if (this.onGoingRequestList.length === 0) {\r\n this.requestLoadingText = null;\r\n }\r\n else if (this.onGoingRequestList.length === 1) {\r\n this.requestLoadingText = 'Fetching data from ' + this.onGoingRequestList[0];\r\n }\r\n else {\r\n this.requestLoadingText = 'Fetching data from ' + this.onGoingRequestList.length + ' background processes';\r\n }\r\n }\r\n}\r\nNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: NotifierService, deps: [{ token: i1$1.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: NotifierService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: NotifierService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: i1$1.ToastrService }]; } });\n\nclass Request {\r\n constructor(_notifier, _sessionLifetimeService) {\r\n this._notifier = _notifier;\r\n this._sessionLifetimeService = _sessionLifetimeService;\r\n }\r\n status(response) {\r\n if (response.status >= 200 && response.status < 300) {\r\n return response;\r\n }\r\n throw new Error(response.statusText);\r\n }\r\n json(response) {\r\n try {\r\n const json_res = response.json();\r\n return json_res;\r\n }\r\n catch (e) {\r\n console.log('JSON convertion error - ', e);\r\n return {};\r\n }\r\n }\r\n get(url, config, headers) {\r\n this._notifier.addRequestInfo();\r\n if (!config) {\r\n config = { headers: {} };\r\n }\r\n config.method = 'get';\r\n if (window.location.href.indexOf('localhost') > -1) {\r\n config.headers['Origin'] = LocalhostEnum.localhost;\r\n }\r\n return new Promise((resolve, reject) => {\r\n fetch(url, config)\r\n .then(this.status)\r\n .then(this.json)\r\n .then((json) => {\r\n resolve(json);\r\n this._notifier.removeRequestInfo();\r\n }).catch((error) => {\r\n reject(error);\r\n this._notifier.removeRequestInfo();\r\n });\r\n });\r\n }\r\n post(url, config, requestParams) {\r\n if (!config) {\r\n config = { headers: {} };\r\n }\r\n const cpiTrigger = config.data ? config.data.cpiTrigger : undefined;\r\n this._notifier.addRequestInfo(cpiTrigger);\r\n config.body = config.data ? JSON.stringify(config.data) : '{}';\r\n config.method = 'post';\r\n config.headers['Content-Type'] = 'application/json';\r\n if (window.location.href.indexOf('localhost') > -1) {\r\n config.headers['Origin'] = LocalhostEnum.localhost;\r\n }\r\n config.url = url;\r\n return new Promise((resolve, reject) => {\r\n fetch(url, config)\r\n .then(this.status)\r\n .then(this.json)\r\n .then((response) => {\r\n if (response && response.validationResults) {\r\n if (response.validationResults.validationResultList &&\r\n response.validationResults.validationResultList.length === 0) {\r\n resolve(response);\r\n }\r\n else {\r\n let isSuccess = true;\r\n response.validationResults.validationResultList.forEach((validation) => {\r\n if (!validation.isValid) {\r\n isSuccess = false;\r\n }\r\n if (config.url.match('PayrollPeriodManager/GetPayrollPeriod') && validation.validationSeverity == 3) {\r\n isSuccess = true;\r\n }\r\n });\r\n if (config.url.match('SecurityQuestionManager/PersistAnswerList') ||\r\n config.url.match('SecurityQuestionManager/GetQuestionList') ||\r\n config.url.match('SecurityQuestionManager/DeleteQuestion') ||\r\n config.url.match('SecurityQuestionManager/PersistQuestion')) {\r\n isSuccess = true;\r\n }\r\n if (config.url.match('SecurityUserAdminManager/PersistUserDetail') ||\r\n config.url.match('SecurityUserAdminManager/SendWelcomeEmail') ||\r\n config.url.match('SecurityUserAdminManager/DeleteUser') ||\r\n config.url.match('SecurityUserAdminManager/GetClientLogoDetailList') ||\r\n config.url.match('SecurityUserAdminManager/DeleteClientLogoDetail') ||\r\n config.url.match('SecurityUserAdminManager/PersistClientLogoDetail')) {\r\n isSuccess = true;\r\n }\r\n if (config.url.match('SecurityRoleAdminManager/GetRole') ||\r\n config.url.match('SecurityRoleAdminManager/PersistRole') ||\r\n config.url.match('SecurityRoleAdminManager/GetRoleList') ||\r\n config.url.match('SecurityRoleAdminManager/DeleteRole') ||\r\n config.url.match('SecurityRoleAdminManager/ExportUserRoleList')) {\r\n isSuccess = true;\r\n }\r\n if (config.url.match('HrEmployeeManager/GetSelfServiceEmployee') ||\r\n config.url.match('HrEmployeeManager/PersistSelfServiceEmployee') ||\r\n config.url.match('HrEmployeePortalManager/GetConfigurationState') ||\r\n config.url.match('HrEmployeePortalManager/PersistLanguageCode')) {\r\n isSuccess = true;\r\n }\r\n if (isSuccess) {\r\n resolve(response);\r\n }\r\n else {\r\n this._notifier.showValidationMessages(config, response.validationResults.validationResultList);\r\n reject(response);\r\n }\r\n }\r\n }\r\n else {\r\n resolve(response);\r\n }\r\n this._notifier.removeRequestInfo(cpiTrigger);\r\n }).catch((error) => {\r\n if (config.url.match('SecurityRoleAdminManager/deleteRole')) {\r\n resolve(error);\r\n }\r\n reject(error);\r\n this._notifier.removeRequestInfo(cpiTrigger);\r\n });\r\n });\r\n }\r\n}\r\nRequest.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: Request, deps: [{ token: NotifierService }, { token: SessionLifetimeService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nRequest.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: Request, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: Request, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: NotifierService }, { type: SessionLifetimeService }]; } });\n\nclass ServicePathInitializer {\r\n constructor(_request) {\r\n this._request = _request;\r\n this.url = window.location.href.indexOf('localhost') > -1 ? EnvironmentWebEnum.environment : window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1));\r\n this.servicePathContainer = {\r\n servicePath: null\r\n };\r\n }\r\n initialize() {\r\n return new Promise((resolve, reject) => {\r\n if (this.servicePathContainer.servicePath != null) {\r\n resolve(this.servicePathContainer.servicePath);\r\n }\r\n else {\r\n if (window.location.href.indexOf('localhost') > -1) {\r\n // tslint:disable-next-line:max-line-length\r\n resolve(EnvironmentEnum.environment + '/services');\r\n return;\r\n }\r\n this._request.post(this.url + '/api/ServicePath/GetServicePath').then((response) => {\r\n this.servicePathContainer.servicePath = response.servicePath;\r\n resolve(this.servicePathContainer.servicePath);\r\n }, (error) => {\r\n console.log('servicePathInitializer.initialize: Error calling api/ServicePath/GetServicePath.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n}\r\nServicePathInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServicePathInitializer, deps: [{ token: Request }], target: i0.ɵɵFactoryTarget.Injectable });\r\nServicePathInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServicePathInitializer, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServicePathInitializer, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: Request }]; } });\n\nclass TokenService {\r\n constructor(_request) {\r\n this._request = _request;\r\n this.currentServicePathEnvironment = '';\r\n this.url = window.location.href.indexOf('localhost') > -1 ? EnvironmentWebEnum.environment : window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1));\r\n this.tokenManagerContainer = {\r\n tokenManager: null\r\n };\r\n this.currentServicePathEnvironment = window.location.href.slice(window.location.href.indexOf('path=env') + 5);\r\n }\r\n getTokenManager(skipSessionCheck) {\r\n let returnUrlKey = '';\r\n return new Promise((resolve, reject) => {\r\n if (this.tokenManagerContainer.tokenManager == null) {\r\n if (window.location.href.indexOf('localhost') > -1) {\r\n //if (this.currentServicePathEnvironment === 'env04') {\r\n resolve({\r\n // tslint:disable-next-line:max-line-length\r\n access_token: TokenEnum.token,\r\n profile: ''\r\n });\r\n //} else if (this.currentServicePathEnvironment === 'env06') {\r\n // resolve({\r\n // tslint:disable-next-line:max-line-length\r\n // access_token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik12TmpfWGJVMkhwYTFvVnlBSGJpdEJaYi1EcyIsImtpZCI6Ik12TmpfWGJVMkhwYTFvVnlBSGJpdEJaYi1EcyJ9.eyJpc3MiOiJodHRwczovL29zYy1kZXYucmFkaXVzd29ybGR3aWRlLmNvbS9lbnYwNi9zdHMvaWRlbnRpdHkiLCJhdWQiOiJodHRwczovL29zYy1kZXYucmFkaXVzd29ybGR3aWRlLmNvbS9lbnYwNi9zdHMvaWRlbnRpdHkvcmVzb3VyY2VzIiwiZXhwIjoxNTc1NzEzNzE3LCJuYmYiOjE1NDQxNzc3MTcsImNsaWVudF9pZCI6IlBvcnRhbCIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJyYWRpdXNzZXJ2aWNlcyJdLCJzdWIiOiIyODE1NyIsImF1dGhfdGltZSI6MTU0NDE3NzcxNywiaWRwIjoiaWRzcnYiLCJuYW1lIjoiTkFJUkNPXFx0bmt1bWFyIiwiZ2l2ZW5fbmFtZSI6IlQgTmFnYSIsImZhbWlseV9uYW1lIjoiS3VtYXIiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL1BlcnNvbklkIjoiMzQwNTgiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL0NvbXBhbnlUeXBlIjoiMSIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvQ29tcGFueU5hbWUiOiJIaWdoIFN0cmVldCBQYXJ0bmVycywgSW5jLiIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvRW1wbG95ZXJDb21wYW55IjoiNTk1IiwiaHR0cDovL3d3dy5oc3AuY29tL2NsYWltcy9DdWx0dXJlIjoiMCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6IlROYWdhLlZpZ25lc2hLdW1hckByYWRpdXN3dy5jb20iLCJhbXIiOlsicGFzc3dvcmQiXX0.hBA1febI7JYd5qbxATZR-LsS94bMvHqGKLl4HLyYzjn515zjXFgKnwLl1c5oZd011zyGTZMW8CFKj30tu5N5azBarbhofth-BdOgRW_eU5PMH4eaEE3kbmK7IRuwS8XbcvfdmxoraQWIi2X8JHs43qgeXV6Wa29BrRMO7WvJcGAjTk4KIe4WrEdFRWsbn7_Of3qRXNfaiJtdJ-3G8IV044HsoJUfvk8DQncw4mVhFPpyTkQ8NSHHb84qeKEadUgExwWnM221noPa5b2RoYHo7nVVW5aO7r_xpDFmmlm004SAQ9HoBF0UclcHPCVT2c7Raptma5UesLsvpxDUjaTWNw',\r\n // profile: ''\r\n // });\r\n //} else {\r\n // resolve({\r\n // tslint:disable-next-line:max-line-length\r\n // access_token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik12TmpfWGJVMkhwYTFvVnlBSGJpdEJaYi1EcyIsImtpZCI6Ik12TmpfWGJVMkhwYTFvVnlBSGJpdEJaYi1EcyJ9.eyJpc3MiOiJodHRwczovL29zYy1kZXYucmFkaXVzd29ybGR3aWRlLmNvbS9lbnYwNi9zdHMvaWRlbnRpdHkiLCJhdWQiOiJodHRwczovL29zYy1kZXYucmFkaXVzd29ybGR3aWRlLmNvbS9lbnYwNi9zdHMvaWRlbnRpdHkvcmVzb3VyY2VzIiwiZXhwIjoxNTc1NzEzNzE3LCJuYmYiOjE1NDQxNzc3MTcsImNsaWVudF9pZCI6IlBvcnRhbCIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJyYWRpdXNzZXJ2aWNlcyJdLCJzdWIiOiIyODE1NyIsImF1dGhfdGltZSI6MTU0NDE3NzcxNywiaWRwIjoiaWRzcnYiLCJuYW1lIjoiTkFJUkNPXFx0bmt1bWFyIiwiZ2l2ZW5fbmFtZSI6IlQgTmFnYSIsImZhbWlseV9uYW1lIjoiS3VtYXIiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL1BlcnNvbklkIjoiMzQwNTgiLCJodHRwOi8vd3d3LmhzcC5jb20vY2xhaW1zL0NvbXBhbnlUeXBlIjoiMSIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvQ29tcGFueU5hbWUiOiJIaWdoIFN0cmVldCBQYXJ0bmVycywgSW5jLiIsImh0dHA6Ly93d3cuaHNwLmNvbS9jbGFpbXMvRW1wbG95ZXJDb21wYW55IjoiNTk1IiwiaHR0cDovL3d3dy5oc3AuY29tL2NsYWltcy9DdWx0dXJlIjoiMCIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6IlROYWdhLlZpZ25lc2hLdW1hckByYWRpdXN3dy5jb20iLCJhbXIiOlsicGFzc3dvcmQiXX0.hBA1febI7JYd5qbxATZR-LsS94bMvHqGKLl4HLyYzjn515zjXFgKnwLl1c5oZd011zyGTZMW8CFKj30tu5N5azBarbhofth-BdOgRW_eU5PMH4eaEE3kbmK7IRuwS8XbcvfdmxoraQWIi2X8JHs43qgeXV6Wa29BrRMO7WvJcGAjTk4KIe4WrEdFRWsbn7_Of3qRXNfaiJtdJ-3G8IV044HsoJUfvk8DQncw4mVhFPpyTkQ8NSHHb84qeKEadUgExwWnM221noPa5b2RoYHo7nVVW5aO7r_xpDFmmlm004SAQ9HoBF0UclcHPCVT2c7Raptma5UesLsvpxDUjaTWNw',\r\n // profile: ''\r\n // });\r\n //}\r\n return;\r\n }\r\n this._request.post(this.url + '/api/Security/GetSecurityTokenConfiguration').then((response) => {\r\n const newTokenManager = this.createTokenManager(response);\r\n this.tokenManagerContainer.tokenManager = newTokenManager;\r\n if (newTokenManager.expired ||\r\n newTokenManager.profile === undefined ||\r\n newTokenManager.access_token === undefined) {\r\n returnUrlKey = 'Hsp.ReturnUrl_' + response.clientId + '_' + response.environmentQualifier;\r\n window.sessionStorage.setItem(returnUrlKey, window.location.href);\r\n newTokenManager.redirectForToken();\r\n return;\r\n }\r\n resolve(newTokenManager);\r\n }, (error) => {\r\n console.log('tokenService.getTokenManager: Error calling api/Security/GetSecurityTokenConfiguration');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }\r\n else {\r\n const tokenManager = this.tokenManagerContainer.tokenManager;\r\n if (tokenManager.expired ||\r\n tokenManager.profile === undefined ||\r\n tokenManager.access_token === undefined) {\r\n returnUrlKey = 'Hsp.ReturnUrl_' + tokenManager._settings.client_id + '_' + tokenManager._settings.environmentQualifier;\r\n window.sessionStorage.setItem(returnUrlKey, window.location.href);\r\n tokenManager.redirectForToken();\r\n return resolve(null);\r\n }\r\n if (skipSessionCheck) {\r\n resolve(tokenManager);\r\n }\r\n else {\r\n this._request.get(this.url + '/api/Security/HasSession').then((response) => {\r\n if (!response.hasSession) {\r\n this.logout(tokenManager);\r\n }\r\n else {\r\n resolve(tokenManager);\r\n }\r\n }, (error) => {\r\n console.log('tokenService.getTokenManager: Error calling api/Security/HasSession');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n createTokenManager(securityTokenConfiguration) {\r\n const config = {\r\n client_id: securityTokenConfiguration.clientId,\r\n redirect_uri: securityTokenConfiguration.redirectUri,\r\n response_type: securityTokenConfiguration.responseType,\r\n scope: securityTokenConfiguration.scope,\r\n authority: securityTokenConfiguration.authority,\r\n acr_values: securityTokenConfiguration.acrValues,\r\n post_logout_redirect_uri: securityTokenConfiguration.baseUri + '/',\r\n // tslint:disable-next-line:max-line-length\r\n request_state_key: 'OidcClient.request_state_' + securityTokenConfiguration.clientId + '_' + securityTokenConfiguration.environmentQualifier,\r\n persistKey: 'TokenManager.token_' + securityTokenConfiguration.clientId + '_' + securityTokenConfiguration.environmentQualifier,\r\n environmentQualifier: securityTokenConfiguration.environmentQualifier,\r\n store: window.sessionStorage,\r\n request_state_store: window.sessionStorage\r\n };\r\n return new OidcTokenManager(config);\r\n }\r\n logout(tokenManagerInstance) {\r\n if (tokenManagerInstance != null) {\r\n const url = this.getPostLogoutUrl(tokenManagerInstance);\r\n this.clearTokens(tokenManagerInstance);\r\n tokenManagerInstance._settings.post_logout_redirect_uri = url;\r\n setTimeout(tokenManagerInstance.redirectForLogout(), 1);\r\n location.reload();\r\n }\r\n else {\r\n this.getTokenManager(true).then((tokenManager) => {\r\n const url = this.getPostLogoutUrl(tokenManager);\r\n this.clearTokens(tokenManager);\r\n tokenManager._settings.post_logout_redirect_uri = url;\r\n setTimeout(tokenManagerInstance.redirectForLogout(), 1);\r\n location.reload();\r\n });\r\n }\r\n }\r\n clearTokens(tokenManagerInstance) {\r\n const itemsToRemove = [];\r\n // ReSharper disable once MissingHasOwnPropertyInForeach\r\n //\r\n for (const key in window.sessionStorage) {\r\n if (key === tokenManagerInstance.persistKey) {\r\n continue;\r\n }\r\n if (key === tokenManagerInstance.request_state_key) {\r\n continue;\r\n }\r\n if (key.indexOf('OidcClient.request_state') >= 0 || key.indexOf('TokenManager.token') >= 0) {\r\n itemsToRemove.push(key);\r\n }\r\n }\r\n for (let i = 0; i < itemsToRemove.length; i++) {\r\n window.sessionStorage.removeItem(itemsToRemove[i]);\r\n }\r\n }\r\n getPostLogoutUrl(tokenManagerInstance) {\r\n let url = window.location.href;\r\n if (url.indexOf('#') >= 0) {\r\n if (url.endsWith('#')) {\r\n url += '/';\r\n }\r\n if (tokenManagerInstance._settings.acr_values === 'forceadfs') {\r\n url = url.replace('#', 'forceadfs/#');\r\n }\r\n else if (tokenManagerInstance._settings.acr_values === 'forcests') {\r\n url = url.replace('#', 'forcests/#');\r\n }\r\n url = url.replace('.html#', '/href');\r\n url = url.replace('#', 'href');\r\n }\r\n else {\r\n let prefix = '/';\r\n if (url.endsWith('/')) {\r\n prefix = '';\r\n }\r\n if (tokenManagerInstance._settings.acr_values === 'forceadfs') {\r\n url += prefix + 'forceadfs';\r\n }\r\n else if (tokenManagerInstance._settings.acr_values === 'forcests') {\r\n url += prefix + 'forcests';\r\n }\r\n }\r\n url = url.split('/web/')[0] + '/sts/href/logout';\r\n return url;\r\n }\r\n}\r\nTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: TokenService, deps: [{ token: Request }], target: i0.ɵɵFactoryTarget.Injectable });\r\nTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: TokenService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: TokenService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: Request }]; } });\n\nclass SecureHttpService {\r\n constructor(_servicePathInitializer, _tokenService, _request, _sessionLifetimeService) {\r\n this._servicePathInitializer = _servicePathInitializer;\r\n this._tokenService = _tokenService;\r\n this._request = _request;\r\n this._sessionLifetimeService = _sessionLifetimeService;\r\n this.url = window.location.href.indexOf('localhost') > -1 ? EnvironmentWebEnum.environment : window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1));\r\n }\r\n async getDisplayName() {\r\n return new Promise((resolve) => {\r\n this._tokenService\r\n .getTokenManager(false)\r\n .then((tokenManager) => {\r\n const profile = tokenManager.profile;\r\n if (profile === undefined) {\r\n resolve('');\r\n }\r\n if (profile == null) {\r\n resolve('');\r\n }\r\n else {\r\n resolve(profile.given_name + ' ' + profile.family_name);\r\n }\r\n }, () => {\r\n resolve('Not Available');\r\n });\r\n });\r\n }\r\n generateGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n // tslint:disable-next-line:no-bitwise\r\n const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n getConfig(method, url, headers, config, servicePath, accessToken) {\r\n config = config || {};\r\n headers = headers || config.headers || {};\r\n config.headers = headers;\r\n config.method = method;\r\n config.url = url.replace('{SERVICE_PATH}', servicePath);\r\n config.headers.Authorization = 'Bearer ' + accessToken;\r\n config.headers['X-CPI-RequestId'] = this.generateGuid();\r\n return config;\r\n }\r\n async executeHttp(config, retryCount, skipDeferTimeout) {\r\n if (!skipDeferTimeout) {\r\n this._sessionLifetimeService.deferTimeout(this);\r\n }\r\n return new Promise((resolve, reject) => {\r\n this._request[config.method.toLowerCase()](config.url, config).then((response) => {\r\n resolve(response);\r\n }, (error) => {\r\n let shouldRetry = false;\r\n if (error.status === 404 || error.status === 503) {\r\n if (retryCount <= 10) {\r\n shouldRetry = true;\r\n }\r\n retryCount++;\r\n }\r\n if (shouldRetry) {\r\n console.log('secureHttpService.executeHttp: Received a 404/503, it is possible there ' +\r\n 'is an upgrade in process, retrying: attempt ' + retryCount + ' of 10...');\r\n setTimeout(() => {\r\n this.executeHttp(config, retryCount).then((response) => {\r\n resolve(response);\r\n }, (err) => {\r\n reject(err);\r\n });\r\n }, 1000);\r\n }\r\n else {\r\n console.log('secureHttpService.executeHttp: Error calling $http.');\r\n console.log(error);\r\n reject(error);\r\n }\r\n });\r\n });\r\n }\r\n async get(url, skipDeferTimeout, params, headers, config) {\r\n return new Promise((resolve, reject) => {\r\n this._servicePathInitializer.initialize().then((servicePath) => {\r\n this._tokenService.getTokenManager(false).then((tokenManager) => {\r\n const accessToken = tokenManager.access_token;\r\n config = this.getConfig('GET', url, headers, config, servicePath, accessToken);\r\n config.params = params;\r\n this.executeHttp(config, 1, skipDeferTimeout).then((response) => {\r\n resolve(response);\r\n }, (error) => {\r\n console.log('secureHttpService.get: Error calling $http.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }, (error) => {\r\n console.log('secureHttpService.get: Error calling tokenService.getTokenManager');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }, (error) => {\r\n console.log('secureHttpService.get: Error calling servicePathInitializer.initialize.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n });\r\n }\r\n async post(url, data, headers, config) {\r\n return new Promise((resolve, reject) => {\r\n this._servicePathInitializer.initialize().then((servicePath) => {\r\n this._tokenService.getTokenManager(false).then((tokenManager) => {\r\n const accessToken = tokenManager.access_token;\r\n config = this.getConfig('POST', url, headers, config, servicePath, accessToken);\r\n let trigger = 'Unspecified';\r\n if (data !== undefined && data != null && typeof (data) === 'object') {\r\n if (data.cpiTrigger) {\r\n trigger = data.cpiTrigger;\r\n }\r\n if (data.cpiUsePrimitiveMember) {\r\n data = data[data.cpiUsePrimitiveMember];\r\n }\r\n }\r\n config.data = data;\r\n config.headers['X-CPI-Trigger'] = trigger;\r\n this.executeHttp(config, 1).then((response) => {\r\n resolve(response);\r\n }, (error) => {\r\n console.log('secureHttpService.post: Error calling $http.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }, (error) => {\r\n console.log('secureHttpService.post: Error calling tokenService.getTokenManager');\r\n console.log(error);\r\n reject(error);\r\n });\r\n }, (error) => {\r\n console.log('secureHttpService.post: Error calling servicePathInitializer.initialize.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n });\r\n }\r\n logout() {\r\n const config = {\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Credentials': true\r\n }\r\n };\r\n this._request.post(this.url + '/api/Security/Logout', config).then(() => {\r\n this._tokenService.logout();\r\n //location.reload();\r\n });\r\n }\r\n}\r\nSecureHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SecureHttpService, deps: [{ token: ServicePathInitializer }, { token: TokenService }, { token: Request }, { token: SessionLifetimeService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nSecureHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SecureHttpService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SecureHttpService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: ServicePathInitializer }, { type: TokenService }, { type: Request }, { type: SessionLifetimeService }]; } });\n\nclass ServiceFactory {\r\n constructor(_servicePathInitializer, _secureHttpService) {\r\n this._servicePathInitializer = _servicePathInitializer;\r\n this._secureHttpService = _secureHttpService;\r\n }\r\n create(serviceKey, operations) {\r\n const service = {};\r\n this.populate(service, serviceKey, operations);\r\n return service;\r\n }\r\n populate(service, serviceKey, operations) {\r\n for (let i = 0; i < operations.length; i++) {\r\n const operation = operations[i];\r\n service[operation] = this.createOperation(operation, serviceKey, this._secureHttpService, this._servicePathInitializer.servicePathContainer.servicePath);\r\n }\r\n }\r\n createOperation(operation, serviceKey, secureHttpServiceInstance, servicePath) {\r\n const action = operation.substring(0, 1).toUpperCase() + operation.substring(1);\r\n const url = (servicePath || '{SERVICE_PATH}') + '/' + serviceKey + '/' + action;\r\n return ((request, config) => {\r\n return new Promise((resolve, reject) => {\r\n secureHttpServiceInstance.post(url, request, null, config).then((response) => {\r\n resolve(response);\r\n }, (error) => {\r\n console.log('serviceFactory.operation: Error calling secureHttpService.post.');\r\n console.log(error);\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n}\r\nServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServiceFactory, deps: [{ token: ServicePathInitializer }, { token: SecureHttpService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServiceFactory, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: ServiceFactory, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: ServicePathInitializer }, { type: SecureHttpService }]; } });\n\nclass MessageCacheService {\r\n constructor() {\r\n this.cache = new Map();\r\n }\r\n get(key) {\r\n console.log('cache', this.cache);\r\n return this.cache.get(key);\r\n }\r\n set(key, keyInfo) {\r\n this.cache.set(key, keyInfo);\r\n }\r\n subscribe(key, id, listenerCallback, senderCallback) {\r\n let keyInfo = this.cache.get(key);\r\n if (!keyInfo) {\r\n keyInfo = {\r\n key: key,\r\n subscribers: []\r\n };\r\n }\r\n keyInfo.subscribers.push({\r\n id: id,\r\n listenerCallback: listenerCallback,\r\n senderCallback: senderCallback\r\n });\r\n this.cache.set(key, keyInfo);\r\n }\r\n // storeData(key: string, data:any){\r\n // const keyInfo = this.cache.get(key);\r\n // keyInfo.data = data;\r\n // keyInfo.lastUpdated = new Date();\r\n // this.cache.set(key, keyInfo);\r\n // console.log('cache message',this.cache);\r\n // }\r\n clearKeySets(keySet) {\r\n keySet.forEach(key => {\r\n this.cache.delete(key);\r\n });\r\n }\r\n clearAll() {\r\n this.cache.clear();\r\n }\r\n}\r\nMessageCacheService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: MessageCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nMessageCacheService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: MessageCacheService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: MessageCacheService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return []; } });\r\nclass MessageCache {\r\n}\n\nclass EventHandlerService {\r\n constructor(messageCacheService) {\r\n this.messageCacheService = messageCacheService;\r\n this.events = new EventEmitter();\r\n this.portalEvent = new EventEmitter();\r\n }\r\n getKeyInfo(key) {\r\n return this.messageCacheService.get(key);\r\n }\r\n clearMessageCache() {\r\n this.messageCacheService.clearAll();\r\n }\r\n ngOnDestroy() {\r\n this.clearMessageCache();\r\n }\r\n broadcastMessage(messageKey, id, data) {\r\n const keyInfo = this.getKeyInfo(messageKey);\r\n if (!keyInfo) {\r\n console.log('You cannot send messages before subscribing. Please check your coding.');\r\n return;\r\n }\r\n keyInfo.subscribers.forEach(subscriber => {\r\n if (subscriber.id !== id && subscriber.listenerCallback) {\r\n subscriber.listenerCallback(data);\r\n }\r\n });\r\n // this.cache.storeData(messageKey, data);\r\n }\r\n collectDataFromSubscribers(subscribers, requestorId, index) {\r\n return new Promise((resolve, reject) => {\r\n let data;\r\n for (const item of subscribers) {\r\n if (item.id !== requestorId && item.senderCallback) {\r\n data = item.senderCallback();\r\n if (data !== undefined) {\r\n break;\r\n }\r\n }\r\n }\r\n resolve(data);\r\n });\r\n }\r\n collectKeyData(messageKey, requestorId, possibleTrials, trialIndex) {\r\n if (!trialIndex) {\r\n trialIndex = 0;\r\n }\r\n if (!possibleTrials) {\r\n possibleTrials = 20;\r\n }\r\n return new Promise((resolve, reject) => {\r\n const keyInfo = this.getKeyInfo(messageKey);\r\n if (keyInfo && keyInfo.subscribers.length > 0) {\r\n this.collectDataFromSubscribers(keyInfo.subscribers, requestorId).then(data => {\r\n if (data !== undefined) {\r\n resolve(data);\r\n }\r\n else if (trialIndex < possibleTrials) {\r\n setTimeout(() => {\r\n this.collectKeyData(messageKey, requestorId, possibleTrials, trialIndex + 1).then((keyData) => {\r\n resolve(keyData);\r\n });\r\n }, 500);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n });\r\n }\r\n else if (!keyInfo && trialIndex < possibleTrials) {\r\n setTimeout(() => {\r\n this.collectKeyData(messageKey, requestorId, possibleTrials, trialIndex + 1).then(data => {\r\n resolve(data);\r\n });\r\n }, 500);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n });\r\n }\r\n generateUId() {\r\n function getNum() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return getNum() + getNum() + '-' + getNum() + '-' + getNum() + '-' + getNum() + '-' + getNum() + getNum() + getNum();\r\n }\r\n subscribe(messageTitle, listenerCallback, senderCallback) {\r\n const myId = this.generateUId();\r\n this.messageCacheService.subscribe(messageTitle, myId, listenerCallback, senderCallback);\r\n const response = {\r\n id: myId,\r\n emitMessage: (data) => {\r\n this.broadcastMessage(messageTitle, myId, data);\r\n },\r\n unsubscribe: () => {\r\n this.unsubscribe(messageTitle, myId);\r\n },\r\n getData: () => {\r\n return new Promise((resolve, reject) => {\r\n this.collectKeyData(messageTitle, myId).then((data) => {\r\n resolve(data);\r\n });\r\n });\r\n }\r\n };\r\n return response;\r\n }\r\n unsubscribe(messageTitle, requestorId) {\r\n const keyInfo = this.messageCacheService.get(messageTitle);\r\n let requestorIndex = null;\r\n let loopIndex = 0;\r\n for (const item of keyInfo.subscribers) {\r\n if (item.id === requestorId) {\r\n requestorIndex = loopIndex;\r\n break;\r\n }\r\n loopIndex++;\r\n }\r\n if (requestorIndex) {\r\n keyInfo.subscribers.splice(requestorIndex, 1);\r\n }\r\n this.messageCacheService.set(messageTitle, keyInfo);\r\n }\r\n}\r\nEventHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: EventHandlerService, deps: [{ token: MessageCacheService }], target: i0.ɵɵFactoryTarget.Injectable });\r\nEventHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: EventHandlerService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: EventHandlerService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: MessageCacheService }]; } });\n\n/**\r\n * Service to frame the widget required property List from { key: , value } values.\r\n */\r\nclass WidgetPropertyListBuilderService {\r\n constructor() { }\r\n /** Method that converts the provided Key_Value objects into Enum provided properties object.\r\n * @param propertyList The actual Key_Value pair property list.\r\n * @param objInstance An instance of object with the respective class type.\r\n * @returns The updated object with the required properties & values.\r\n */\r\n getObjectFromKeyValue(propertyList, objInstance) {\r\n for (const property of propertyList) {\r\n if (property.value === 'false') {\r\n property.value = false;\r\n }\r\n if (property.value === 'true') {\r\n property.value = true;\r\n }\r\n objInstance[property.key] = property.value;\r\n }\r\n return objInstance;\r\n }\r\n}\r\nWidgetPropertyListBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: WidgetPropertyListBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nWidgetPropertyListBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: WidgetPropertyListBuilderService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: WidgetPropertyListBuilderService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\nclass SignalRStarter {\r\n constructor() { }\r\n start() {\r\n if (!(this.hubConnection)) {\r\n console.log('There is no SignalR connection to start.');\r\n return;\r\n }\r\n this.hubConnection.start().then(function () {\r\n console.log('SignalR connection started!');\r\n console.log(this.hubConnection);\r\n });\r\n }\r\n}\r\nSignalRStarter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SignalRStarter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nSignalRStarter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SignalRStarter, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: SignalRStarter, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\nclass AuthCallback {\r\n constructor(_secureHttpService, _request) {\r\n this._secureHttpService = _secureHttpService;\r\n this._request = _request;\r\n this.url = window.location.href.indexOf('localhost') > -1 ? EnvironmentWebEnum.environment : window.location.pathname.substring(0, window.location.pathname.indexOf(\"/\", window.location.pathname.indexOf(\"/\") + 1));\r\n }\r\n getSecurityTokenConfiguration() {\r\n this._request.post(this.url + '/api/Security/GetSecurityTokenConfiguration').then((response) => {\r\n const baseUri = response.baseUri;\r\n const config = {\r\n client_id: response.clientId,\r\n redirect_uri: response.redirectUri,\r\n authority: response.authority,\r\n request_state_key: 'OidcClient.request_state_' + response.clientId + '_' + response.environmentQualifier,\r\n persistKey: 'TokenManager.token_' + response.clientId + '_' + response.environmentQualifier,\r\n store: window.sessionStorage,\r\n request_state_store: window.sessionStorage\r\n };\r\n const tokenManager = new OidcTokenManager(config);\r\n tokenManager.processTokenCallbackAsync().then(() => {\r\n this._request.post(this.url + '/api/Security/CreateSessionCookie', {\r\n method: 'post',\r\n headers: {\r\n 'Authorization': 'Bearer ' + tokenManager.access_token\r\n }\r\n }).then((cookieResponse) => {\r\n alert('createSessionCookie -> ' + JSON.stringify(cookieResponse));\r\n console.log('createSessionCookie - ' + cookieResponse);\r\n const returnUrlKey = 'Hsp.ReturnUrl_' + cookieResponse.clientId + '_' + cookieResponse.environmentQualifier;\r\n const returnUrl = window.sessionStorage.getItem(returnUrlKey) || (baseUri + '/');\r\n window.sessionStorage.setItem(returnUrlKey, null);\r\n window.location.href = returnUrl;\r\n }, (error) => {\r\n console.log(error);\r\n alert('createSessionCookie err -> ' + JSON.stringify(error));\r\n if (error === 'Unauthorized') {\r\n window.sessionStorage.clear();\r\n window.location.href = baseUri + '/';\r\n }\r\n });\r\n }, (error) => {\r\n console.log(error);\r\n alert('host err -> ' + JSON.stringify(error));\r\n if (document.getElementById('userMessage1') && document.getElementById('userMessage1')[0]) {\r\n document.getElementById('userMessage1')[0].style.display = 'none';\r\n }\r\n if (error === 'Error: Invalid state' || error === 'Error: No request state loaded') {\r\n const returnUrlKey = 'Hsp.ReturnUrl_' + response.clientId + '_' + response.environmentQualifier;\r\n const returnUrl = window.sessionStorage.getItem(returnUrlKey) || (baseUri + '/');\r\n window.sessionStorage.clear();\r\n window.location.href = returnUrl;\r\n return;\r\n }\r\n if (document.getElementById('userMessage1')[0]) {\r\n document.getElementById('userMessage1')[0].innerText('Sorry, we are having some trouble signing you in.');\r\n }\r\n let userMessage2 = 'Please try closing your browser and signing in again.';\r\n if (error === 'Error: Token issued too long ago') {\r\n userMessage2 = 'Your system clock might be slightly ahead, please try adjusting it and signing in again.';\r\n }\r\n if (document.getElementById('userMessage2')[0]) {\r\n document.getElementById('userMessage2')[0].innerText(userMessage2);\r\n }\r\n if (document.getElementById('userMessage3')[0]) {\r\n document.getElementById('userMessage3')[0].innerText(error);\r\n }\r\n document.getElementById('userMessage1').style.display = 'block';\r\n document.getElementById('userMessage2').style.display = 'block';\r\n document.getElementById('userMessage3').style.display = 'block';\r\n });\r\n }, (error) => {\r\n if (document.getElementById('userMessage1')[0]) {\r\n const text = 'Sorry, we are having some trouble retrieving parameters to sign you in.';\r\n document.getElementById('userMessage1')[0].innerText(text);\r\n }\r\n if (document.getElementById('userMessage2')[0]) {\r\n const text = 'Please contact Radius support at support@radiusww.com.

    ';\r\n document.getElementById('userMessage2')[0].innerText(text);\r\n }\r\n if (document.getElementById('userMessage3')[0]) {\r\n document.getElementById('userMessage3')[0].innerText(error);\r\n }\r\n document.getElementById('userMessage1').style.display = 'block';\r\n document.getElementById('userMessage2').style.display = 'block';\r\n document.getElementById('userMessage3').style.display = 'block';\r\n });\r\n }\r\n}\r\nAuthCallback.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: AuthCallback, deps: [{ token: SecureHttpService }, { token: Request }], target: i0.ɵɵFactoryTarget.Injectable });\r\nAuthCallback.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: AuthCallback, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: AuthCallback, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return [{ type: SecureHttpService }, { type: Request }]; } });\n\nclass HspPortalWebCoreNewModule {\r\n}\r\nHspPortalWebCoreNewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: HspPortalWebCoreNewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nHspPortalWebCoreNewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.10\", ngImport: i0, type: HspPortalWebCoreNewModule, declarations: [CorePopupComponent], imports: [MatDialogModule,\r\n MatSnackBarModule,\r\n MatBottomSheetModule,\r\n MatListModule,\r\n CommonModule, i1$1.ToastrModule], exports: [CorePopupComponent] });\r\nHspPortalWebCoreNewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: HspPortalWebCoreNewModule, providers: [\r\n AuthCallback,\r\n Request,\r\n SecureHttpService,\r\n ServiceFactory,\r\n ServicePathInitializer,\r\n TokenService,\r\n EventHandlerService,\r\n MessageCacheService,\r\n DialogService,\r\n NotifierService,\r\n WidgetPropertyListBuilderService,\r\n SignalRStarter\r\n ], imports: [MatDialogModule,\r\n MatSnackBarModule,\r\n MatBottomSheetModule,\r\n MatListModule,\r\n CommonModule,\r\n ToastrModule.forRoot({\r\n timeOut: 5000,\r\n positionClass: 'toast-top-right'\r\n })] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.10\", ngImport: i0, type: HspPortalWebCoreNewModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [\r\n CorePopupComponent\r\n ],\r\n providers: [\r\n AuthCallback,\r\n Request,\r\n SecureHttpService,\r\n ServiceFactory,\r\n ServicePathInitializer,\r\n TokenService,\r\n EventHandlerService,\r\n MessageCacheService,\r\n DialogService,\r\n NotifierService,\r\n WidgetPropertyListBuilderService,\r\n SignalRStarter\r\n ],\r\n imports: [\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatBottomSheetModule,\r\n MatListModule,\r\n CommonModule,\r\n ToastrModule.forRoot({\r\n timeOut: 5000,\r\n positionClass: 'toast-top-right'\r\n }),\r\n ],\r\n entryComponents: [\r\n CorePopupComponent\r\n ],\r\n exports: [\r\n CorePopupComponent\r\n ]\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of hsp-portal-web-core-new\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { CorePopupComponent, EventHandlerService, HspPortalWebCoreNewModule, NotifierMessageTypeEnum, NotifierService, PopupDataModel, SecureHttpService, ServiceFactory, SessionLifetimeService, SignalRStarter, WidgetPropertyListBuilderService };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Output, Input, Injectable, ContentChildren, ContentChild, HostListener, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\n\nclass Ng2DropdownButton {\n constructor(element) {\n this.element = element;\n this.onMenuToggled = new EventEmitter();\n this.showCaret = true;\n }\n /**\n * @name toggleMenu\n * @desc emits event to toggle menu\n */\n toggleMenu() {\n this.onMenuToggled.emit(true);\n }\n /**\n * @name getPosition\n * @desc returns position of the button\n */\n getPosition() {\n return this.element.nativeElement.getBoundingClientRect();\n }\n}\nNg2DropdownButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownButton, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNg2DropdownButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2DropdownButton, selector: \"ng2-dropdown-button\", inputs: { showCaret: \"showCaret\" }, outputs: { onMenuToggled: \"onMenuToggled\" }, ngImport: i0, template: \"\\n\", styles: [\".ng2-dropdown-button{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;padding:.45rem .25rem;font-size:14px;letter-spacing:.08rem;color:#444;outline:0;cursor:pointer;font-weight:400;border:none;border-bottom:1px solid #efefef;text-align:left;min-width:100px;width:100%;display:flex;flex-direction:row;max-width:150px}.ng2-dropdown-button:hover{color:#222}.ng2-dropdown-button:active,.ng2-dropdown-button:focus{color:#222;border-bottom:2px solid #2196F3}.ng2-dropdown-button__label{flex:1 1 95%}.ng2-dropdown-button__caret{width:12px;height:12px;display:flex;flex:1 1 6%}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button{border:none;min-width:40px;width:40px;border-radius:100%;transition:all .2s;text-align:center;height:40px;padding:.5em}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button:active{background:rgba(0,0,0,.2)}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownButton, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-dropdown-button', template: \"\\n\", styles: [\".ng2-dropdown-button{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;padding:.45rem .25rem;font-size:14px;letter-spacing:.08rem;color:#444;outline:0;cursor:pointer;font-weight:400;border:none;border-bottom:1px solid #efefef;text-align:left;min-width:100px;width:100%;display:flex;flex-direction:row;max-width:150px}.ng2-dropdown-button:hover{color:#222}.ng2-dropdown-button:active,.ng2-dropdown-button:focus{color:#222;border-bottom:2px solid #2196F3}.ng2-dropdown-button__label{flex:1 1 95%}.ng2-dropdown-button__caret{width:12px;height:12px;display:flex;flex:1 1 6%}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button{border:none;min-width:40px;width:40px;border-radius:100%;transition:all .2s;text-align:center;height:40px;padding:.5em}:host-context(.ng2-dropdown-button--icon) .ng2-dropdown-button:active{background:rgba(0,0,0,.2)}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onMenuToggled: [{\n type: Output\n }], showCaret: [{\n type: Input\n }] } });\n\nconst KEYS = {\n BACKSPACE: 9,\n PREV: 38,\n NEXT: 40,\n ENTER: 13,\n ESCAPE: 27\n};\n/**\n * @name onSwitchNext\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchNext = (index, items, state) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n }\n};\n/**\n * @name onSwitchPrev\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchPrev = (index, items, state) => {\n if (index > 0) {\n state.select(items[index - 1], true);\n }\n};\n/**\n * @name onBackspace\n * @param index\n * @param items\n * @param state\n */\nconst onBackspace = (index, items, state) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n }\n else {\n state.select(items[0], true);\n }\n};\nfunction onEscape() {\n this.hide();\n}\n;\n/**\n * @name onItemClicked\n * @param index\n * @param items\n * @param state\n */\nconst onItemClicked = (index, items, state) => {\n return state.selectedItem ? state.selectedItem.click() : undefined;\n};\nconst ACTIONS = {\n [KEYS.BACKSPACE]: onBackspace,\n [KEYS.PREV]: onSwitchPrev,\n [KEYS.NEXT]: onSwitchNext,\n [KEYS.ENTER]: onItemClicked,\n [KEYS.ESCAPE]: onEscape\n};\nfunction arrowKeysHandler(event) {\n if ([38, 40].indexOf(event.keyCode) > -1) {\n event.preventDefault();\n }\n}\n\nclass Ng2DropdownState {\n constructor() {\n this.onItemSelected = new EventEmitter();\n this.onItemClicked = new EventEmitter();\n this.onItemDestroyed = new EventEmitter();\n }\n /**\n * @name selectedItem\n * @desc getter for _selectedItem\n */\n get selectedItem() {\n return this._selectedItem;\n }\n /**\n * @name selects a menu item and emits event\n * @param item\n */\n select(item, dispatchEvent = true) {\n this._selectedItem = item;\n if (!dispatchEvent || !item) {\n return;\n }\n item.focus();\n this.onItemSelected.emit(item);\n }\n /**\n * @name unselect\n * @desc sets _selectedItem as undefined\n */\n unselect() {\n this._selectedItem = undefined;\n }\n}\n\nclass DropdownStateService {\n constructor() {\n this.menuState = {\n isVisible: false,\n toString() {\n return this.isVisible === true ? 'visible' : 'hidden';\n }\n };\n this.dropdownState = new Ng2DropdownState();\n }\n}\nDropdownStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDropdownStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DropdownStateService, decorators: [{\n type: Injectable\n }] });\n\nclass Ng2MenuItem {\n constructor(state, element) {\n this.state = state;\n this.element = element;\n /**\n * @preventClose\n * @desc if true, clicking on the item won't close the dropdown\n */\n this.preventClose = false;\n }\n ngOnDestroy() {\n this.state.dropdownState.onItemDestroyed.emit(this);\n }\n /**\n * @name isSelected\n * @desc returns current selected item\n */\n get isSelected() {\n return this === this.state.dropdownState.selectedItem;\n }\n /**\n * @name click\n * @desc emits select event\n */\n select($event) {\n this.state.dropdownState.select(this, true);\n if ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n /**\n * @name click\n * @desc emits click event\n */\n click() {\n this.state.dropdownState.onItemClicked.emit(this);\n }\n /**\n * @name focus\n */\n focus() {\n this.element.nativeElement.children[0].focus();\n }\n}\nNg2MenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2MenuItem, deps: [{ token: DropdownStateService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNg2MenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2MenuItem, selector: \"ng2-menu-item\", inputs: { preventClose: \"preventClose\", value: \"value\" }, ngImport: i0, template: `\n \n \n \n `, isInline: true, styles: [\".ng2-menu-item{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;color:#000000de;cursor:pointer;font-size:.9em;text-transform:none;font-weight:400;letter-spacing:.03em;height:48px;line-height:48px;padding:.3em 1.25rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:background .25s}.ng2-menu-item--selected{background:rgba(158,158,158,.2);outline:0}.ng2-menu-item:focus{outline:0}.ng2-menu-item:active{background:rgba(158,158,158,.4)}:host(ng2-menu-item) ::ng-deep [ng2-menu-item-icon]{vertical-align:middle;font-size:28px;width:1.5em;height:30px;color:#00000070}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2MenuItem, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-menu-item', template: `\n \n \n \n `, styles: [\".ng2-menu-item{font-family:Roboto,Helvetica Neue,Helvetica,Arial;background:#fff;color:#000000de;cursor:pointer;font-size:.9em;text-transform:none;font-weight:400;letter-spacing:.03em;height:48px;line-height:48px;padding:.3em 1.25rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;transition:background .25s}.ng2-menu-item--selected{background:rgba(158,158,158,.2);outline:0}.ng2-menu-item:focus{outline:0}.ng2-menu-item:active{background:rgba(158,158,158,.4)}:host(ng2-menu-item) ::ng-deep [ng2-menu-item-icon]{vertical-align:middle;font-size:28px;width:1.5em;height:30px;color:#00000070}\\n\"] }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }, { type: i0.ElementRef }]; }, propDecorators: { preventClose: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\nclass Ng2DropdownMenu {\n constructor(dropdownState, element, renderer) {\n this.dropdownState = dropdownState;\n this.element = element;\n this.renderer = renderer;\n /**\n * @name width\n */\n this.width = 4;\n /**\n * @description if set to true, the first element of the dropdown will be automatically focused\n * @name focusFirstElement\n */\n this.focusFirstElement = true;\n /**\n * @name appendToBody\n */\n this.appendToBody = true;\n /**\n * @name zIndex\n */\n this.zIndex = 1000;\n this.listeners = {\n arrowHandler: undefined,\n handleKeypress: undefined\n };\n }\n /**\n * @name show\n * @shows menu and selects first item\n */\n show(position, dynamic = true) {\n const dc = typeof document !== 'undefined' ? document : undefined;\n const wd = typeof window !== 'undefined' ? window : undefined;\n if (!this.dropdownState.menuState.isVisible) {\n // setting handlers\n this.listeners.handleKeypress = this.renderer.listen(dc.body, 'keydown', this.handleKeypress.bind(this));\n this.listeners.arrowHandler = this.renderer.listen(wd, 'keydown', arrowKeysHandler);\n }\n // update state\n this.dropdownState.menuState.isVisible = true;\n if (position) {\n this.updatePosition(position, dynamic);\n }\n }\n /**\n * @name hide\n * @desc hides menu\n */\n hide() {\n this.dropdownState.menuState.isVisible = false;\n // reset selected item state\n this.dropdownState.dropdownState.unselect();\n // call function to unlisten\n this.listeners.arrowHandler && this.listeners.arrowHandler();\n this.listeners.handleKeypress && this.listeners.handleKeypress();\n }\n /**\n * @name updatePosition\n * @desc updates the menu position every time it is toggled\n * @param position {ClientRect}\n * @param dynamic {boolean}\n */\n updatePosition(position, dynamic) {\n this.position = position;\n this.updateOnChange(dynamic);\n }\n /**\n * @name handleKeypress\n * @desc executes functions on keyPress based on the key pressed\n * @param $event\n */\n handleKeypress($event) {\n const key = $event.keyCode;\n const items = this.items.toArray();\n const index = items.indexOf(this.dropdownState.dropdownState.selectedItem);\n if (!ACTIONS.hasOwnProperty(key)) {\n return;\n }\n ACTIONS[key].call(this, index, items, this.dropdownState.dropdownState);\n }\n /**\n * @name getMenuElement\n */\n getMenuElement() {\n return this.element.nativeElement.children[0];\n }\n /**\n * @name calcPositionOffset\n * @param position\n */\n calcPositionOffset(position) {\n const wd = typeof window !== 'undefined' ? window : undefined;\n const dc = typeof document !== 'undefined' ? document : undefined;\n if (!wd || !dc || !position) {\n return;\n }\n const element = this.getMenuElement();\n const supportPageOffset = wd.pageXOffset !== undefined;\n const isCSS1Compat = (dc.compatMode || '') === 'CSS1Compat';\n const x = supportPageOffset\n ? wd.pageXOffset\n : isCSS1Compat\n ? dc.documentElement.scrollLeft\n : dc.body.scrollLeft;\n const y = supportPageOffset\n ? wd.pageYOffset\n : isCSS1Compat\n ? dc.documentElement.scrollTop\n : dc.body.scrollTop;\n let { top, left } = this.applyOffset(`${position.top + (this.appendToBody ? y - 15 : 0)}px`, `${position.left + x - 5}px`);\n const clientWidth = element.clientWidth;\n const clientHeight = element.clientHeight;\n const marginFromBottom = parseInt(top) + clientHeight + (this.appendToBody ? 0 : y - 15);\n const marginFromRight = parseInt(left) + clientWidth;\n const windowScrollHeight = wd.innerHeight + wd.scrollY;\n const windowScrollWidth = wd.innerWidth + wd.scrollX;\n if (marginFromBottom >= windowScrollHeight) {\n top = `${parseInt(top.replace('px', '')) - clientHeight}px`;\n }\n if (marginFromRight >= windowScrollWidth) {\n const marginRight = marginFromRight - windowScrollWidth + 30;\n left = `${parseInt(left.replace('px', '')) - marginRight}px`;\n }\n return { top, left };\n }\n applyOffset(top, left) {\n if (!this.offset) {\n return { top, left };\n }\n const offset = this.offset.split(' ');\n if (!offset[1]) {\n offset[1] = '0';\n }\n top = `${parseInt(top.replace('px', '')) + parseInt(offset[0])}px`;\n left = `${parseInt(left.replace('px', '')) + parseInt(offset[1])}px`;\n return { top, left };\n }\n ngOnInit() {\n const dc = typeof document !== 'undefined' ? document : undefined;\n if (this.appendToBody) {\n // append menu element to the body\n dc.body.appendChild(this.element.nativeElement);\n }\n }\n updateOnChange(dynamic = true) {\n const element = this.getMenuElement();\n const position = this.calcPositionOffset(this.position);\n if (position) {\n this.renderer.setStyle(element, 'top', position.top.toString());\n this.renderer.setStyle(element, 'left', position.left.toString());\n }\n // select first item unless user disabled this option\n if (this.focusFirstElement &&\n this.items.first &&\n !this.dropdownState.dropdownState.selectedItem) {\n this.dropdownState.dropdownState.select(this.items.first, false);\n }\n }\n ngOnDestroy() {\n const elem = this.element.nativeElement;\n elem.parentNode.removeChild(elem);\n if (this.listeners.handleKeypress) {\n this.listeners.handleKeypress();\n }\n }\n}\nNg2DropdownMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownMenu, deps: [{ token: DropdownStateService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNg2DropdownMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2DropdownMenu, selector: \"ng2-dropdown-menu\", inputs: { width: \"width\", focusFirstElement: \"focusFirstElement\", offset: \"offset\", appendToBody: \"appendToBody\", zIndex: \"zIndex\" }, queries: [{ propertyName: \"items\", predicate: Ng2MenuItem, descendants: true }], ngImport: i0, template: `\n \n \n \n \n \n \n\n \n \n `, isInline: true, styles: [\":host{display:block}.ng2-dropdown-menu{overflow-y:auto;box-shadow:0 1px 2px #0000004d;position:absolute;padding:.5em 0;background:#fff;border-radius:1px;max-height:400px;width:260px;min-height:0;display:block}.ng2-dropdown-menu.ng2-dropdown-menu--inside-element{position:fixed}.ng2-dropdown-menu.ng2-dropdown-menu--width--2{width:200px}.ng2-dropdown-menu.ng2-dropdown-menu--width--4{width:260px}.ng2-dropdown-menu.ng2-dropdown-menu--width--6{width:320px}.ng2-dropdown-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden}:host ::ng-deep .ng2-menu-divider{height:1px;min-height:1px;max-height:1px;width:100%;display:block;background:#f9f9f9}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('fade', [\n state('visible', style({ opacity: 1, height: '*', width: '*' })),\n state('hidden', style({ opacity: 0, overflow: 'hidden', height: 0, width: 0 })),\n transition('hidden => visible', [\n animate('250ms ease-in', style({ opacity: 1, height: '*', width: '*' }))\n ]),\n transition('visible => hidden', [\n animate('350ms ease-out', style({ opacity: 0, width: 0, height: 0 }))\n ])\n ]),\n trigger('opacity', [\n transition('hidden => visible', [\n animate('450ms ease-in', keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 1, offset: 1 })\n ]))\n ]),\n transition('visible => hidden', [\n animate('250ms ease-out', keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.5, offset: 0.3 }),\n style({ opacity: 0, offset: 1 })\n ]))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownMenu, decorators: [{\n type: Component,\n args: [{ selector: 'ng2-dropdown-menu', template: `\n \n \n \n \n \n \n\n \n \n `, animations: [\n trigger('fade', [\n state('visible', style({ opacity: 1, height: '*', width: '*' })),\n state('hidden', style({ opacity: 0, overflow: 'hidden', height: 0, width: 0 })),\n transition('hidden => visible', [\n animate('250ms ease-in', style({ opacity: 1, height: '*', width: '*' }))\n ]),\n transition('visible => hidden', [\n animate('350ms ease-out', style({ opacity: 0, width: 0, height: 0 }))\n ])\n ]),\n trigger('opacity', [\n transition('hidden => visible', [\n animate('450ms ease-in', keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 1, offset: 1 })\n ]))\n ]),\n transition('visible => hidden', [\n animate('250ms ease-out', keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.5, offset: 0.3 }),\n style({ opacity: 0, offset: 1 })\n ]))\n ])\n ])\n ], styles: [\":host{display:block}.ng2-dropdown-menu{overflow-y:auto;box-shadow:0 1px 2px #0000004d;position:absolute;padding:.5em 0;background:#fff;border-radius:1px;max-height:400px;width:260px;min-height:0;display:block}.ng2-dropdown-menu.ng2-dropdown-menu--inside-element{position:fixed}.ng2-dropdown-menu.ng2-dropdown-menu--width--2{width:200px}.ng2-dropdown-menu.ng2-dropdown-menu--width--4{width:260px}.ng2-dropdown-menu.ng2-dropdown-menu--width--6{width:320px}.ng2-dropdown-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:hidden}:host ::ng-deep .ng2-menu-divider{height:1px;min-height:1px;max-height:1px;width:100%;display:block;background:#f9f9f9}\\n\"] }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { width: [{\n type: Input\n }], focusFirstElement: [{\n type: Input\n }], offset: [{\n type: Input\n }], appendToBody: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [Ng2MenuItem, { descendants: true }]\n }] } });\n\nclass Ng2Dropdown {\n constructor(state) {\n this.state = state;\n this.dynamicUpdate = true;\n // outputs\n this.onItemClicked = new EventEmitter();\n this.onItemSelected = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onHide = new EventEmitter();\n }\n ngOnInit() {\n this.state.dropdownState.onItemClicked.subscribe(item => {\n this.onItemClicked.emit(item);\n if (item.preventClose) {\n return;\n }\n this.hide.call(this);\n });\n if (this.button) {\n this.button.onMenuToggled.subscribe(() => {\n this.toggleMenu();\n });\n }\n this.state.dropdownState.onItemSelected.subscribe(item => {\n this.onItemSelected.emit(item);\n });\n this.state.dropdownState.onItemDestroyed.subscribe((item) => {\n let newSelectedItem;\n const items = this.menu.items.toArray();\n if (item !== this.state.dropdownState.selectedItem) {\n return;\n }\n if (this.menu.focusFirstElement) {\n newSelectedItem =\n item === items[0] && items.length > 1\n ? items[1]\n : items[0];\n }\n this.state.dropdownState.select(newSelectedItem);\n });\n }\n /**\n * @name toggleMenu\n * @desc toggles menu visibility\n */\n toggleMenu(position = this.button.getPosition()) {\n this.state.menuState.isVisible ? this.hide() : this.show(position);\n }\n /**\n * - hides dropdown\n * @name hide\n */\n hide() {\n this.menu.hide();\n this.onHide.emit(this);\n }\n /**\n * - shows dropdown\n * @name show\n * @param position\n */\n show(position = this.button.getPosition()) {\n this.menu.show(position, this.dynamicUpdate);\n this.onShow.emit(this);\n }\n /**\n * @name scrollListener\n */\n scrollListener() {\n if (this.button && this.dynamicUpdate) {\n this.menu.updatePosition(this.button.getPosition(), true);\n }\n }\n}\nNg2Dropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2Dropdown, deps: [{ token: DropdownStateService }], target: i0.ɵɵFactoryTarget.Component });\nNg2Dropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: Ng2Dropdown, selector: \"ng2-dropdown\", inputs: { dynamicUpdate: \"dynamicUpdate\" }, outputs: { onItemClicked: \"onItemClicked\", onItemSelected: \"onItemSelected\", onShow: \"onShow\", onHide: \"onHide\" }, host: { listeners: { \"window:scroll\": \"scrollListener()\" } }, providers: [DropdownStateService], queries: [{ propertyName: \"button\", first: true, predicate: Ng2DropdownButton, descendants: true, static: true }, { propertyName: \"menu\", first: true, predicate: Ng2DropdownMenu, descendants: true, static: true }], ngImport: i0, template: `\n
    \n \n \n
    \n `, isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2Dropdown, decorators: [{\n type: Component,\n args: [{\n selector: 'ng2-dropdown',\n template: `\n
    \n \n \n
    \n `,\n providers: [DropdownStateService]\n }]\n }], ctorParameters: function () { return [{ type: DropdownStateService }]; }, propDecorators: { button: [{\n type: ContentChild,\n args: [Ng2DropdownButton, { static: true }]\n }], menu: [{\n type: ContentChild,\n args: [Ng2DropdownMenu, { static: true }]\n }], dynamicUpdate: [{\n type: Input\n }], onItemClicked: [{\n type: Output\n }], onItemSelected: [{\n type: Output\n }], onShow: [{\n type: Output\n }], onHide: [{\n type: Output\n }], scrollListener: [{\n type: HostListener,\n args: ['window:scroll']\n }] } });\n\nclass Ng2DropdownModule {\n}\nNg2DropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNg2DropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, declarations: [Ng2Dropdown,\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu], imports: [CommonModule], exports: [Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n Ng2Dropdown] });\nNg2DropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, imports: [[\n CommonModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: Ng2DropdownModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n Ng2Dropdown\n ],\n declarations: [\n Ng2Dropdown,\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n ],\n imports: [\n CommonModule\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DropdownStateService, Ng2Dropdown, Ng2DropdownButton, Ng2DropdownMenu, Ng2DropdownModule, Ng2MenuItem };\n","import * as i0 from '@angular/core';\nimport { Pipe, Injectable, Directive, Input, EventEmitter, Component, Output, ViewChild, HostBinding, HostListener, TemplateRef, ContentChildren, forwardRef, ContentChild, ViewChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/forms';\nimport { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule, COMPOSITION_BUFFER_MODE } from '@angular/forms';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1$1 from 'ng2-material-dropdown';\nimport { Ng2Dropdown, Ng2DropdownModule } from 'ng2-material-dropdown';\nimport { filter as filter$1, map, first as first$1, debounceTime as debounceTime$1 } from 'rxjs';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\nimport { first, distinctUntilChanged, debounceTime, filter } from 'rxjs/operators';\n\nconst escape = s => s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\nclass HighlightPipe {\n /**\n * @name transform\n * @param value {string}\n * @param arg {string}\n */\n transform(value, arg) {\n if (!arg.trim()) {\n return value;\n }\n try {\n const regex = new RegExp(`(${escape(arg)})`, 'i');\n return value.replace(regex, '$1');\n }\n catch (e) {\n return value;\n }\n }\n}\nHighlightPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nHighlightPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: HighlightPipe, name: \"highlight\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: HighlightPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'highlight'\n }]\n }] });\n\n/*\n** constants and default values for \n */\nconst PLACEHOLDER = '+ Tag';\nconst SECONDARY_PLACEHOLDER = 'Enter a new tag';\nconst KEYDOWN = 'keydown';\nconst KEYUP = 'keyup';\nconst FOCUS = 'focus';\nconst MAX_ITEMS_WARNING = 'The number of items specified was greater than the property max-items.';\nconst ACTIONS_KEYS = {\n DELETE: 'DELETE',\n SWITCH_PREV: 'SWITCH_PREV',\n SWITCH_NEXT: 'SWITCH_NEXT',\n TAB: 'TAB'\n};\nconst KEY_PRESS_ACTIONS = {\n 8: ACTIONS_KEYS.DELETE,\n 46: ACTIONS_KEYS.DELETE,\n 37: ACTIONS_KEYS.SWITCH_PREV,\n 39: ACTIONS_KEYS.SWITCH_NEXT,\n 9: ACTIONS_KEYS.TAB\n};\nconst DRAG_AND_DROP_KEY = 'Text';\nconst NEXT = 'NEXT';\nconst PREV = 'PREV';\n\nclass DragProvider {\n constructor() {\n this.state = {\n dragging: false,\n dropping: false,\n index: undefined\n };\n }\n /**\n * @name setDraggedItem\n * @param event\n * @param tag\n */\n setDraggedItem(event, tag) {\n if (event && event.dataTransfer) {\n event.dataTransfer.setData(DRAG_AND_DROP_KEY, JSON.stringify(tag));\n }\n }\n /**\n * @name getDraggedItem\n * @param event\n */\n getDraggedItem(event) {\n if (event && event.dataTransfer) {\n const data = event.dataTransfer.getData(DRAG_AND_DROP_KEY);\n try {\n return JSON.parse(data);\n }\n catch {\n return;\n }\n }\n }\n /**\n * @name setSender\n * @param sender\n */\n setSender(sender) {\n this.sender = sender;\n }\n /**\n * @name setReceiver\n * @param receiver\n */\n setReceiver(receiver) {\n this.receiver = receiver;\n }\n /**\n * @name onTagDropped\n * @param tag\n * @param indexDragged\n * @param indexDropped\n */\n onTagDropped(tag, indexDragged, indexDropped) {\n this.onDragEnd();\n this.sender.onRemoveRequested(tag, indexDragged);\n this.receiver.onAddingRequested(false, tag, indexDropped);\n }\n /**\n * @name setState\n * @param state\n */\n setState(state) {\n this.state = { ...this.state, ...state };\n }\n /**\n * @name getState\n * @param key\n */\n getState(key) {\n return key ? this.state[key] : this.state;\n }\n /**\n * @name onDragEnd\n */\n onDragEnd() {\n this.setState({\n dragging: false,\n dropping: false,\n index: undefined\n });\n }\n}\nDragProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DragProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nDragProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DragProvider });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DragProvider, decorators: [{\n type: Injectable\n }] });\n\nconst defaults = {\n tagInput: {\n separatorKeys: [],\n separatorKeyCodes: [],\n maxItems: Infinity,\n placeholder: PLACEHOLDER,\n secondaryPlaceholder: SECONDARY_PLACEHOLDER,\n validators: [],\n asyncValidators: [],\n onlyFromAutocomplete: false,\n errorMessages: {},\n theme: '',\n onTextChangeDebounce: 250,\n inputId: null,\n inputClass: '',\n clearOnBlur: false,\n hideForm: false,\n addOnBlur: false,\n addOnPaste: false,\n pasteSplitPattern: ',',\n blinkIfDupe: true,\n removable: true,\n editable: false,\n allowDupes: false,\n modelAsStrings: false,\n trimTags: true,\n ripple: true,\n tabIndex: '',\n disable: false,\n dragZone: '',\n onRemoving: undefined,\n onAdding: undefined,\n displayBy: 'display',\n identifyBy: 'value',\n animationDuration: {\n enter: '250ms',\n leave: '150ms'\n }\n },\n dropdown: {\n displayBy: 'display',\n identifyBy: 'value',\n appendToBody: true,\n offset: '50 0',\n focusFirstElement: false,\n showDropdownIfEmpty: false,\n minimumTextLength: 1,\n limitItemsTo: Infinity,\n keepOpen: true,\n dynamicUpdate: true,\n zIndex: 1000,\n matchingFn\n }\n};\n/**\n * @name matchingFn\n * @param this\n * @param value\n * @param target\n */\nfunction matchingFn(value, target) {\n const targetValue = target[this.displayBy].toString();\n return targetValue && targetValue\n .toLowerCase()\n .indexOf(value.toLowerCase()) >= 0;\n}\n\nclass OptionsProvider {\n setOptions(options) {\n OptionsProvider.defaults.tagInput = { ...defaults.tagInput, ...options.tagInput };\n OptionsProvider.defaults.dropdown = { ...defaults.dropdown, ...options.dropdown };\n }\n}\nOptionsProvider.defaults = defaults;\n\nfunction isObject(obj) {\n return obj === Object(obj);\n}\nclass TagInputAccessor {\n constructor() {\n this._items = [];\n /**\n * @name displayBy\n */\n this.displayBy = OptionsProvider.defaults.tagInput.displayBy;\n /**\n * @name identifyBy\n */\n this.identifyBy = OptionsProvider.defaults.tagInput.identifyBy;\n }\n get items() {\n return this._items;\n }\n set items(items) {\n this._items = items;\n this._onChangeCallback(this._items);\n }\n onTouched() {\n this._onTouchedCallback();\n }\n writeValue(items) {\n this._items = items || [];\n }\n registerOnChange(fn) {\n this._onChangeCallback = fn;\n }\n registerOnTouched(fn) {\n this._onTouchedCallback = fn;\n }\n /**\n * @name getItemValue\n * @param item\n * @param fromDropdown\n */\n getItemValue(item, fromDropdown = false) {\n const property = fromDropdown && this.dropdown ? this.dropdown.identifyBy : this.identifyBy;\n return isObject(item) ? item[property] : item;\n }\n /**\n * @name getItemDisplay\n * @param item\n * @param fromDropdown\n */\n getItemDisplay(item, fromDropdown = false) {\n const property = fromDropdown && this.dropdown ? this.dropdown.displayBy : this.displayBy;\n return isObject(item) ? item[property] : item;\n }\n /**\n * @name getItemsWithout\n * @param index\n */\n getItemsWithout(index) {\n return this.items.filter((item, position) => position !== index);\n }\n}\nTagInputAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputAccessor, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nTagInputAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagInputAccessor, inputs: { displayBy: \"displayBy\", identifyBy: \"identifyBy\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputAccessor, decorators: [{\n type: Directive\n }], propDecorators: { displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }] } });\n\n/**\n * @name listen\n * @param listenerType\n * @param action\n * @param condition\n */\nfunction listen(listenerType, action, condition = true) {\n // if the event provided does not exist, throw an error\n if (!this.listeners.hasOwnProperty(listenerType)) {\n throw new Error('The event entered may be wrong');\n }\n // if a condition is present and is false, exit early\n if (!condition) {\n return;\n }\n // fire listener\n this.listeners[listenerType].push(action);\n}\n\nclass TagInputForm {\n constructor() {\n /**\n * @name onSubmit\n */\n this.onSubmit = new EventEmitter();\n /**\n * @name onBlur\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onFocus\n */\n this.onFocus = new EventEmitter();\n /**\n * @name onKeyup\n */\n this.onKeyup = new EventEmitter();\n /**\n * @name onKeydown\n */\n this.onKeydown = new EventEmitter();\n /**\n * @name inputTextChange\n */\n this.inputTextChange = new EventEmitter();\n /**\n * @name validators\n */\n this.validators = [];\n /**\n * @name asyncValidators\n * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n */\n this.asyncValidators = [];\n /**\n * @name tabindex\n * @desc pass through the specified tabindex to the input\n */\n this.tabindex = '';\n /**\n * @name disabled\n */\n this.disabled = false;\n this.item = new FormControl({ value: '', disabled: this.disabled });\n }\n /**\n * @name inputText\n */\n get inputText() {\n return this.item.value;\n }\n /**\n * @name inputText\n * @param text {string}\n */\n set inputText(text) {\n this.item.setValue(text);\n this.inputTextChange.emit(text);\n }\n ngOnInit() {\n this.item.setValidators(this.validators);\n this.item.setAsyncValidators(this.asyncValidators);\n // creating form\n this.form = new FormGroup({\n item: this.item\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled && !changes.disabled.firstChange) {\n if (changes.disabled.currentValue) {\n this.form.controls['item'].disable();\n }\n else {\n this.form.controls['item'].enable();\n }\n }\n }\n /**\n * @name value\n */\n get value() {\n return this.form.get('item');\n }\n /**\n * @name isInputFocused\n */\n isInputFocused() {\n const doc = typeof document !== 'undefined' ? document : undefined;\n return doc ? doc.activeElement === this.input.nativeElement : false;\n }\n /**\n * @name getErrorMessages\n * @param messages\n */\n getErrorMessages(messages) {\n return Object.keys(messages)\n .filter(err => this.value.hasError(err))\n .map(err => messages[err]);\n }\n /**\n * @name hasErrors\n */\n hasErrors() {\n const { dirty, value, valid } = this.form;\n return dirty && value.item && !valid;\n }\n /**\n * @name focus\n */\n focus() {\n this.input.nativeElement.focus();\n }\n /**\n * @name blur\n */\n blur() {\n this.input.nativeElement.blur();\n }\n /**\n * @name getElementPosition\n */\n getElementPosition() {\n return this.input.nativeElement.getBoundingClientRect();\n }\n /**\n * - removes input from the component\n * @name destroy\n */\n destroy() {\n const input = this.input.nativeElement;\n input.parentElement.removeChild(input);\n }\n /**\n * @name onKeyDown\n * @param $event\n */\n onKeyDown($event) {\n this.inputText = this.value.value;\n if ($event.key === 'Enter') {\n this.submit($event);\n }\n else {\n return this.onKeydown.emit($event);\n }\n }\n /**\n * @name onKeyUp\n * @param $event\n */\n onKeyUp($event) {\n this.inputText = this.value.value;\n return this.onKeyup.emit($event);\n }\n /**\n * @name submit\n */\n submit($event) {\n $event.preventDefault();\n this.onSubmit.emit($event);\n }\n}\nTagInputForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputForm, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTagInputForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagInputForm, selector: \"tag-input-form\", inputs: { placeholder: \"placeholder\", validators: \"validators\", asyncValidators: \"asyncValidators\", inputId: \"inputId\", inputClass: \"inputClass\", tabindex: \"tabindex\", disabled: \"disabled\", inputText: \"inputText\" }, outputs: { onSubmit: \"onSubmit\", onBlur: \"onBlur\", onFocus: \"onFocus\", onKeyup: \"onKeyup\", onKeydown: \"onKeydown\", inputTextChange: \"inputTextChange\" }, viewQueries: [{ propertyName: \"input\", first: true, predicate: [\"input\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.ng2-tag-input__text-input{display:inline;vertical-align:middle;border:none;padding:0 .5rem;height:38px;font-size:1em;font-family:Roboto,Helvetica Neue,sans-serif}.ng2-tag-input__text-input:focus{outline:0}.ng2-tag-input__text-input[disabled=true]{opacity:.5;background:#fff}\\n\"], directives: [{ type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i1.MinLengthValidator, selector: \"[minlength][formControlName],[minlength][formControl],[minlength][ngModel]\", inputs: [\"minlength\"] }, { type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputForm, decorators: [{\n type: Component,\n args: [{ selector: 'tag-input-form', template: \"\\n
    \\n \\n
    \\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.ng2-tag-input__text-input{display:inline;vertical-align:middle;border:none;padding:0 .5rem;height:38px;font-size:1em;font-family:Roboto,Helvetica Neue,sans-serif}.ng2-tag-input__text-input:focus{outline:0}.ng2-tag-input__text-input[disabled=true]{opacity:.5;background:#fff}\\n\"] }]\n }], propDecorators: { onSubmit: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onKeyup: [{\n type: Output\n }], onKeydown: [{\n type: Output\n }], inputTextChange: [{\n type: Output\n }], placeholder: [{\n type: Input\n }], validators: [{\n type: Input\n }], asyncValidators: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputClass: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disabled: [{\n type: Input\n }], input: [{\n type: ViewChild,\n args: ['input']\n }], inputText: [{\n type: Input\n }] } });\n\nclass TagRipple {\n constructor() {\n this.state = 'none';\n }\n}\nTagRipple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagRipple, deps: [], target: i0.ɵɵFactoryTarget.Component });\nTagRipple.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagRipple, selector: \"tag-ripple\", inputs: { state: \"state\" }, ngImport: i0, template: `\n
    \n `, isInline: true, styles: [\":host{width:100%;height:100%;left:0;overflow:hidden;position:absolute}.tag-ripple{background:rgba(0,0,0,.1);top:50%;left:50%;height:100%;transform:translate(-50%,-50%);position:absolute}\\n\"], animations: [\n trigger('ink', [\n state('none', style({ width: 0, opacity: 0 })),\n transition('none => clicked', [\n animate(300, keyframes([\n style({ opacity: 1, offset: 0, width: '30%', borderRadius: '100%' }),\n style({ opacity: 1, offset: 0.5, width: '50%' }),\n style({ opacity: 0.5, offset: 1, width: '100%', borderRadius: '16px' })\n ]))\n ])\n ])\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagRipple, decorators: [{\n type: Component,\n args: [{\n selector: 'tag-ripple',\n styles: [`\n :host {\n width: 100%;\n height: 100%;\n left: 0;\n overflow: hidden;\n position: absolute;\n }\n\n .tag-ripple {\n background: rgba(0, 0, 0, 0.1);\n top: 50%;\n left: 50%;\n height: 100%;\n transform: translate(-50%, -50%);\n position: absolute;\n }\n `],\n template: `\n
    \n `,\n animations: [\n trigger('ink', [\n state('none', style({ width: 0, opacity: 0 })),\n transition('none => clicked', [\n animate(300, keyframes([\n style({ opacity: 1, offset: 0, width: '30%', borderRadius: '100%' }),\n style({ opacity: 1, offset: 0.5, width: '50%' }),\n style({ opacity: 0.5, offset: 1, width: '100%', borderRadius: '16px' })\n ]))\n ])\n ])\n ]\n }]\n }], propDecorators: { state: [{\n type: Input\n }] } });\n\nclass DeleteIconComponent {\n}\nDeleteIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DeleteIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\nDeleteIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: DeleteIconComponent, selector: \"delete-icon\", ngImport: i0, template: \"\\n \\n \\n \\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}:host(delete-icon){width:20px;height:16px;transition:all .15s;display:inline-block;text-align:right}:host(delete-icon) path{fill:#444}:host(delete-icon) svg{vertical-align:bottom;height:34px}:host(delete-icon):hover{transform:scale(1.5) translateY(-3px)}:host-context(.dark){text-align:right}:host-context(.dark) path{fill:#fff}:host-context(.dark) svg{vertical-align:bottom;height:34px}:host-context(.minimal){text-align:right}:host-context(.minimal) path{fill:#444}:host-context(.minimal) svg{vertical-align:bottom;height:34px}:host-context(.bootstrap){text-align:right}:host-context(.bootstrap) path{fill:#fff}:host-context(.bootstrap) svg{vertical-align:bottom;height:34px}:host-context(tag:focus) path,:host-context(tag:active) path{fill:#fff}:host-context(.dark tag:focus) path,:host-context(.dark tag:active) path{fill:#000}:host-context(.minimal tag:focus) path,:host-context(.minimal tag:active) path{fill:#000}:host-context(.bootstrap tag:focus) path,:host-context(.bootstrap tag:active) path{fill:#fff}:host-context(.bootstrap3-info){height:inherit}:host-context(.bootstrap3-info) path{fill:#fff}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: DeleteIconComponent, decorators: [{\n type: Component,\n args: [{ selector: 'delete-icon', template: \"\\n \\n \\n \\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}:host(delete-icon){width:20px;height:16px;transition:all .15s;display:inline-block;text-align:right}:host(delete-icon) path{fill:#444}:host(delete-icon) svg{vertical-align:bottom;height:34px}:host(delete-icon):hover{transform:scale(1.5) translateY(-3px)}:host-context(.dark){text-align:right}:host-context(.dark) path{fill:#fff}:host-context(.dark) svg{vertical-align:bottom;height:34px}:host-context(.minimal){text-align:right}:host-context(.minimal) path{fill:#444}:host-context(.minimal) svg{vertical-align:bottom;height:34px}:host-context(.bootstrap){text-align:right}:host-context(.bootstrap) path{fill:#fff}:host-context(.bootstrap) svg{vertical-align:bottom;height:34px}:host-context(tag:focus) path,:host-context(tag:active) path{fill:#fff}:host-context(.dark tag:focus) path,:host-context(.dark tag:active) path{fill:#000}:host-context(.minimal tag:focus) path,:host-context(.minimal tag:active) path{fill:#000}:host-context(.bootstrap tag:focus) path,:host-context(.bootstrap tag:active) path{fill:#fff}:host-context(.bootstrap3-info){height:inherit}:host-context(.bootstrap3-info) path{fill:#fff}\\n\"] }]\n }] });\n\n// mocking navigator\nconst navigator = typeof window !== 'undefined' ? window.navigator : {\n userAgent: 'Chrome',\n vendor: 'Google Inc'\n};\nconst isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\nclass TagComponent {\n constructor(element, renderer, cdRef) {\n this.element = element;\n this.renderer = renderer;\n this.cdRef = cdRef;\n /**\n * @name disabled\n */\n this.disabled = false;\n /**\n * @name onSelect\n */\n this.onSelect = new EventEmitter();\n /**\n * @name onRemove\n */\n this.onRemove = new EventEmitter();\n /**\n * @name onBlur\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onKeyDown\n */\n this.onKeyDown = new EventEmitter();\n /**\n * @name onTagEdited\n */\n this.onTagEdited = new EventEmitter();\n /**\n * @name editing\n */\n this.editing = false;\n /**\n * @name rippleState\n */\n this.rippleState = 'none';\n }\n /**\n * @name readonly {boolean}\n */\n get readonly() {\n return typeof this.model !== 'string' && this.model.readonly === true;\n }\n /**\n * @name select\n */\n select($event) {\n if (this.readonly || this.disabled) {\n return;\n }\n if ($event) {\n $event.stopPropagation();\n }\n this.focus();\n this.onSelect.emit(this.model);\n }\n /**\n * @name remove\n */\n remove($event) {\n $event.stopPropagation();\n this.onRemove.emit(this);\n }\n /**\n * @name focus\n */\n focus() {\n this.element.nativeElement.focus();\n }\n move() {\n this.moving = true;\n }\n /**\n * @name keydown\n * @param event\n */\n keydown(event) {\n if (this.editing) {\n if (event.keyCode === 13) {\n return this.disableEditMode(event);\n }\n }\n else {\n this.onKeyDown.emit({ event, model: this.model });\n }\n }\n /**\n * @name blink\n */\n blink() {\n const classList = this.element.nativeElement.classList;\n classList.add('blink');\n setTimeout(() => classList.remove('blink'), 50);\n }\n /**\n * @name toggleEditMode\n */\n toggleEditMode() {\n if (this.editable) {\n return this.editing ? undefined : this.activateEditMode();\n }\n }\n /**\n * @name onBlurred\n * @param event\n */\n onBlurred(event) {\n // Checks if it is editable first before handeling the onBlurred event in order to prevent\n // a bug in IE where tags are still editable with onlyFromAutocomplete set to true\n if (!this.editable) {\n return;\n }\n this.disableEditMode();\n const value = event.target.innerText;\n const result = typeof this.model === 'string'\n ? value\n : { ...this.model, [this.displayBy]: value };\n this.onBlur.emit(result);\n }\n /**\n * @name getDisplayValue\n * @param item\n */\n getDisplayValue(item) {\n return typeof item === 'string' ? item : item[this.displayBy];\n }\n /**\n * @desc returns whether the ripple is visible or not\n * only works in Chrome\n * @name isRippleVisible\n */\n get isRippleVisible() {\n return !this.readonly && !this.editing && isChrome && this.hasRipple;\n }\n /**\n * @name disableEditMode\n * @param $event\n */\n disableEditMode($event) {\n const classList = this.element.nativeElement.classList;\n const input = this.getContentEditableText();\n this.editing = false;\n classList.remove('tag--editing');\n if (!input) {\n this.setContentEditableText(this.model);\n return;\n }\n this.storeNewValue(input);\n this.cdRef.detectChanges();\n if ($event) {\n $event.preventDefault();\n }\n }\n /**\n * @name isDeleteIconVisible\n */\n isDeleteIconVisible() {\n return (!this.readonly && !this.disabled && this.removable && !this.editing);\n }\n /**\n * @name getContentEditableText\n */\n getContentEditableText() {\n const input = this.getContentEditable();\n return input ? input.innerText.trim() : '';\n }\n /**\n * @name setContentEditableText\n * @param model\n */\n setContentEditableText(model) {\n const input = this.getContentEditable();\n const value = this.getDisplayValue(model);\n input.innerText = value;\n }\n /**\n * @name\n */\n activateEditMode() {\n const classList = this.element.nativeElement.classList;\n classList.add('tag--editing');\n this.editing = true;\n }\n /**\n * @name storeNewValue\n * @param input\n */\n storeNewValue(input) {\n const exists = (tag) => {\n return typeof tag === 'string'\n ? tag === input\n : tag[this.displayBy] === input;\n };\n const hasId = () => {\n return this.model[this.identifyBy] !== this.model[this.displayBy];\n };\n // if the value changed, replace the value in the model\n if (exists(this.model)) {\n return;\n }\n const model = typeof this.model === 'string'\n ? input\n : {\n index: this.index,\n [this.identifyBy]: hasId()\n ? this.model[this.identifyBy]\n : input,\n [this.displayBy]: input\n };\n if (this.canAddTag(model)) {\n this.onTagEdited.emit({ tag: model, index: this.index });\n }\n else {\n this.setContentEditableText(this.model);\n }\n }\n /**\n * @name getContentEditable\n */\n getContentEditable() {\n return this.element.nativeElement.querySelector('[contenteditable]');\n }\n}\nTagComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagComponent, selector: \"tag\", inputs: { model: \"model\", removable: \"removable\", editable: \"editable\", template: \"template\", displayBy: \"displayBy\", identifyBy: \"identifyBy\", index: \"index\", hasRipple: \"hasRipple\", disabled: \"disabled\", canAddTag: \"canAddTag\" }, outputs: { onSelect: \"onSelect\", onRemove: \"onRemove\", onBlur: \"onBlur\", onKeyDown: \"onKeyDown\", onTagEdited: \"onTagEdited\" }, host: { listeners: { \"keydown\": \"keydown($event)\" }, properties: { \"class.moving\": \"this.moving\" } }, viewQueries: [{ propertyName: \"ripple\", first: true, predicate: TagRipple, descendants: true }], ngImport: i0, template: \"
    \\n\\n
    \\n \\n \\n \\n
    \\n\\n
    \\n \\n
    \\n {{ getDisplayValue(model) }}\\n
    \\n\\n \\n \\n \\n
    \\n
    \\n\\n\\n\\n\", styles: [\":host,:host>div,:host>div:focus{outline:0;overflow:hidden;transition:opacity 1s;z-index:1}:host{max-width:400px}:host.blink{-webkit-animation:blink .3s normal forwards ease-in-out;animation:blink .3s normal forwards ease-in-out}@-webkit-keyframes blink{0%{opacity:.3}}@keyframes blink{0%{opacity:.3}}:host .disabled{cursor:not-allowed}:host [contenteditable=true]{outline:0}.tag-wrapper{flex-direction:row;display:flex}.tag__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"], components: [{ type: DeleteIconComponent, selector: \"delete-icon\" }, { type: TagRipple, selector: \"tag-ripple\", inputs: [\"state\"] }], directives: [{ type: i2.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i2.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagComponent, decorators: [{\n type: Component,\n args: [{ selector: 'tag', template: \"
    \\n\\n
    \\n \\n \\n \\n
    \\n\\n
    \\n \\n
    \\n {{ getDisplayValue(model) }}\\n
    \\n\\n \\n \\n \\n
    \\n
    \\n\\n\\n\\n\", styles: [\":host,:host>div,:host>div:focus{outline:0;overflow:hidden;transition:opacity 1s;z-index:1}:host{max-width:400px}:host.blink{-webkit-animation:blink .3s normal forwards ease-in-out;animation:blink .3s normal forwards ease-in-out}@-webkit-keyframes blink{0%{opacity:.3}}@keyframes blink{0%{opacity:.3}}:host .disabled{cursor:not-allowed}:host [contenteditable=true]{outline:0}.tag-wrapper{flex-direction:row;display:flex}.tag__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{\n type: Input\n }], removable: [{\n type: Input\n }], editable: [{\n type: Input\n }], template: [{\n type: Input\n }], displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }], index: [{\n type: Input\n }], hasRipple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], canAddTag: [{\n type: Input\n }], onSelect: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onKeyDown: [{\n type: Output\n }], onTagEdited: [{\n type: Output\n }], moving: [{\n type: HostBinding,\n args: ['class.moving']\n }], ripple: [{\n type: ViewChild,\n args: [TagRipple]\n }], keydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\n/**\n * @name animations\n */\nconst animations = [\n trigger('animation', [\n state('in', style({\n opacity: 1\n })),\n state('out', style({\n opacity: 0\n })),\n transition(':enter', [\n animate('{{ enter }}', keyframes([\n style({ opacity: 0, offset: 0, transform: 'translate(0px, 20px)' }),\n style({ opacity: 0.3, offset: 0.3, transform: 'translate(0px, -10px)' }),\n style({ opacity: 0.5, offset: 0.5, transform: 'translate(0px, 0px)' }),\n style({ opacity: 0.75, offset: 0.75, transform: 'translate(0px, 5px)' }),\n style({ opacity: 1, offset: 1, transform: 'translate(0px, 0px)' })\n ]))\n ]),\n transition(':leave', [\n animate('{{ leave }}', keyframes([\n style({ opacity: 1, transform: 'translateX(0)', offset: 0 }),\n style({ opacity: 1, transform: 'translateX(-15px)', offset: 0.7 }),\n style({ opacity: 0, transform: 'translateX(100%)', offset: 1.0 })\n ]))\n ])\n ])\n];\n\nclass TagInputDropdown {\n constructor(injector) {\n this.injector = injector;\n /**\n * @name offset\n */\n this.offset = defaults.dropdown.offset;\n /**\n * @name focusFirstElement\n */\n this.focusFirstElement = defaults.dropdown.focusFirstElement;\n /**\n * - show autocomplete dropdown if the value of input is empty\n * @name showDropdownIfEmpty\n */\n this.showDropdownIfEmpty = defaults.dropdown.showDropdownIfEmpty;\n /**\n * - desc minimum text length in order to display the autocomplete dropdown\n * @name minimumTextLength\n */\n this.minimumTextLength = defaults.dropdown.minimumTextLength;\n /**\n * - number of items to display in the autocomplete dropdown\n * @name limitItemsTo\n */\n this.limitItemsTo = defaults.dropdown.limitItemsTo;\n /**\n * @name displayBy\n */\n this.displayBy = defaults.dropdown.displayBy;\n /**\n * @name identifyBy\n */\n this.identifyBy = defaults.dropdown.identifyBy;\n /**\n * @description a function a developer can use to implement custom matching for the autocomplete\n * @name matchingFn\n */\n this.matchingFn = defaults.dropdown.matchingFn;\n /**\n * @name appendToBody\n */\n this.appendToBody = defaults.dropdown.appendToBody;\n /**\n * @name keepOpen\n * @description option to leave dropdown open when adding a new item\n */\n this.keepOpen = defaults.dropdown.keepOpen;\n /**\n * @name dynamicUpdate\n */\n this.dynamicUpdate = defaults.dropdown.dynamicUpdate;\n /**\n * @name zIndex\n */\n this.zIndex = defaults.dropdown.zIndex;\n /**\n * list of items that match the current value of the input (for autocomplete)\n * @name items\n */\n this.items = [];\n /**\n * @name tagInput\n */\n this.tagInput = this.injector.get(TagInputComponent);\n /**\n * @name _autocompleteItems\n */\n this._autocompleteItems = [];\n /**\n *\n * @name show\n */\n this.show = () => {\n const maxItemsReached = this.tagInput.items.length === this.tagInput.maxItems;\n const value = this.getFormValue();\n const hasMinimumText = value.trim().length >= this.minimumTextLength;\n const position = this.calculatePosition();\n const items = this.getMatchingItems(value);\n const hasItems = items.length > 0;\n const isHidden = this.isVisible === false;\n const showDropdownIfEmpty = this.showDropdownIfEmpty && hasItems && !value;\n const isDisabled = this.tagInput.disable;\n const shouldShow = isHidden && ((hasItems && hasMinimumText) || showDropdownIfEmpty);\n const shouldHide = this.isVisible && !hasItems;\n if (this.autocompleteObservable && hasMinimumText) {\n return this.getItemsFromObservable(value);\n }\n if ((!this.showDropdownIfEmpty && !value) ||\n maxItemsReached ||\n isDisabled) {\n return this.dropdown.hide();\n }\n this.setItems(items);\n if (shouldShow) {\n this.dropdown.show(position);\n }\n else if (shouldHide) {\n this.hide();\n }\n };\n /**\n * @name requestAdding\n * @param item {Ng2MenuItem}\n */\n this.requestAdding = async (item) => {\n const tag = this.createTagModel(item);\n await this.tagInput.onAddingRequested(true, tag).catch(() => { });\n };\n /**\n * @name resetItems\n */\n this.resetItems = () => {\n this.items = [];\n };\n /**\n * @name getItemsFromObservable\n * @param text\n */\n this.getItemsFromObservable = (text) => {\n this.setLoadingState(true);\n const subscribeFn = (data) => {\n // hide loading animation\n this.setLoadingState(false)\n // add items\n .populateItems(data);\n this.setItems(this.getMatchingItems(text));\n if (this.items.length) {\n this.dropdown.show(this.calculatePosition());\n }\n else {\n this.dropdown.hide();\n }\n };\n this.autocompleteObservable(text)\n .pipe(first())\n .subscribe(subscribeFn, () => this.setLoadingState(false));\n };\n }\n /**\n * @name autocompleteItems\n * @param items\n */\n set autocompleteItems(items) {\n this._autocompleteItems = items;\n }\n /**\n * @name autocompleteItems\n * @desc array of items that will populate the autocomplete\n */\n get autocompleteItems() {\n const items = this._autocompleteItems;\n if (!items) {\n return [];\n }\n return items.map((item) => {\n return typeof item === 'string'\n ? {\n [this.displayBy]: item,\n [this.identifyBy]: item\n }\n : item;\n });\n }\n /**\n * @name ngAfterviewInit\n */\n ngAfterViewInit() {\n this.onItemClicked().subscribe((item) => {\n this.requestAdding(item);\n });\n // reset itemsMatching array when the dropdown is hidden\n this.onHide().subscribe(this.resetItems);\n const DEBOUNCE_TIME = 200;\n const KEEP_OPEN = this.keepOpen;\n this.tagInput.onTextChange\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(DEBOUNCE_TIME), filter((value) => {\n if (KEEP_OPEN === false) {\n return value.length > 0;\n }\n return true;\n }))\n .subscribe(this.show);\n }\n /**\n * @name updatePosition\n */\n updatePosition() {\n const position = this.tagInput.inputForm.getElementPosition();\n this.dropdown.menu.updatePosition(position, this.dynamicUpdate);\n }\n /**\n * @name isVisible\n */\n get isVisible() {\n return this.dropdown.menu.dropdownState.menuState.isVisible;\n }\n /**\n * @name onHide\n */\n onHide() {\n return this.dropdown.onHide;\n }\n /**\n * @name onItemClicked\n */\n onItemClicked() {\n return this.dropdown.onItemClicked;\n }\n /**\n * @name selectedItem\n */\n get selectedItem() {\n return this.dropdown.menu.dropdownState.dropdownState.selectedItem;\n }\n /**\n * @name state\n */\n get state() {\n return this.dropdown.menu.dropdownState;\n }\n /**\n * @name hide\n */\n hide() {\n this.resetItems();\n this.dropdown.hide();\n }\n /**\n * @name scrollListener\n */\n scrollListener() {\n if (!this.isVisible || !this.dynamicUpdate) {\n return;\n }\n this.updatePosition();\n }\n /**\n * @name onWindowBlur\n */\n onWindowBlur() {\n this.dropdown.hide();\n }\n /**\n * @name getFormValue\n */\n getFormValue() {\n const formValue = this.tagInput.formValue;\n return formValue ? formValue.toString().trim() : '';\n }\n /**\n * @name calculatePosition\n */\n calculatePosition() {\n return this.tagInput.inputForm.getElementPosition();\n }\n /**\n * @name createTagModel\n * @param item\n */\n createTagModel(item) {\n const display = typeof item.value === 'string' ? item.value : item.value[this.displayBy];\n const value = typeof item.value === 'string' ? item.value : item.value[this.identifyBy];\n return {\n ...item.value,\n [this.tagInput.displayBy]: display,\n [this.tagInput.identifyBy]: value\n };\n }\n /**\n *\n * @param value {string}\n */\n getMatchingItems(value) {\n if (!value && !this.showDropdownIfEmpty) {\n return [];\n }\n const dupesAllowed = this.tagInput.allowDupes;\n return this.autocompleteItems.filter((item) => {\n const hasValue = dupesAllowed\n ? false\n : this.tagInput.tags.some(tag => {\n const identifyBy = this.tagInput.identifyBy;\n const model = typeof tag.model === 'string' ? tag.model : tag.model[identifyBy];\n return model === item[this.identifyBy];\n });\n return this.matchingFn(value, item) && hasValue === false;\n });\n }\n /**\n * @name setItems\n */\n setItems(items) {\n this.items = items.slice(0, this.limitItemsTo || items.length);\n }\n /**\n * @name populateItems\n * @param data\n */\n populateItems(data) {\n this.autocompleteItems = data.map(item => {\n return typeof item === 'string'\n ? {\n [this.displayBy]: item,\n [this.identifyBy]: item\n }\n : item;\n });\n return this;\n }\n /**\n * @name setLoadingState\n * @param state\n */\n setLoadingState(state) {\n this.tagInput.isLoading = state;\n return this;\n }\n}\nTagInputDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputDropdown, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });\nTagInputDropdown.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagInputDropdown, selector: \"tag-input-dropdown\", inputs: { offset: \"offset\", focusFirstElement: \"focusFirstElement\", showDropdownIfEmpty: \"showDropdownIfEmpty\", autocompleteObservable: \"autocompleteObservable\", minimumTextLength: \"minimumTextLength\", limitItemsTo: \"limitItemsTo\", displayBy: \"displayBy\", identifyBy: \"identifyBy\", matchingFn: \"matchingFn\", appendToBody: \"appendToBody\", keepOpen: \"keepOpen\", dynamicUpdate: \"dynamicUpdate\", zIndex: \"zIndex\", autocompleteItems: \"autocompleteItems\" }, host: { listeners: { \"window:scroll\": \"scrollListener()\", \"window:blur\": \"onWindowBlur()\" } }, queries: [{ propertyName: \"templates\", predicate: TemplateRef }], viewQueries: [{ propertyName: \"dropdown\", first: true, predicate: Ng2Dropdown, descendants: true }], ngImport: i0, template: \"\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n\\n\", components: [{ type: i1$1.Ng2Dropdown, selector: \"ng2-dropdown\", inputs: [\"dynamicUpdate\"], outputs: [\"onItemClicked\", \"onItemSelected\", \"onShow\", \"onHide\"] }, { type: i1$1.Ng2DropdownMenu, selector: \"ng2-dropdown-menu\", inputs: [\"width\", \"focusFirstElement\", \"offset\", \"appendToBody\", \"zIndex\"] }, { type: i1$1.Ng2MenuItem, selector: \"ng2-menu-item\", inputs: [\"preventClose\", \"value\"] }], directives: [{ type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i2.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i2.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], pipes: { \"highlight\": HighlightPipe } });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputDropdown, decorators: [{\n type: Component,\n args: [{ selector: 'tag-input-dropdown', template: \"\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { dropdown: [{\n type: ViewChild,\n args: [Ng2Dropdown]\n }], templates: [{\n type: ContentChildren,\n args: [TemplateRef]\n }], offset: [{\n type: Input\n }], focusFirstElement: [{\n type: Input\n }], showDropdownIfEmpty: [{\n type: Input\n }], autocompleteObservable: [{\n type: Input\n }], minimumTextLength: [{\n type: Input\n }], limitItemsTo: [{\n type: Input\n }], displayBy: [{\n type: Input\n }], identifyBy: [{\n type: Input\n }], matchingFn: [{\n type: Input\n }], appendToBody: [{\n type: Input\n }], keepOpen: [{\n type: Input\n }], dynamicUpdate: [{\n type: Input\n }], zIndex: [{\n type: Input\n }], autocompleteItems: [{\n type: Input\n }], scrollListener: [{\n type: HostListener,\n args: ['window:scroll']\n }], onWindowBlur: [{\n type: HostListener,\n args: ['window:blur']\n }] } });\n\n// angular\nconst CUSTOM_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInputComponent),\n multi: true\n};\nclass TagInputComponent extends TagInputAccessor {\n constructor(renderer, dragProvider) {\n super();\n this.renderer = renderer;\n this.dragProvider = dragProvider;\n /**\n * @name separatorKeys\n * @desc keyboard keys with which a user can separate items\n */\n this.separatorKeys = defaults.tagInput.separatorKeys;\n /**\n * @name separatorKeyCodes\n * @desc keyboard key codes with which a user can separate items\n */\n this.separatorKeyCodes = defaults.tagInput.separatorKeyCodes;\n /**\n * @name placeholder\n * @desc the placeholder of the input text\n */\n this.placeholder = defaults.tagInput.placeholder;\n /**\n * @name secondaryPlaceholder\n * @desc placeholder to appear when the input is empty\n */\n this.secondaryPlaceholder = defaults.tagInput.secondaryPlaceholder;\n /**\n * @name maxItems\n * @desc maximum number of items that can be added\n */\n this.maxItems = defaults.tagInput.maxItems;\n /**\n * @name validators\n * @desc array of Validators that are used to validate the tag before it gets appended to the list\n */\n this.validators = defaults.tagInput.validators;\n /**\n * @name asyncValidators\n * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list\n */\n this.asyncValidators = defaults.tagInput.asyncValidators;\n /**\n * - if set to true, it will only possible to add items from the autocomplete\n * @name onlyFromAutocomplete\n */\n this.onlyFromAutocomplete = defaults.tagInput.onlyFromAutocomplete;\n /**\n * @name errorMessages\n */\n this.errorMessages = defaults.tagInput.errorMessages;\n /**\n * @name theme\n */\n this.theme = defaults.tagInput.theme;\n /**\n * @name onTextChangeDebounce\n */\n this.onTextChangeDebounce = defaults.tagInput.onTextChangeDebounce;\n /**\n * - custom id assigned to the input\n * @name id\n */\n this.inputId = defaults.tagInput.inputId;\n /**\n * - custom class assigned to the input\n */\n this.inputClass = defaults.tagInput.inputClass;\n /**\n * - option to clear text input when the form is blurred\n * @name clearOnBlur\n */\n this.clearOnBlur = defaults.tagInput.clearOnBlur;\n /**\n * - hideForm\n * @name clearOnBlur\n */\n this.hideForm = defaults.tagInput.hideForm;\n /**\n * @name addOnBlur\n */\n this.addOnBlur = defaults.tagInput.addOnBlur;\n /**\n * @name addOnPaste\n */\n this.addOnPaste = defaults.tagInput.addOnPaste;\n /**\n * - pattern used with the native method split() to separate patterns in the string pasted\n * @name pasteSplitPattern\n */\n this.pasteSplitPattern = defaults.tagInput.pasteSplitPattern;\n /**\n * @name blinkIfDupe\n */\n this.blinkIfDupe = defaults.tagInput.blinkIfDupe;\n /**\n * @name removable\n */\n this.removable = defaults.tagInput.removable;\n /**\n * @name editable\n */\n this.editable = defaults.tagInput.editable;\n /**\n * @name allowDupes\n */\n this.allowDupes = defaults.tagInput.allowDupes;\n /**\n * @description if set to true, the newly added tags will be added as strings, and not objects\n * @name modelAsStrings\n */\n this.modelAsStrings = defaults.tagInput.modelAsStrings;\n /**\n * @name trimTags\n */\n this.trimTags = defaults.tagInput.trimTags;\n /**\n * @name ripple\n */\n this.ripple = defaults.tagInput.ripple;\n /**\n * @name tabindex\n * @desc pass through the specified tabindex to the input\n */\n this.tabindex = defaults.tagInput.tabIndex;\n /**\n * @name disable\n */\n this.disable = defaults.tagInput.disable;\n /**\n * @name dragZone\n */\n this.dragZone = defaults.tagInput.dragZone;\n /**\n * @name onRemoving\n */\n this.onRemoving = defaults.tagInput.onRemoving;\n /**\n * @name onAdding\n */\n this.onAdding = defaults.tagInput.onAdding;\n /**\n * @name animationDuration\n */\n this.animationDuration = defaults.tagInput.animationDuration;\n /**\n * @name onAdd\n * @desc event emitted when adding a new item\n */\n this.onAdd = new EventEmitter();\n /**\n * @name onRemove\n * @desc event emitted when removing an existing item\n */\n this.onRemove = new EventEmitter();\n /**\n * @name onSelect\n * @desc event emitted when selecting an item\n */\n this.onSelect = new EventEmitter();\n /**\n * @name onFocus\n * @desc event emitted when the input is focused\n */\n this.onFocus = new EventEmitter();\n /**\n * @name onFocus\n * @desc event emitted when the input is blurred\n */\n this.onBlur = new EventEmitter();\n /**\n * @name onTextChange\n * @desc event emitted when the input value changes\n */\n this.onTextChange = new EventEmitter();\n /**\n * - output triggered when text is pasted in the form\n * @name onPaste\n */\n this.onPaste = new EventEmitter();\n /**\n * - output triggered when tag entered is not valid\n * @name onValidationError\n */\n this.onValidationError = new EventEmitter();\n /**\n * - output triggered when tag is edited\n * @name onTagEdited\n */\n this.onTagEdited = new EventEmitter();\n /**\n * @name isLoading\n */\n this.isLoading = false;\n /**\n * @name listeners\n * @desc array of events that get fired using @fireEvents\n */\n this.listeners = {\n [KEYDOWN]: [],\n [KEYUP]: []\n };\n /**\n * @description emitter for the 2-way data binding inputText value\n * @name inputTextChange\n */\n this.inputTextChange = new EventEmitter();\n /**\n * @description private variable to bind get/set\n * @name inputTextValue\n */\n this.inputTextValue = '';\n this.errors = [];\n /**\n * @name appendTag\n * @param tag {TagModel}\n */\n this.appendTag = (tag, index = this.items.length) => {\n const items = this.items;\n const model = this.modelAsStrings ? tag[this.identifyBy] : tag;\n this.items = [\n ...items.slice(0, index),\n model,\n ...items.slice(index, items.length)\n ];\n };\n /**\n * @name createTag\n * @param model\n */\n this.createTag = (model) => {\n const trim = (val, key) => {\n return typeof val === 'string' ? val.trim() : val[key];\n };\n return {\n ...typeof model !== 'string' ? model : {},\n [this.displayBy]: this.trimTags ? trim(model, this.displayBy) : model,\n [this.identifyBy]: this.trimTags ? trim(model, this.identifyBy) : model\n };\n };\n /**\n *\n * @param tag\n * @param isFromAutocomplete\n */\n this.isTagValid = (tag, fromAutocomplete = false) => {\n const selectedItem = this.dropdown ? this.dropdown.selectedItem : undefined;\n const value = this.getItemDisplay(tag).trim();\n if (selectedItem && !fromAutocomplete || !value) {\n return false;\n }\n const dupe = this.findDupe(tag, fromAutocomplete);\n // if so, give a visual cue and return false\n if (!this.allowDupes && dupe && this.blinkIfDupe) {\n const model = this.tags.find(item => {\n return this.getItemValue(item.model) === this.getItemValue(dupe);\n });\n if (model) {\n model.blink();\n }\n }\n const isFromAutocomplete = fromAutocomplete && this.onlyFromAutocomplete;\n const assertions = [\n // 1. there must be no dupe OR dupes are allowed\n !dupe || this.allowDupes,\n // 2. check max items has not been reached\n !this.maxItemsReached,\n // 3. check item comes from autocomplete or onlyFromAutocomplete is false\n ((isFromAutocomplete) || !this.onlyFromAutocomplete)\n ];\n return assertions.filter(Boolean).length === assertions.length;\n };\n /**\n * @name onPasteCallback\n * @param data\n */\n this.onPasteCallback = async (data) => {\n const getText = () => {\n const isIE = Boolean(window.clipboardData);\n const clipboardData = isIE ? (window.clipboardData) : data.clipboardData;\n const type = isIE ? 'Text' : 'text/plain';\n return clipboardData === null ? '' : clipboardData.getData(type) || '';\n };\n const text = getText();\n const requests = text\n .split(this.pasteSplitPattern)\n .map(item => {\n const tag = this.createTag(item);\n this.setInputValue(tag[this.displayBy]);\n return this.onAddingRequested(false, tag);\n });\n const resetInput = () => setTimeout(() => this.setInputValue(''), 50);\n Promise.all(requests).then(() => {\n this.onPaste.emit(text);\n resetInput();\n })\n .catch(resetInput);\n };\n }\n /**\n * @name inputText\n */\n get inputText() {\n return this.inputTextValue;\n }\n /**\n * @name inputText\n * @param text\n */\n set inputText(text) {\n this.inputTextValue = text;\n this.inputTextChange.emit(text);\n }\n /**\n * @desc removes the tab index if it is set - it will be passed through to the input\n * @name tabindexAttr\n */\n get tabindexAttr() {\n return this.tabindex !== '' ? '-1' : '';\n }\n /**\n * @name ngAfterViewInit\n */\n ngAfterViewInit() {\n // set up listeners\n this.setUpKeypressListeners();\n this.setupSeparatorKeysListener();\n this.setUpInputKeydownListeners();\n if (this.onTextChange.observers.length) {\n this.setUpTextChangeSubscriber();\n }\n // if clear on blur is set to true, subscribe to the event and clear the text's form\n if (this.clearOnBlur || this.addOnBlur) {\n this.setUpOnBlurSubscriber();\n }\n // if addOnPaste is set to true, register the handler and add items\n if (this.addOnPaste) {\n this.setUpOnPasteListener();\n }\n const statusChanges$ = this.inputForm.form.statusChanges;\n statusChanges$.pipe(filter$1((status) => status !== 'PENDING')).subscribe(() => {\n this.errors = this.inputForm.getErrorMessages(this.errorMessages);\n });\n this.isProgressBarVisible$ = statusChanges$.pipe(map((status) => {\n return status === 'PENDING' || this.isLoading;\n }));\n // if hideForm is set to true, remove the input\n if (this.hideForm) {\n this.inputForm.destroy();\n }\n }\n /**\n * @name ngOnInit\n */\n ngOnInit() {\n // if the number of items specified in the model is > of the value of maxItems\n // degrade gracefully and let the max number of items to be the number of items in the model\n // though, warn the user.\n const hasReachedMaxItems = this.maxItems !== undefined &&\n this.items &&\n this.items.length > this.maxItems;\n if (hasReachedMaxItems) {\n this.maxItems = this.items.length;\n console.warn(MAX_ITEMS_WARNING);\n }\n // Setting editable to false to fix problem with tags in IE still being editable when\n // onlyFromAutocomplete is true\n this.editable = this.onlyFromAutocomplete ? false : this.editable;\n this.setAnimationMetadata();\n }\n /**\n * @name onRemoveRequested\n * @param tag\n * @param index\n */\n onRemoveRequested(tag, index) {\n return new Promise(resolve => {\n const subscribeFn = (model) => {\n this.removeItem(model, index);\n resolve(tag);\n };\n this.onRemoving ?\n this.onRemoving(tag)\n .pipe(first$1())\n .subscribe(subscribeFn) : subscribeFn(tag);\n });\n }\n /**\n * @name onAddingRequested\n * @param fromAutocomplete {boolean}\n * @param tag {TagModel}\n * @param index? {number}\n * @param giveupFocus? {boolean}\n */\n onAddingRequested(fromAutocomplete, tag, index, giveupFocus) {\n return new Promise((resolve, reject) => {\n const subscribeFn = (model) => {\n return this\n .addItem(fromAutocomplete, model, index, giveupFocus)\n .then(resolve)\n .catch(reject);\n };\n return this.onAdding ?\n this.onAdding(tag)\n .pipe(first$1())\n .subscribe(subscribeFn, reject) : subscribeFn(tag);\n });\n }\n /**\n * @name selectItem\n * @desc selects item passed as parameter as the selected tag\n * @param item\n * @param emit\n */\n selectItem(item, emit = true) {\n const isReadonly = item && typeof item !== 'string' && item.readonly;\n if (isReadonly || this.selectedTag === item) {\n return;\n }\n this.selectedTag = item;\n if (emit) {\n this.onSelect.emit(item);\n }\n }\n /**\n * @name fireEvents\n * @desc goes through the list of the events for a given eventName, and fires each of them\n * @param eventName\n * @param $event\n */\n fireEvents(eventName, $event) {\n this.listeners[eventName].forEach(listener => listener.call(this, $event));\n }\n /**\n * @name handleKeydown\n * @desc handles action when the user hits a keyboard key\n * @param data\n */\n handleKeydown(data) {\n const event = data.event;\n const key = event.keyCode || event.which;\n const shiftKey = event.shiftKey || false;\n switch (KEY_PRESS_ACTIONS[key]) {\n case ACTIONS_KEYS.DELETE:\n if (this.selectedTag && this.removable) {\n const index = this.items.indexOf(this.selectedTag);\n this.onRemoveRequested(this.selectedTag, index);\n }\n break;\n case ACTIONS_KEYS.SWITCH_PREV:\n this.moveToTag(data.model, PREV);\n break;\n case ACTIONS_KEYS.SWITCH_NEXT:\n this.moveToTag(data.model, NEXT);\n break;\n case ACTIONS_KEYS.TAB:\n if (shiftKey) {\n if (this.isFirstTag(data.model)) {\n return;\n }\n this.moveToTag(data.model, PREV);\n }\n else {\n if (this.isLastTag(data.model) && (this.disable || this.maxItemsReached)) {\n return;\n }\n this.moveToTag(data.model, NEXT);\n }\n break;\n default:\n return;\n }\n // prevent default behaviour\n event.preventDefault();\n }\n async onFormSubmit() {\n try {\n await this.onAddingRequested(false, this.formValue);\n }\n catch {\n return;\n }\n }\n /**\n * @name setInputValue\n * @param value\n */\n setInputValue(value, emitEvent = true) {\n const control = this.getControl();\n // update form value with the transformed item\n control.setValue(value, { emitEvent });\n }\n /**\n * @name getControl\n */\n getControl() {\n return this.inputForm.value;\n }\n /**\n * @name focus\n * @param applyFocus\n * @param displayAutocomplete\n */\n focus(applyFocus = false, displayAutocomplete = false) {\n if (this.dragProvider.getState('dragging')) {\n return;\n }\n this.selectItem(undefined, false);\n if (applyFocus) {\n this.inputForm.focus();\n this.onFocus.emit(this.formValue);\n }\n }\n /**\n * @name blur\n */\n blur() {\n this.onTouched();\n this.onBlur.emit(this.formValue);\n }\n /**\n * @name hasErrors\n */\n hasErrors() {\n return !!this.inputForm && this.inputForm.hasErrors();\n }\n /**\n * @name isInputFocused\n */\n isInputFocused() {\n return !!this.inputForm && this.inputForm.isInputFocused();\n }\n /**\n * - this is the one way I found to tell if the template has been passed and it is not\n * the template for the menu item\n * @name hasCustomTemplate\n */\n hasCustomTemplate() {\n const template = this.templates ? this.templates.first : undefined;\n const menuTemplate = this.dropdown && this.dropdown.templates ?\n this.dropdown.templates.first : undefined;\n return Boolean(template && template !== menuTemplate);\n }\n /**\n * @name maxItemsReached\n */\n get maxItemsReached() {\n return this.maxItems !== undefined &&\n this.items.length >= this.maxItems;\n }\n /**\n * @name formValue\n */\n get formValue() {\n const form = this.inputForm.value;\n return form ? form.value : '';\n }\n /**3\n * @name onDragStarted\n * @param event\n * @param index\n */\n onDragStarted(event, tag, index) {\n event.stopPropagation();\n const item = { zone: this.dragZone, tag, index };\n this.dragProvider.setSender(this);\n this.dragProvider.setDraggedItem(event, item);\n this.dragProvider.setState({ dragging: true, index });\n }\n /**\n * @name onDragOver\n * @param event\n */\n onDragOver(event, index) {\n this.dragProvider.setState({ dropping: true });\n this.dragProvider.setReceiver(this);\n event.preventDefault();\n }\n /**\n * @name onTagDropped\n * @param event\n * @param index\n */\n onTagDropped(event, index) {\n const item = this.dragProvider.getDraggedItem(event);\n if (!item || item.zone !== this.dragZone) {\n return;\n }\n this.dragProvider.onTagDropped(item.tag, item.index, index);\n event.preventDefault();\n event.stopPropagation();\n }\n /**\n * @name isDropping\n */\n isDropping() {\n const isReceiver = this.dragProvider.receiver === this;\n const isDropping = this.dragProvider.getState('dropping');\n return Boolean(isReceiver && isDropping);\n }\n /**\n * @name onTagBlurred\n * @param changedElement {TagModel}\n * @param index {number}\n */\n onTagBlurred(changedElement, index) {\n this.items[index] = changedElement;\n this.blur();\n }\n /**\n * @name trackBy\n * @param items\n */\n trackBy(index, item) {\n return item[this.identifyBy];\n }\n /**\n * @name updateEditedTag\n * @param tag\n */\n updateEditedTag(tag) {\n this.onTagEdited.emit(tag);\n }\n /**\n * @name moveToTag\n * @param item\n * @param direction\n */\n moveToTag(item, direction) {\n const isLast = this.isLastTag(item);\n const isFirst = this.isFirstTag(item);\n const stopSwitch = (direction === NEXT && isLast) ||\n (direction === PREV && isFirst);\n if (stopSwitch) {\n this.focus(true);\n return;\n }\n const offset = direction === NEXT ? 1 : -1;\n const index = this.getTagIndex(item) + offset;\n const tag = this.getTagAtIndex(index);\n return tag.select.call(tag);\n }\n /**\n * @name isFirstTag\n * @param item {TagModel}\n */\n isFirstTag(item) {\n return this.tags.first.model === item;\n }\n /**\n * @name isLastTag\n * @param item {TagModel}\n */\n isLastTag(item) {\n return this.tags.last.model === item;\n }\n /**\n * @name getTagIndex\n * @param item\n */\n getTagIndex(item) {\n const tags = this.tags.toArray();\n return tags.findIndex(tag => tag.model === item);\n }\n /**\n * @name getTagAtIndex\n * @param index\n */\n getTagAtIndex(index) {\n const tags = this.tags.toArray();\n return tags[index];\n }\n /**\n * @name removeItem\n * @desc removes an item from the array of the model\n * @param tag {TagModel}\n * @param index {number}\n */\n removeItem(tag, index) {\n this.items = this.getItemsWithout(index);\n // if the removed tag was selected, set it as undefined\n if (this.selectedTag === tag) {\n this.selectItem(undefined, false);\n }\n // focus input\n this.focus(true, false);\n // emit remove event\n this.onRemove.emit(tag);\n }\n /**\n * @name addItem\n * @desc adds the current text model to the items array\n * @param fromAutocomplete {boolean}\n * @param item {TagModel}\n * @param index? {number}\n * @param giveupFocus? {boolean}\n */\n addItem(fromAutocomplete = false, item, index, giveupFocus) {\n const display = this.getItemDisplay(item);\n const tag = this.createTag(item);\n if (fromAutocomplete) {\n this.setInputValue(this.getItemValue(item, true));\n }\n return new Promise((resolve, reject) => {\n /**\n * @name reset\n */\n const reset = () => {\n // reset control and focus input\n this.setInputValue('');\n if (giveupFocus) {\n this.focus(false, false);\n }\n else {\n // focus input\n this.focus(true, false);\n }\n resolve(display);\n };\n const appendItem = () => {\n this.appendTag(tag, index);\n // emit event\n this.onAdd.emit(tag);\n if (!this.dropdown) {\n return;\n }\n this.dropdown.hide();\n if (this.dropdown.showDropdownIfEmpty) {\n this.dropdown.show();\n }\n };\n const status = this.inputForm.form.status;\n const isTagValid = this.isTagValid(tag, fromAutocomplete);\n const onValidationError = () => {\n this.onValidationError.emit(tag);\n return reject();\n };\n if (status === 'VALID' && isTagValid) {\n appendItem();\n return reset();\n }\n if (status === 'INVALID' || !isTagValid) {\n reset();\n return onValidationError();\n }\n if (status === 'PENDING') {\n const statusUpdate$ = this.inputForm.form.statusChanges;\n return statusUpdate$\n .pipe(filter$1(statusUpdate => statusUpdate !== 'PENDING'), first$1())\n .subscribe((statusUpdate) => {\n if (statusUpdate === 'VALID' && isTagValid) {\n appendItem();\n return reset();\n }\n else {\n reset();\n return onValidationError();\n }\n });\n }\n });\n }\n /**\n * @name setupSeparatorKeysListener\n */\n setupSeparatorKeysListener() {\n const useSeparatorKeys = this.separatorKeyCodes.length > 0 || this.separatorKeys.length > 0;\n const listener = ($event) => {\n const hasKeyCode = this.separatorKeyCodes.indexOf($event.keyCode) >= 0;\n const hasKey = this.separatorKeys.indexOf($event.key) >= 0;\n // the keyCode of keydown event is 229 when IME is processing the key event.\n const isIMEProcessing = $event.keyCode === 229;\n if (hasKeyCode || (hasKey && !isIMEProcessing)) {\n $event.preventDefault();\n this.onAddingRequested(false, this.formValue)\n .catch(() => { });\n }\n };\n listen.call(this, KEYDOWN, listener, useSeparatorKeys);\n }\n /**\n * @name setUpKeypressListeners\n */\n setUpKeypressListeners() {\n const listener = ($event) => {\n const isCorrectKey = $event.keyCode === 37 || $event.keyCode === 8;\n if (isCorrectKey &&\n !this.formValue &&\n this.items.length) {\n this.tags.last.select.call(this.tags.last);\n }\n };\n // setting up the keypress listeners\n listen.call(this, KEYDOWN, listener);\n }\n /**\n * @name setUpKeydownListeners\n */\n setUpInputKeydownListeners() {\n this.inputForm.onKeydown.subscribe(event => {\n if (event.key === 'Backspace' && this.formValue.trim() === '') {\n event.preventDefault();\n }\n });\n }\n /**\n * @name setUpOnPasteListener\n */\n setUpOnPasteListener() {\n const input = this.inputForm.input.nativeElement;\n // attach listener to input\n this.renderer.listen(input, 'paste', (event) => {\n this.onPasteCallback(event);\n event.preventDefault();\n return true;\n });\n }\n /**\n * @name setUpTextChangeSubscriber\n */\n setUpTextChangeSubscriber() {\n this.inputForm.form\n .valueChanges\n .pipe(debounceTime$1(this.onTextChangeDebounce))\n .subscribe((value) => {\n this.onTextChange.emit(value.item);\n });\n }\n /**\n * @name setUpOnBlurSubscriber\n */\n setUpOnBlurSubscriber() {\n const filterFn = () => {\n const isVisible = this.dropdown && this.dropdown.isVisible;\n return !isVisible && !!this.formValue;\n };\n this.inputForm\n .onBlur\n .pipe(debounceTime$1(100), filter$1(filterFn))\n .subscribe(() => {\n const reset = () => this.setInputValue('');\n if (this.addOnBlur) {\n return this\n .onAddingRequested(false, this.formValue, undefined, true)\n .then(reset)\n .catch(reset);\n }\n reset();\n });\n }\n /**\n * @name findDupe\n * @param tag\n * @param isFromAutocomplete\n */\n findDupe(tag, isFromAutocomplete) {\n const identifyBy = isFromAutocomplete ? this.dropdown.identifyBy : this.identifyBy;\n const id = tag[identifyBy];\n return this.items.find(item => this.getItemValue(item) === id);\n }\n /**\n * @name setAnimationMetadata\n */\n setAnimationMetadata() {\n this.animationMetadata = {\n value: 'in',\n params: { ...this.animationDuration }\n };\n }\n}\nTagInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputComponent, deps: [{ token: i0.Renderer2 }, { token: DragProvider }], target: i0.ɵɵFactoryTarget.Component });\nTagInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.3\", type: TagInputComponent, selector: \"tag-input\", inputs: { separatorKeys: \"separatorKeys\", separatorKeyCodes: \"separatorKeyCodes\", placeholder: \"placeholder\", secondaryPlaceholder: \"secondaryPlaceholder\", maxItems: \"maxItems\", validators: \"validators\", asyncValidators: \"asyncValidators\", onlyFromAutocomplete: \"onlyFromAutocomplete\", errorMessages: \"errorMessages\", theme: \"theme\", onTextChangeDebounce: \"onTextChangeDebounce\", inputId: \"inputId\", inputClass: \"inputClass\", clearOnBlur: \"clearOnBlur\", hideForm: \"hideForm\", addOnBlur: \"addOnBlur\", addOnPaste: \"addOnPaste\", pasteSplitPattern: \"pasteSplitPattern\", blinkIfDupe: \"blinkIfDupe\", removable: \"removable\", editable: \"editable\", allowDupes: \"allowDupes\", modelAsStrings: \"modelAsStrings\", trimTags: \"trimTags\", inputText: \"inputText\", ripple: \"ripple\", tabindex: \"tabindex\", disable: \"disable\", dragZone: \"dragZone\", onRemoving: \"onRemoving\", onAdding: \"onAdding\", animationDuration: \"animationDuration\" }, outputs: { onAdd: \"onAdd\", onRemove: \"onRemove\", onSelect: \"onSelect\", onFocus: \"onFocus\", onBlur: \"onBlur\", onTextChange: \"onTextChange\", onPaste: \"onPaste\", onValidationError: \"onValidationError\", onTagEdited: \"onTagEdited\", inputTextChange: \"inputTextChange\" }, host: { properties: { \"attr.tabindex\": \"this.tabindexAttr\" } }, providers: [CUSTOM_ACCESSOR], queries: [{ propertyName: \"dropdown\", first: true, predicate: TagInputDropdown, descendants: true }, { propertyName: \"templates\", predicate: TemplateRef }], viewQueries: [{ propertyName: \"inputForm\", first: true, predicate: TagInputForm, descendants: true }, { propertyName: \"tags\", predicate: TagComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n\\n \\n
    \\n \\n \\n\\n \\n \\n
    \\n\\n \\n\\n\\n\\n\\n \\n {{ error }}\\n

    \\n\\n\\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.progress-bar,.progress-bar:before{height:2px;width:100%;margin:0}.progress-bar{background-color:#2196f3;display:flex;position:absolute;bottom:0}.progress-bar:before{background-color:#82c4f8;content:\\\"\\\";-webkit-animation:running-progress 2s cubic-bezier(.4,0,.2,1) infinite;animation:running-progress 2s cubic-bezier(.4,0,.2,1) infinite}@-webkit-keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}to{margin-left:100%;margin-right:0}}@keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}to{margin-left:100%;margin-right:0}}tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:Roboto,Helvetica Neue,sans-serif;font-weight:400;font-size:1em;letter-spacing:.05rem;color:#444;border-radius:16px;transition:all .3s;margin:.1rem .3rem .1rem 0;padding:.08rem .45rem;height:32px;line-height:34px;background:#efefef;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}tag:not(.readonly):not(.tag--editing):focus{background:#2196F3;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(.readonly):not(.tag--editing):active{background:#0d8aee;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#e2e2e2;color:#000;color:initial;box-shadow:0 2px 3px 1px #d4d1d1}tag.readonly{cursor:default}tag.readonly:focus,tag:focus{outline:0}tag.tag--editing{background-color:#fff;border:1px solid #ccc;cursor:text}.minimal tag{display:flex;flex-direction:row;flex-wrap:wrap;border-radius:0;background:#f9f9f9;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.minimal tag:not(.readonly):not(.tag--editing):focus{background:#d0d0d0;color:#000;color:initial}.minimal tag:not(.readonly):not(.tag--editing):active{background:#d0d0d0;color:#000;color:initial}.minimal tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#ececec}.minimal tag.readonly{cursor:default}.minimal tag.readonly:focus,.minimal tag:focus{outline:0}.minimal tag.tag--editing{cursor:text}.dark tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:3px;background:#444;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.dark tag:not(.readonly):not(.tag--editing):focus{background:#efefef;color:#444}.dark tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#2b2b2b;color:#f9f9f9}.dark tag.readonly{cursor:default}.dark tag.readonly:focus,.dark tag:focus{outline:0}.dark tag.tag--editing{cursor:text}.bootstrap tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:.25rem;background:#0275d8;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.bootstrap tag:not(.readonly):not(.tag--editing):focus{background:#025aa5}.bootstrap tag:not(.readonly):not(.tag--editing):active{background:#025aa5}.bootstrap tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#0267bf;color:#f9f9f9}.bootstrap tag.readonly{cursor:default}.bootstrap tag.readonly:focus,.bootstrap tag:focus{outline:0}.bootstrap tag.tag--editing{cursor:text}.bootstrap3-info tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:inherit;font-weight:400;font-size:95%;color:#fff;border-radius:.25em;background:#5bc0de;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative;padding:.25em .6em;text-align:center;white-space:nowrap}.bootstrap3-info tag:not(.readonly):not(.tag--editing):focus{background:#28a1c5}.bootstrap3-info tag:not(.readonly):not(.tag--editing):active{background:#28a1c5}.bootstrap3-info tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#46b8da;color:#fff}.bootstrap3-info tag.readonly{cursor:default}.bootstrap3-info tag.readonly:focus,.bootstrap3-info tag:focus{outline:0}.bootstrap3-info tag.tag--editing{cursor:text}:host{display:block}\\n\"], components: [{ type: TagComponent, selector: \"tag\", inputs: [\"model\", \"removable\", \"editable\", \"template\", \"displayBy\", \"identifyBy\", \"index\", \"hasRipple\", \"disabled\", \"canAddTag\"], outputs: [\"onSelect\", \"onRemove\", \"onBlur\", \"onKeyDown\", \"onTagEdited\"] }, { type: TagInputForm, selector: \"tag-input-form\", inputs: [\"placeholder\", \"validators\", \"asyncValidators\", \"inputId\", \"inputClass\", \"tabindex\", \"disabled\", \"inputText\"], outputs: [\"onSubmit\", \"onBlur\", \"onFocus\", \"onKeyup\", \"onKeydown\", \"inputTextChange\"] }], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], pipes: { \"async\": i2.AsyncPipe }, animations: animations });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'tag-input', providers: [CUSTOM_ACCESSOR], animations: animations, template: \"\\n\\n \\n
    \\n \\n \\n\\n \\n \\n
    \\n\\n \\n\\n\\n\\n\\n \\n {{ error }}\\n

    \\n\\n\\n\", styles: [\".dark tag:focus{box-shadow:0 0 0 1px #323232}.ng2-tag-input.bootstrap3-info{background-color:#fff;display:inline-block;color:#555;vertical-align:middle;max-width:100%;height:42px;line-height:44px}.ng2-tag-input.bootstrap3-info input{border:none;box-shadow:none;outline:none;background-color:transparent;padding:0 6px;margin:0;width:auto;max-width:inherit}.ng2-tag-input.bootstrap3-info .form-control input::-moz-placeholder{color:#777;opacity:1}.ng2-tag-input.bootstrap3-info .form-control input:-ms-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info .form-control input::-webkit-input-placeholder{color:#777}.ng2-tag-input.bootstrap3-info input:focus{border:none;box-shadow:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--focused{box-shadow:inset 0 1px 1px #0006;border:1px solid #ccc}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{box-shadow:inset 0 1px 1px #d9534f}.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;transition:all .25s;padding:.25rem 0;min-height:32px;cursor:text;border-bottom:2px solid #efefef}.ng2-tag-input:focus{outline:0}.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #2196F3}.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #f44336}.ng2-tag-input.ng2-tag-input--loading{border:none}.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.ng2-tag-input form{margin:.1em 0}.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.minimal.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:1px solid transparent}.minimal.ng2-tag-input:focus{outline:0}.minimal.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.minimal.ng2-tag-input.ng2-tag-input--loading{border:none}.minimal.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.minimal.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.dark.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #444}.dark.ng2-tag-input:focus{outline:0}.dark.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.dark.ng2-tag-input.ng2-tag-input--loading{border:none}.dark.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.dark.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;cursor:text;border-bottom:2px solid #efefef}.bootstrap.ng2-tag-input:focus{outline:0}.bootstrap.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap.ng2-tag-input.ng2-tag-input--focused{border-bottom:2px solid #0275d8}.bootstrap.ng2-tag-input.ng2-tag-input--invalid{border-bottom:2px solid #d9534f}.bootstrap.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.bootstrap3-info.ng2-tag-input{display:block;flex-direction:row;flex-wrap:wrap;position:relative;padding:4px;cursor:text;box-shadow:inset 0 1px 1px #00000013;border-radius:4px}.bootstrap3-info.ng2-tag-input:focus{outline:0}.bootstrap3-info.ng2-tag-input.ng2-tag-input--dropping{opacity:.7}.bootstrap3-info.ng2-tag-input.ng2-tag-input--invalid{border-bottom:1px solid #d9534f}.bootstrap3-info.ng2-tag-input.ng2-tag-input--loading{border:none}.bootstrap3-info.ng2-tag-input.ng2-tag-input--disabled{opacity:.5;cursor:not-allowed}.bootstrap3-info.ng2-tag-input form{margin:.1em 0}.bootstrap3-info.ng2-tag-input .ng2-tags-container{flex-wrap:wrap;display:flex}.error-message{font-size:.8em;color:#f44336;margin:.5em 0 0}.bootstrap .error-message{color:#d9534f}.progress-bar,.progress-bar:before{height:2px;width:100%;margin:0}.progress-bar{background-color:#2196f3;display:flex;position:absolute;bottom:0}.progress-bar:before{background-color:#82c4f8;content:\\\"\\\";-webkit-animation:running-progress 2s cubic-bezier(.4,0,.2,1) infinite;animation:running-progress 2s cubic-bezier(.4,0,.2,1) infinite}@-webkit-keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}to{margin-left:100%;margin-right:0}}@keyframes running-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0}to{margin-left:100%;margin-right:0}}tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:Roboto,Helvetica Neue,sans-serif;font-weight:400;font-size:1em;letter-spacing:.05rem;color:#444;border-radius:16px;transition:all .3s;margin:.1rem .3rem .1rem 0;padding:.08rem .45rem;height:32px;line-height:34px;background:#efefef;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}tag:not(.readonly):not(.tag--editing):focus{background:#2196F3;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(.readonly):not(.tag--editing):active{background:#0d8aee;color:#fff;box-shadow:0 2px 3px 1px #d4d1d1}tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#e2e2e2;color:#000;color:initial;box-shadow:0 2px 3px 1px #d4d1d1}tag.readonly{cursor:default}tag.readonly:focus,tag:focus{outline:0}tag.tag--editing{background-color:#fff;border:1px solid #ccc;cursor:text}.minimal tag{display:flex;flex-direction:row;flex-wrap:wrap;border-radius:0;background:#f9f9f9;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.minimal tag:not(.readonly):not(.tag--editing):focus{background:#d0d0d0;color:#000;color:initial}.minimal tag:not(.readonly):not(.tag--editing):active{background:#d0d0d0;color:#000;color:initial}.minimal tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#ececec}.minimal tag.readonly{cursor:default}.minimal tag.readonly:focus,.minimal tag:focus{outline:0}.minimal tag.tag--editing{cursor:text}.dark tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:3px;background:#444;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.dark tag:not(.readonly):not(.tag--editing):focus{background:#efefef;color:#444}.dark tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#2b2b2b;color:#f9f9f9}.dark tag.readonly{cursor:default}.dark tag.readonly:focus,.dark tag:focus{outline:0}.dark tag.tag--editing{cursor:text}.bootstrap tag{display:flex;flex-direction:row;flex-wrap:wrap;color:#f9f9f9;border-radius:.25rem;background:#0275d8;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative}.bootstrap tag:not(.readonly):not(.tag--editing):focus{background:#025aa5}.bootstrap tag:not(.readonly):not(.tag--editing):active{background:#025aa5}.bootstrap tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#0267bf;color:#f9f9f9}.bootstrap tag.readonly{cursor:default}.bootstrap tag.readonly:focus,.bootstrap tag:focus{outline:0}.bootstrap tag.tag--editing{cursor:text}.bootstrap3-info tag{display:flex;flex-direction:row;flex-wrap:wrap;font-family:inherit;font-weight:400;font-size:95%;color:#fff;border-radius:.25em;background:#5bc0de;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;outline:0;cursor:pointer;position:relative;padding:.25em .6em;text-align:center;white-space:nowrap}.bootstrap3-info tag:not(.readonly):not(.tag--editing):focus{background:#28a1c5}.bootstrap3-info tag:not(.readonly):not(.tag--editing):active{background:#28a1c5}.bootstrap3-info tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:#46b8da;color:#fff}.bootstrap3-info tag.readonly{cursor:default}.bootstrap3-info tag.readonly:focus,.bootstrap3-info tag:focus{outline:0}.bootstrap3-info tag.tag--editing{cursor:text}:host{display:block}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: DragProvider }]; }, propDecorators: { separatorKeys: [{\n type: Input\n }], separatorKeyCodes: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], secondaryPlaceholder: [{\n type: Input\n }], maxItems: [{\n type: Input\n }], validators: [{\n type: Input\n }], asyncValidators: [{\n type: Input\n }], onlyFromAutocomplete: [{\n type: Input\n }], errorMessages: [{\n type: Input\n }], theme: [{\n type: Input\n }], onTextChangeDebounce: [{\n type: Input\n }], inputId: [{\n type: Input\n }], inputClass: [{\n type: Input\n }], clearOnBlur: [{\n type: Input\n }], hideForm: [{\n type: Input\n }], addOnBlur: [{\n type: Input\n }], addOnPaste: [{\n type: Input\n }], pasteSplitPattern: [{\n type: Input\n }], blinkIfDupe: [{\n type: Input\n }], removable: [{\n type: Input\n }], editable: [{\n type: Input\n }], allowDupes: [{\n type: Input\n }], modelAsStrings: [{\n type: Input\n }], trimTags: [{\n type: Input\n }], inputText: [{\n type: Input\n }], ripple: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], disable: [{\n type: Input\n }], dragZone: [{\n type: Input\n }], onRemoving: [{\n type: Input\n }], onAdding: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], onAdd: [{\n type: Output\n }], onRemove: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onTextChange: [{\n type: Output\n }], onPaste: [{\n type: Output\n }], onValidationError: [{\n type: Output\n }], onTagEdited: [{\n type: Output\n }], dropdown: [{\n type: ContentChild,\n args: [TagInputDropdown]\n }], templates: [{\n type: ContentChildren,\n args: [TemplateRef, { descendants: false }]\n }], inputForm: [{\n type: ViewChild,\n args: [TagInputForm]\n }], tags: [{\n type: ViewChildren,\n args: [TagComponent]\n }], inputTextChange: [{\n type: Output\n }], tabindexAttr: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }] } });\n\nconst optionsProvider = new OptionsProvider();\nclass TagInputModule {\n /**\n * @name withDefaults\n * @param options {Options}\n */\n static withDefaults(options) {\n optionsProvider.setOptions(options);\n }\n}\nTagInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTagInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputModule, declarations: [TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple], imports: [CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule], exports: [TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple] });\nTagInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputModule, providers: [\n DragProvider,\n { provide: COMPOSITION_BUFFER_MODE, useValue: false },\n ], imports: [[\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.3\", ngImport: i0, type: TagInputModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n Ng2DropdownModule\n ],\n declarations: [\n TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple\n ],\n exports: [\n TagInputComponent,\n DeleteIconComponent,\n TagInputForm,\n TagComponent,\n HighlightPipe,\n TagInputDropdown,\n TagRipple\n ],\n providers: [\n DragProvider,\n { provide: COMPOSITION_BUFFER_MODE, useValue: false },\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DeleteIconComponent, HighlightPipe, TagComponent, TagInputComponent, TagInputDropdown, TagInputForm, TagInputModule, TagRipple };\n","import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, inject, Injectable, ComponentFactoryResolver, ApplicationRef, SecurityContext, Injector, Inject, Component, HostBinding, HostListener, makeEnvironmentProviders, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { DOCUMENT, NgIf } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport * as i2 from '@angular/platform-browser';\n\nclass ToastContainerDirective {\n constructor(el) {\n this.el = el;\n }\n getContainerElement() {\n return this.el.nativeElement;\n }\n}\nToastContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nToastContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"15.2.7\", type: ToastContainerDirective, isStandalone: true, selector: \"[toastContainer]\", exportAs: [\"toastContainer\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastContainerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[toastContainer]',\n exportAs: 'toastContainer',\n standalone: true\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal {\n constructor(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n attach(host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nclass BasePortalHost {\n attach(portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n}\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nclass ToastRef {\n constructor(_overlayRef) {\n this._overlayRef = _overlayRef;\n /** Count of duplicates of this toast */\n this.duplicatesCount = 0;\n /** Subject for notifying the user that the toast has finished closing. */\n this._afterClosed = new Subject();\n /** triggered when toast is activated */\n this._activate = new Subject();\n /** notifies the toast that it should close before the timeout */\n this._manualClose = new Subject();\n /** notifies the toast that it should reset the timeouts */\n this._resetTimeout = new Subject();\n /** notifies the toast that it should count a duplicate toast */\n this._countDuplicate = new Subject();\n }\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n manualClosed() {\n return this._manualClose.asObservable();\n }\n timeoutReset() {\n return this._resetTimeout.asObservable();\n }\n countDuplicate() {\n return this._countDuplicate.asObservable();\n }\n /**\n * Close the toast.\n */\n close() {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n isInactive() {\n return this._activate.isStopped;\n }\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate() {\n return this._activate.asObservable();\n }\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout, countDuplicate) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n\n/**\n * Everything a toast needs to launch\n */\nclass ToastPackage {\n constructor(toastId, config, message, title, toastType, toastRef) {\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this._onTap = new Subject();\n this._onAction = new Subject();\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n /** Fired on click */\n triggerTap() {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n onTap() {\n return this._onTap.asObservable();\n }\n /** available for use in custom toast */\n triggerAction(action) {\n this._onAction.next(action);\n }\n onAction() {\n return this._onAction.asObservable();\n }\n}\nconst DefaultNoComponentGlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning',\n },\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing',\n};\nconst TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nclass DomPortalHost extends BasePortalHost {\n constructor(_hostDomElement, _componentFactoryResolver, _appRef) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal(portal, newestOnTop) {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n }\n else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n\n/** Container inside which all toasts will render. */\nclass OverlayContainer {\n constructor() {\n this._document = inject(DOCUMENT);\n }\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body\n * and 'aria-live=\"polite\"'\n */\n _createContainer() {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n container.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: OverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalHost) {\n this._portalHost = _portalHost;\n }\n attach(portal, newestOnTop = true) {\n return this._portalHost.attach(portal, newestOnTop);\n }\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor() {\n this._overlayContainer = inject(OverlayContainer);\n this._componentFactoryResolver = inject(ComponentFactoryResolver);\n this._appRef = inject(ApplicationRef);\n this._document = inject(DOCUMENT);\n // Namespace panes by overlay container\n this._paneElements = new Map();\n }\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n getPaneElement(positionClass = '', overlayContainer) {\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(positionClass, overlayContainer) {\n const pane = this._document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n }\n else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n }\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n _createPortalHost(pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n }\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n _createOverlayRef(pane) {\n return new OverlayRef(this._createPortalHost(pane));\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: Overlay, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: Overlay, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass ToastrService {\n constructor(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.currentlyActive = 0;\n this.toasts = [];\n this.index = 0;\n this.toastrConfig = {\n ...token.default,\n ...token.config,\n };\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = {\n ...token.default.iconClasses,\n ...token.config.iconClasses,\n };\n }\n }\n /** show toast */\n show(message, title, override = {}, type = '') {\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show successful toast */\n success(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n }\n else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate, countDuplicates) {\n const { includeTitleDuplicates } = this.toastrConfig;\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n return null;\n }\n /** create a clone of global config and apply individual settings */\n applyConfig(override = {}) {\n return { ...this.toastrConfig, ...override };\n }\n /**\n * Find toast object by id\n */\n _findToast(toastId) {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n }\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n _preBuildNotification(toastType, message, title, config) {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n _buildNotification(toastType, message, title, config) {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(title, message, this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0, this.toastrConfig.countDuplicates);\n if (((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n this.toastrConfig.preventDuplicates &&\n duplicate !== null) {\n return duplicate;\n }\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n /** New injector that contains an instance of `ToastPackage`. */\n const providers = [{ provide: ToastPackage, useValue: toastPackage }];\n const toastInjector = Injector.create({ providers, parent: this._injector });\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, config.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal,\n };\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n this.toasts.push(ins);\n return ins;\n }\n}\nToastrService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrService, deps: [{ token: TOAST_CONFIG }, { token: Overlay }, { token: i0.Injector }, { token: i2.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nToastrService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [TOAST_CONFIG]\n }] }, { type: Overlay }, { type: i0.Injector }, { type: i2.DomSanitizer }, { type: i0.NgZone }]; } });\n\nclass Toast {\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state.value === 'inactive') {\n return 'none';\n }\n return;\n }\n constructor(toastrService, toastPackage, ngZone) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = { ...this.state, value: 'active' };\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.outsideTimeout(() => this.remove(), this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = { ...this.state, value: 'active' };\n this.outsideTimeout(() => this.remove(), this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = { ...this.state, value: 'removed' };\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n tapToast() {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state.value === 'removed') {\n return;\n }\n if (this.options.disableTimeOut !== 'extendedTimeOut') {\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n outsideTimeout(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.timeout = setTimeout(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n outsideInterval(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => (this.intervalId = setInterval(() => this.runInsideAngular(func), timeout)));\n }\n else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n runInsideAngular(func) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n }\n else {\n func();\n }\n }\n}\nToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: Toast, deps: [{ token: ToastrService }, { token: ToastPackage }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.7\", type: Toast, isStandalone: true, selector: \"[toast-component]\", host: { listeners: { \"click\": \"tapToast()\", \"mouseenter\": \"stickAround()\", \"mouseleave\": \"delayedHideToast()\" }, properties: { \"class\": \"this.toastClasses\", \"@flyInOut\": \"this.state\", \"style.display\": \"this.displayStyle\" } }, ngImport: i0, template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}')),\n ]),\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: Toast, decorators: [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `,\n animations: [\n trigger('flyInOut', [\n state('inactive', style({ opacity: 0 })),\n state('active', style({ opacity: 1 })),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}')),\n ]),\n ],\n preserveWhitespaces: false,\n standalone: true,\n imports: [NgIf],\n }]\n }], ctorParameters: function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: i0.NgZone }]; }, propDecorators: { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], state: [{\n type: HostBinding,\n args: ['@flyInOut']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\n\nconst DefaultGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: Toast,\n};\n/**\n * @description\n * Provides the `TOAST_CONFIG` token with the given config.\n *\n * @param config The config to configure toastr.\n * @returns The environment providers.\n *\n * @example\n * ```ts\n * import { provideToastr } from 'ngx-toastr';\n *\n * bootstrap(AppComponent, {\n * providers: [\n * provideToastr({\n * timeOut: 2000,\n * positionClass: 'toast-top-right',\n * }),\n * ],\n * })\n */\nconst provideToastr = (config = {}) => {\n const providers = [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config,\n }\n }\n ];\n return makeEnvironmentProviders(providers);\n};\n\nclass ToastrModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [provideToastr(config)],\n };\n }\n}\nToastrModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastrModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrModule, imports: [Toast], exports: [Toast] });\nToastrModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrModule, imports: [Toast] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [Toast],\n exports: [Toast],\n }]\n }] });\nclass ToastrComponentlessModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastrComponentlessModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrComponentlessModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastrComponentlessModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrComponentlessModule });\nToastrComponentlessModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrComponentlessModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastrComponentlessModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\nclass ToastNoAnimation {\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state === 'inactive') {\n return 'none';\n }\n }\n constructor(toastrService, toastPackage, appRef) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n /** width of progress bar */\n this.width = -1;\n /** a combination of toast type and options.toastClass */\n this.toastClasses = '';\n /** controls animation */\n this.state = 'inactive';\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = 'active';\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(() => this.toastrService.remove(this.toastPackage.toastId));\n }\n tapToast() {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if ((this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut') ||\n this.options.extendedTimeOut === 0 ||\n this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n}\nToastNoAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimation, deps: [{ token: ToastrService }, { token: ToastPackage }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component });\nToastNoAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"15.2.7\", type: ToastNoAnimation, isStandalone: true, selector: \"[toast-component]\", host: { listeners: { \"click\": \"tapToast()\", \"mouseenter\": \"stickAround()\", \"mouseleave\": \"delayedHideToast()\" }, properties: { \"class\": \"this.toastClasses\", \"style.display\": \"this.displayStyle\" } }, ngImport: i0, template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimation, decorators: [{\n type: Component,\n args: [{\n selector: '[toast-component]',\n template: `\n \n
    \n {{ title }} [{{ duplicatesCount + 1 }}]\n
    \n
    \n
    \n
    \n {{ message }}\n
    \n
    \n
    \n
    \n `,\n standalone: true,\n imports: [NgIf]\n }]\n }], ctorParameters: function () { return [{ type: ToastrService }, { type: ToastPackage }, { type: i0.ApplicationRef }]; }, propDecorators: { toastClasses: [{\n type: HostBinding,\n args: ['class']\n }], displayStyle: [{\n type: HostBinding,\n args: ['style.display']\n }], tapToast: [{\n type: HostListener,\n args: ['click']\n }], stickAround: [{\n type: HostListener,\n args: ['mouseenter']\n }], delayedHideToast: [{\n type: HostListener,\n args: ['mouseleave']\n }] } });\nconst DefaultNoAnimationsGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: ToastNoAnimation,\n};\nclass ToastNoAnimationModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\nToastNoAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastNoAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimationModule, imports: [ToastNoAnimation], exports: [ToastNoAnimation] });\nToastNoAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimationModule, imports: [ToastNoAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"15.2.7\", ngImport: i0, type: ToastNoAnimationModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, ComponentPortal, DefaultGlobalConfig, DefaultNoAnimationsGlobalConfig, DefaultNoComponentGlobalConfig, Overlay, OverlayContainer, OverlayRef, TOAST_CONFIG, Toast, ToastContainerDirective, ToastNoAnimation, ToastNoAnimationModule, ToastPackage, ToastRef, ToastrComponentlessModule, ToastrModule, ToastrService, provideToastr };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,754,755,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932]}